Seite 1 von 1

stil?!

Verfasst: 7. Feb 2007 12:02
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;
	}

Verfasst: 7. Feb 2007 12:46
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.

Verfasst: 7. Feb 2007 13:30
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.

Verfasst: 7. Feb 2007 14:06
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?

Verfasst: 7. Feb 2007 16:06
von Mirlix_
Es wird doch nicht 5 sein, oder?:)

Verfasst: 7. Feb 2007 16:17
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 :>

Verfasst: 7. Feb 2007 16:26
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

Verfasst: 7. Feb 2007 16:41
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.

Verfasst: 7. Feb 2007 18:29
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"

Verfasst: 7. Feb 2007 19:58
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

Verfasst: 7. Feb 2007 20:47
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.

Verfasst: 7. Feb 2007 22:12
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. ;)

Verfasst: 8. Feb 2007 00:50
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.

Verfasst: 8. Feb 2007 11:21
von banshee
ich find programmieren mit text eh unnötig, ich hab jetz schon 'hello world' mit morsecode geschrieben! :)

Verfasst: 8. Feb 2007 11:30
von baerchen
und ich habs mit ner batterie und zwei drähten auf den leiterbahnen zum prozessor geschrieben!!!