Soooo, das Thema ist dann wohl weit genug von Hierarchien und Persistenz weg und hin zu allgemeinen Flamew^C^C^C Diskussionen abgedriftet, dass ich mich mal wieder einklinken kann
Klingt für mich so, als ob Du ständig Deine Vorgehensweise überprüfst und an Dir selber zweifelst (nicht böse gemeint, wirklich!).
Wer das nicht macht, macht IMHO was falsch. Oder wie ich es schonmal gesagt hatte: Programmieren ist schwer. IMMER. Wer meint, Programmieren sei leicht, sollte so sehr versuchen, es
besser zu machen, dass es wieder schwer ist.
Zum allgemeinen Thema "Codequalität" etc. wurde hier schon öfter diskutiert. Ich fand den Artikel aus
http://www.java-forum.org/softwareentwicklung/144463-codequalitaet-funktioniert-genug.html lesenswert. Nicht wirklich etwas neues, aber zumindest mal einige wichtige Punkte auf selbigen gebracht.
Um ein bißchen zu vermitteln: Man kann Code schreiben, der aus vielen Interfaces und Design Patterns besteht, und der trotzdem so grottensch... ist, dass man ihn praktisch nur durch das Drücken einer einzelnen Taste noch "verbessern" kann. Man kann auch ... "hacken", oder, weniger böswillig formuliert: "sehr pragmatisch zielorientiert" arbeiten, und da kann etwas rauskommen, was sich über viele Jahre hinweg bewährt.
Wie leicht das eine passiert oder das andere zu erreichen ist, hängt IMHO sehr stark vom Umfeld und dem Ziel ab. Eine "Standardsoftware" die 100000 Nutzer haben wird und von Fach(IT)-fremden Personen verwendet werden soll, wird sicher anders geschrieben als eine Spezialsoftware die 10 Nutzer hat und bei jedem Nutzer von 10 Experten administriert wird. Und die Frage, ob es um ein TicTacToe-Applet oder eine Atomkraftwerksnotabschaltung ist, spielt vielleicht auch eine Rolle.
Analogien sind so eine Sache, aber ich fand die recht bedenkenswert, die uns auf einer Folie im 1. Semester mal präsentiert wurde:
- Eine Holzhütte kann praktisch jeder bauen. Der eine gut, der andere weniger, die eine ist stabiler, die andere hat keine Fenster... Das ist das, was jeder einzelne zuhause an Programmen schreiben kann.
- Wenn man ein richtiges Haus bauen will, kommt man alleine schon nicht weit: Da braucht's Planung und viele Leute aus verschiedenen Fachgebieten, und wenn das Haus fertig ist, und man DANN erst denkt: "Ach, Strom bräucht' man auch noch" und dann anfängt, Kabel an die Wände zu tackern, dann funktioniert das vielleicht, ist aber nicht das, was man will. Das sind "Business-Applikationen", die man nicht mehr alleine schreibt, und wo man sich vorher schonmal über die Interfaces (aka Steckdosen) Gedanken machen sollte, bevor mal loslegt.
- Das letzte Bild war dann ... etwas, was ich hier mal in einer noch deutlicheren Version poste (weil es genau DAS damals noch gar nicht gab) :
(Zugegeben, der Prof war ein Software-Engineering-Verfechter, aber die Message mag schon stimmen). Was für das Programmiererische Analogon dessen notwendig ist, ist IMHO noch nicht entwickelt worden, aber man kann sich ja ausmalen, wo die Reise hingeht.
Tatsache ist aber, dass einige (und vermutlich mehr, als man denkt) Programme in bezug auf diese Analogie Potjemkin'sche Dörfer sind: Mit offiziellen und für viel Geld ausgearbeiteten Styleguides ist festgelegt, dass das fancy grüne Glühen, das erscheint, wenn man mit der Maus über einen Button fährt, einen Radius von 8.6 Pixeln haben soll, aber wenn man den Button drückt, erscheint der Stacktrace einer NullPointerException auf der Konsole.
[ot]
[ot]
(Also SO OT, dass es schon fast wieder OT ist
: )
Vermutlich geht es um solche Sachen wie "HashMap m = new HashMap()" wo mir dann immer hier im Forum gesagt wird "Map m = new HashMap()" ist besser weil man dann die HashMap problemlos durch was anderes austauschen kann.
Bei privaten Variablen ist das sogar noch der "am wenigsten schlimme" Fall - die sieht man ja sowieso nicht - auch wenn das angedeutete Argument, dass du dich irgendwie darauf verlassen würdest, dass das eine
HashMap ist, befremdlich klingt: Map ist Map.
Aber wenn jemand so ein Wort wie "ArrayList" oder "HashMap" in der Signatur einer public-Methode verwendet, läuft's mir schon immer ein bißchen kalt den Rücken runter... :noe:
[/ot]
[/ot]