Umfrage: Java-Experiment

Finde ich auch gut. Aber das ist nun wirklich Platzverschwendung.

P.S. meine Intentition ist tatsächlich mit der Konvention zu brechen. Weil die Konvention ungünstig ist. Was sich nur aus Gewohnheit, Konvention und haben wir schon immer so gemacht begründen lässt, ist nicht wirklich begründet, oder?

Also eigentlich ist meine Intention, dass Leute les- und wartbaren Code schreiben. Nach Vorschrift formatiert ist nich nicht automatisch gut formatiert. Ich bezweifle sogar, dass Stylechecker sinnvoll sind.
Ich hatte da mal eine heftige Diskussion, wo jemand meine sauberen Code(!) abgelehnt hat, weil sein Stylecheck fehlgeschlagen ist. War Einrückung und zusätzliche Leerzeichen, nicht die Klammern. Ich machte ihm dann klar, dass ich in der Lage bin völlig unleserlichen Code zu schreiben, der seinen Stylecheck erfüllt.
Inklusive statt if for-schleifen einzusetzen für völlige Verwirrung.

Irgendwie ist das ein Reizthema. Programmierer zicken fast immer rum, wenn man ihnen sagt, dass sie schöner formatieren sollen. Egal wie jetzt die Klammer sitzen.
Es ist anstrengend, Code zu lesen, der irgendwie reingeklimpert wurde und die Formatierung machte die IDE. Und man erkennt es. Meistens hat der Code dann auch Vermischung von Abstraktionebenen etc. man sieht, dass der Programmierer zwar den Algorithmus wie er gefordert war implementiert hat und auch tut. Aber er hat nicht über das Ende dieser Aufgabe nachgedacht. write&forget.

Das erinnert irgendwie an die Programmierkurse praktisch jeder Hochschule*. Wer das automatisierte Pattern nicht erfüllt liegt falsch.

Aber! Genauso wie mit der deutschen Rechtschreibung, dem Duden und all den anderen Regeln die einem manchmal sinnlos erscheinen (ß, ss, Kommasetzung), sind diese doch trotzdem wichtig um eine einheitliche Kommunikationsbasis zu schaffen. Klar es fängt mit einfachen Klammern an, aber der Typ der von dir gelernt hat macht dann wieder eine einfache Änderung und das geht dann immer so weiter bis wir zig neue Dialekte haben.
Und genauso wie es dich stört, dass eine E-Mail oder Brief nicht sauber geschrieben wurde und kleine Schreibfehler enthält, stört es auch Programmierer.

Diskutieren ja!** Aber bitte nicht andere damit stören. Wenn es viel besser ist, dann geht das ganz von alleine.

Mein Chef hat mich mal zusammengehauen, weil ich in einem Brief an ihn einmal das Wort „Sie“ klein geschrieben habe. In einem ansonsten tadellosen Brief mit mehreren richtig geschriebenen vorangegangenen „Sie“.
Übertrieben? Ja! Grundlos? Nein!

*weil man es heutzutage leider sagen muss: inkl. Universitäten. :roll_eyes:
**wie wir es hier machen

Es geht mir keineswegs um kurzen oder kompakten Code, sondern genau wie dir um lesbaren Code.
Und für mich ist die Einzeilige Variante lesbarer als die mit zusätzlichem Zeilenumbruch.

Das Argument, dass ja jeder weiß, dass else ein Schlüsselwort ist, und ja jeder weiß, dass es zum if gehört, lass ich nicht gelten :wink: Vermutlich die meisten Fehler sind aus einem „jeder weiß das doch“ entstanden…

Ich empfinde ein einzeln stehendes else immer als Bruch und hinderlich beim Lesen, bei } else { ist dagegen direkt klar, wozu es gehört. Wenn die beiden Blöcke so unübersichtlich sind, dass Einrückung und Highlighting nicht reichen, um sie zu unterscheiden, sondern zusätzlich noch ein Zeilenumbruch nötig ist, vielleicht sollte man dann an den Blöcken arbeiten :wink: Un im Zweifel kommt nach dem else eine Leerzeile, im Block, stört mich weniger, da reine Leerzeile.

Du kannst also weder deinen Stylechecker noch deine IDE so einstellen, dass sie deinen Stil unterstützen? :wink:
Das beide sinnlos sind, wenn man sie nicht benutzen kann, ist klar - man muss sich halt schon ein bisschen damit auseinander setzen, dann formatieren die auch so, wie man selbst das gern will.
Mir persönlich ist es deutlich lieber, die IDE macht das automatisch, anstatt per Hand 42 Leerzeichen zu ergänzen, bis Parameter passend aligned sind…

Kann ich so überhaupt nicht nachvollziehen. Ich hab zwar keine 15 Jahre auf dem Buckel, aber ich hab schon genügend Code gesehen der auf längere Methoden setzt. Resultat: Redundanter Code, wiederkehrende Teil-Logik nur jedes mal etwas anders neu implementiert. Tests natürlich keine vorhanden und neue einzuführen ist schwierig. Refactoring ist die Hölle, die z.T. sehr kraut und rüben. Zu anfang mag das ganze ja noch strukturiert sein, aber dann kommen Kollege 1 - 10 und packen Ihre Änderungen dazu. Logische Codeblöcke hattest du dann vielleicht mal gehabt, die sind dann aber weg.

Wenn man aber Sinnvolle Methoden schafft und einige davon auch ggf. in neue Klassen auslagert, dann hab ich damit eine wesentlich bessere Erfahrung gemacht. Vor allem, weil der Code testbar, wiederverwertbar und sicherer vor Kollegen ist.

Und mit einer sinnvollen benahmung hast du auch gleich deine Dokumentation.

if(shoppingCart.canAddArticle(article)) {
    shoppingCart.addArticle(article);
}

Ist doch viel einfacher zu verstehen als wenn du da selber Datenbankzugriffe hinklatscht. Klar, kannst du das mit einzeiler-Kommentaren lösen. Nur hast du damit noch immer:

  • Risiko von Code-redundants
  • Ne Zeile mehr als notwendig
  • Nicht testbaren Code
2 „Gefällt mir“

Ja, man merkt schon an den bisherigen Beiträgen, dass es nur einen Menschen auf der Welt gibt, der alles richtig macht:

Ich!

(Blöd das jeder das denkt…). :wink: Aber mal im Ernst: Man kann da sicher über einige Details streiten. Und ich mache das auch gerne. Tatsächlich bin ich da aber recht „agnostisch“. Habe in den letzten Tagen ein paar hundert KB neuen Code durchgebrowst, und könnte jetzt nicht mit Sicherheit sagen, ob dort die

void falsche() {
    formatierung();
}

oder die

void richtige() 
{
    formatierung();
}

verwendet wird. Was mir deutlich mehr in den Augen brennt, ist, wenn in einer Methodensignatur das Wort ArrayList vorkommt oder so. Man könnte mit der vermeintlichen Platzverschwendung der „richtigen“ Formatierung auch umgekehrt argumentieren: Damit kommt man nicht so leicht in Versuchung, lange (oder tief eingerückte) Methoden zu schreiben :slight_smile:

Ansonsten ein kleiner OCD-Auswuchs von mir: Die Zeile ist natürlich nicht mit 12, sondern mit 19 Leerzeichen eingerückt:

Alles andere wäre Frevel!!!111

Das ist sehr schön. Vor sowas halte ich mich immer zurück - ein “Reformat Code” und das alles ist über den Haufen.
Meine Taktik: Ans Ende der Klasse verschieben, wo das niemand sieht. Wie sagt man so schön “unter den Teppich kehren” und weiter im Business.

Kriege ich dafür auch ein Wikipedia-Eintrag? Der Teppich-Stil?

Üblicherweise verwende ich auch den Auto-Formatter, aber manchmal kann man durch ein “geschicktes” Leerzeichen hier oder da die Lesbarkeit so erhöhen, dass ich eben abwäge…

(Das verlinkte Matrix-Invertier-Beispiel ist natürlich ein Extremfall - der Code ist nicht gedacht dafür, gelesen zu werden, und wohl nur von einer früheren Version von https://github.com/mesa3d/mesa/blob/43d66c8c2d4d3d4dee1309856b6ce6c5393682e5/src/mesa/math/m_matrix.c#L482 portiert - wenn, dann sollte das eher “en block” durch eine Lib ersetzt werden…)

Ich setzte die logischen Blöcke in einer Methode auch optisch von einander ab, und zwar in dem ich 'ne Methodensignatur davor schreibe…