stil?!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

stil?!

Beitrag von banshee »

nachdem ich jetzt wieder 5 minuten durch den source code der hausübung gegangen bin und den für mich erstmal "lesetauglich" gemacht hab wollte ich eigentlich nur mal fragen ob das wirklich so der stil is den wir beigebracht kriegen und der für alle folgenden semester beibehalten werden soll

weil wenn ich zb sowas sehe:

Code: Alles auswählen

private IntegerMatrix genSubMatrix(final int jumpOverRow) {
		IntegerMatrix subMatrix = new IntMatrix(
				rowCount - 1, columnsCount - 1);
		for (int row = 0; row < subMatrix.getRows(); row++) {
			for (int col = 0; col < subMatrix.getColumns(); col++) {
				if (row < jumpOverRow) {
					subMatrix.set(row, col, data[row][col + 1]);
				} else {
					subMatrix.set(row, col, data[row + 1][col + 1]);
				}

			}
		}
		return subMatrix;
	}
krieg ich persönlich augenkrebs von. es fängt schon mit der öffnenden klammer hinter einem ausdruck an. es gibt zwar geteilte meinung wo man die klammer setzt aber ich persönlich setz die immer an den anfang der nächsten zeile, sodass jeweils alle paare die zusammengehören untereinandergehören.

aber das is noch das harmloseste...in den hausübungen sind die funktionsparameter teilweise über mehrere zeilen gequetscht, variablen sind irgendwo zwischen funktionen oder exceptions untergetaucht und es sieht einfach nur aus wie ein ungeordneter klumpen...

ich weiß zwar dass jeder da seinen eigenen stil hat aber ich hab schon genug code von andern leuten gesehen (der natürlich immer unterschiedlich aber trotzdem lesbar war) um zu sagen dass dieser ziemlich unübsersichtlich ist.
würde mich nämlich in der klausur mindestens das doppelte der zeit kosten den sinn davon zu verstehen. deshalb frag ich :>

als gegenbeispiel, so hätte ichs gemacht:

Code: Alles auswählen

private IntegerMatrix genSubMatrix(final int jumpOverRow) 
	{
		IntegerMatrix subMatrix = new IntMatrix(rowCount - 1, columnsCount - 1);
		
		for (int row = 0; row < subMatrix.getRows(); row++) 
		{
			for (int col = 0; col < subMatrix.getColumns(); col++) 
			{
				if (row < jumpOverRow) 
					subMatrix.set(row, col, data[row][col + 1]);
				else
					subMatrix.set(row, col, data[row + 1][col + 1]);
			}
		}
		
		return subMatrix;
	}

Benutzeravatar
Red*Star
Kernelcompilierer
Kernelcompilierer
Beiträge: 510
Registriert: 28. Nov 2006 19:40

Beitrag von Red*Star »

Aha, es gibt außer mir also noch andere Ästheten :)

Ich fand einige Templates (vor allem die letzten beiden waren schlimm) allerdings auch ziemlich daneben, muss ich sagen. Sah nicht danach aus, als wenn sich jemand damit Mühe gemacht hätte. Ich persönlich habe auch was gegen das Klammern-ans-Ende-der-Zeile-schreiben, leider macht Eclipse das ja automatisch, wahrscheinlich war es deshalb in den Templates meistens auch so gemacht.

Im allgemeinen muss ich sagen, dass beim Programmieren das Verwenden von Absätzen dazugehört - allzu luftig muss die Formatierung auch nicht sein, aber zumindest so luftig, dass man sieht, was zusammengehört. Donald E. Knuth, der Schöpfer von LaTeX, hat ja seine Buchreihe "The Art of Computer Programming" geschrieben die "Kunst, Programme zu schreiben"... auch wenn ich das für den ingenieurtechnischen Anwendungsfall etwas übertrieben halte, finde ich aber dennoch, dass ein guter Stil einfach mit dazugehört: Dein Gegenbeispiel, Banshee, finde ich z.B. sehr schön formatiert.

mehlvogel
Computerversteher
Computerversteher
Beiträge: 359
Registriert: 4. Mär 2004 14:56
Kontaktdaten:

Beitrag von mehlvogel »

Öffnende Klammern gehören hinter den Ausdruck sowie es sich gehört das Zeilen nach 80 Zeichen umgebrochen werden, genauso wie ich generell einzeilige Codestücke in geschwungene Klammern sollten.

Deswegen finde ich den erstes Beispiel deutlich besser formartiert wie das zweite. Wie du siehst ist "guter Stil" so eine subjektive Frage, das es sich kaum lohnt darüber zu diskutieren.
"Das Problem an Eleganz ist, dass man hart arbeiten muss um sie zu erreichen und eine gute Bildung braucht um sie zu erkennen" -- E. W. Dijkstra

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

Java wird bekanntlich von SUN entwickelt und gepflegt. SUN hat zu java ein "coding style" herausgegeben (zu finden unter http://java.sun.com/docs/codeconv/ )
Der code hält sich soweit ich das sehe an den Coding Style.

ifs sollten außerdem immer geklammert werden .. sonst passieren sehr schnell fehler dieser bauart:

Code: Alles auswählen

int a;
if(....)
   assert irgendwas;
   a = 5;
System.out.println(a);
na was kommt da so raus?

Mirlix_
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 188
Registriert: 3. Mär 2006 14:57

Beitrag von Mirlix_ »

Es wird doch nicht 5 sein, oder?:)

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

also ich weiß nicht wie ihr das anstellt da was zu erkennen. wenn ich nur 1 sekunde lang auf das von mir formatierte stück gucke weiß ich schon grob wieviele parameter übergeben werden, wo if's und schleifen sind, etc.

bei dem andern stück weiß ich nach einer sekunde nochnet mal ob das eine oder 5 funktionen sind.

zum unterbrechen von zeilen. grunsätzlich stimme ich dir da voll zu. aber ich finde das:

Code: Alles auswählen

bla funktion(
int param1, char param 2, String param3, float param4)
wieder wesentlich schlimmer als das:

Code: Alles auswählen

bla funktion(int param 1,
             char param2,
             String param3,
             float param4)
ifs sollten außerdem immer geklammert werden .. sonst passieren sehr schnell fehler dieser bauart
grundsätzlich hast du da natürlich recht. aber es gibt auch funktionen wo noch ein klammerpaar mehr auch eher wieder zur unübersichtlichkeit führt.
außerdem schließe ich diesen fehler durch meine formatierung eigentlich schon so gut wie aus :>

Benutzeravatar
Robert
Ehemalige Fachschaftler
Beiträge: 511
Registriert: 6. Okt 2004 17:38
Wohnort: DA

Beitrag von Robert »

du kannst dir übrigens in eclipse auch ein code-format profil anlegen .. wenn du dann einen fremden quelltext kriegst brauchst du nur einmal kurz auf formatieren drücken und es ist in deinem sinne formatiert ... jedenfalls weite teile davon

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Beitrag von yourmaninamsterdam »

Ich habe, bevor ich mit Java angefangen habe, auch immer die geöffnete geschweifte Klammer in eine neue Zeile gesetzt.
Allerings muss ich sagen, dass das reichlich überflüssig ist.
Seit ich Java schreibe (und ich vermute nach Sun-Konvention) setze ich die Klammer in die gleiche Zeile, wie den Ausdruck, also so

Code: Alles auswählen

public method() {
	// Code hier
}
Man spart sich eine Müllzeile, erkennt an der Lage der geschlossenen Klammer deutlich das Ende der Methode.
Durch das Einrücken des Codes sieht man genau, welcher Code zur Methode gehört.

Analog gilt alles beschriebene auch für if und Schleifen.

baerchen
Computerversteher
Computerversteher
Beiträge: 382
Registriert: 24. Okt 2006 15:42

Beitrag von baerchen »

letztendlich isses geschmackssache wie man formatiert. hauptsache übersichtlich und ned ein klumpen wie in der übungsvorlage

allerdings is die übungsvorlage nicht nur von der formatierung her sondern auch vom programmierstil her ziemlich schlecht.
naja vielleicht is es ja auch absicht und gehört mit zum "fehler suchen"
We can do this the hard way or my way ...which is basically the same thing!

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

yourmaninamsterdam hat geschrieben:Man spart sich eine Müllzeile, erkennt an der Lage der geschlossenen Klammer deutlich das Ende der Methode.
erkennen tut mans, aber ich brauch länger ;)

is aber wahrscheinlich gewöhnungssache. nur die müllzeile is dabei ja wohl das unwichtigste überhaupt :D

dcdead
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 190
Registriert: 11. Nov 2004 21:20

Beitrag von dcdead »

Ich find die Klammern sind eh ne unnötige Erfindung zur Strukturierung von Blöcken. Viel besser ist das Python Konzept, das Einrückungen explizit als Strukturierungselement vorsieht. Das ewige hin und her mit Tabs und Spaces, das manche immer in ihrem Code veranstalten, hat da auch keinen Bestand, da der Interpreter meckert, wenn man beides benutzt.

Andreas T.
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 192
Registriert: 18. Okt 2006 00:18
Wohnort: Darmstadt

Beitrag von Andreas T. »

Ich finde banshees Versionen in den Beispielen ehrlich gesagt deutlich übersichtlicher. Eigentlich programmiere ich in Eclipse sowieso ohne auf die Formatierung zu achten und drücke ab und zu Strg-Shift-F. Das ist dann zwar nicht so übersichtlich, aber es geht deutlich schneller ;)

du kannst dir übrigens in eclipse auch ein code-format profil anlegen .. wenn du dann einen fremden quelltext kriegst brauchst du nur einmal kurz auf formatieren drücken und es ist in deinem sinne formatiert ... jedenfalls weite teile davon
Wäre 'ne Möglichkeit, werde ich mal ausprobieren. ;)

benrub
Mausschubser
Mausschubser
Beiträge: 48
Registriert: 3. Dez 2006 01:26

Beitrag von benrub »

dcdead hat geschrieben:Ich find die Klammern sind eh ne unnötige Erfindung zur Strukturierung von Blöcken. Viel besser ist das Python Konzept, das Einrückungen explizit als Strukturierungselement vorsieht. Das ewige hin und her mit Tabs und Spaces, das manche immer in ihrem Code veranstalten, hat da auch keinen Bestand, da der Interpreter meckert, wenn man beides benutzt.
Ich find auch die Buchstaben sind eh ne unnötige Erfindung zur Strukturierung von Code. Viel besser ist das Whitespace-Konzept, das Einrückungen und Leerzeichen explizit als Codeelement vorsieht. Das ewige hin und her mit Tabs und Spaces, das manche immer in ihrem Code veranstalten, hat auch da keinen Bestand.

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

ich find programmieren mit text eh unnötig, ich hab jetz schon 'hello world' mit morsecode geschrieben! :)

baerchen
Computerversteher
Computerversteher
Beiträge: 382
Registriert: 24. Okt 2006 15:42

Beitrag von baerchen »

und ich habs mit ner batterie und zwei drähten auf den leiterbahnen zum prozessor geschrieben!!!
We can do this the hard way or my way ...which is basically the same thing!

Antworten

Zurück zu „Archiv“