(Java) Code Style

Zackorz

Cadet 3rd Year
Registriert
Okt. 2008
Beiträge
33
Ich lerne momentan Java mit Hilfe des Online-Buches "Java ist auch eine Insel".

Ich bin etwas irritiert, wie die Leerzeichen und Leerzeilen gesetzt sind. Denn im Buch ist dies anders als in den Beispieldateien.


Ein Beispiel, wie der Code im "Buch" steht:

Code:
public class smallConversation {
	
	@SuppressWarnings( "resource" )
	public static void main( String[] args ) {
		
		System.out.println( "Hi, wie heisst du? ");
		
		String name = new java.util.Scanner( System.in ) .nextLine();
		
		System.out.printf( "Hallo %s. Wie alt bist du?%n" , name );
		
		int age = new java.util.Scanner( System.in ) .nextInt();
		
		System.out.printf( "Aha, du bist also %s Jahre Alt, das ist die Hälfte von
                %s.%n", age, age *2);
		
		System.out.println( "Sag mal, was ist eigentlich deine 
                Lieblingsfliesskommazahl?" );
		
		double value  = new java.util.Scanner( System.in ) .nextDouble();
		
		System.out.printf( " %s? Aha, meine Lieblingsfliesskommazahl ist %s.%n", 
                value, 

                Math.random() * 1000 );
	}
	
}

Code:
public class SmallConversation {

  @SuppressWarnings( "resource" )
  public static void main( String[] args ) {
    System.out.println( "Moin! Wie heißt denn du?" );
    String name = new java.util.Scanner( System.in ).nextLine();
    System.out.printf( "Hallo %s. Wie alt bist du?%n", name );
  
    int age = new java.util.Scanner( System.in ).nextInt();
    System.out.printf( "Aha, %s Jahre, das ist ja die Hälfte von %s.%n", age, age * 2 );
    System.out.println( "Sag mal, was ist deine Lieblingsfließkommazahl?" );
    
    double value = new java.util.Scanner( System.in ).nextDouble();
    System.out.printf( "%s? Aha, meine ist %s.%n", value, Math.random() * 100000 );
  }
}
 
Zuletzt bearbeitet:
Und wo ist jetzt genau dein Problem!? Was stört dich oder wo bist du dir unsicher, warum es so ist?
 
KillerCow schrieb:
Und wo ist jetzt genau dein Problem!? Was stört dich oder wo bist du dir unsicher, warum es so ist?

Die Leerzeichen und Leerzeilen sind sehr unterschiedlich. Im ersten Text ist zwischen jeder Zeile eine Leerzeile.
Außerdem ist nach jeder Klammer ein Leerzeichen, ausser es kommt das Semicolon für das Zeilenende.

Im zweiten Text sind deutlich weniger Leerzeichen/Zeilen.

Welcher Code-Style ist gängiger/ sollte ich mir aneignen?
 
Dazu schau dir am besten im Internet Beiträge zum Thema "Java Style Guide" oder "Java Code Style" an. Wer weiß, auf welcher Basis der Stil in dem Buch beruht ;)

Entwicklungsumgebungen bieten gerne auch eine Möglichkeit, Quellcode auf Knopfdruck nach einem definierten Schema zu formatieren. Ansonsten gibt es durchaus von Projekt zu Projekt unterschiedliche Absprachen für den Codestil. Letztlich ist es viel wichtiger zu verstehen, warum an einer Stelle z.B. ein Leerzeichen stehen darf oder eben nicht.

Insgesamt sieht der Stil des zweiten von dir geposteten Blocks recht ordentlich aus (wobei ich kein Javaentwickler bin). Der erste Block sieht halt aus wie aus einem Buch... da wird schlicht die Formatierung nicht unbedingt für Code optimiert worden sein.
 
WhiteSpaces sind komplett irrelevant, Du kannst den Code auch komplett in eine Zeile ohne ein Leerzeichen und Zeilenumbruch schreiben, es ist immer noch der gleiche. Allerdings finde ich die Formatierung gewöhnungsbedürftig, dass in den runden Klammern noch jeweils ein Leerzeichen am Anfang und am Ende steht.
 
Die Funktion ist die gleiche, denke nur dass es in der ersten Version einfach nur der Übersichtlichkeit dient.
Beim Ausführen des Codes werden die Leerzeilen und unnötigen Leerzeichen einfach ignoriert, da wird nach anderen Kriterien (z.B. Semikolon) getrennt.

Sehr extremes Beispiel ist z.B JavaScript Minification, da wird gut lesbarer Code gnadenlos zusammengedampft, ist zum Verständnis recht interessant anzusehen. Einfach irgendwo JavaScript-Code suchen, Google bemühen und den vorhandenen Code minimieren lassen.
 
Wenn du eine Entwicklungsumgebung nutzt die standardmäßig Code-Formatierungen automatisch vornehmen kann, dann würde ich diese verwenden. Die haben sinnvolle Defaults für den Code-Stil. Dadurch bekommst du, im Laufe der Zeit, einen Eindruck was guter Code-Stil ist und was nicht.

Ach ja, was Leerzeilen angeht, die werden meistens dabei nicht berücksichtigt.
Nach jeder Zeile Code eine Zeile frei zu lassen ist unüblich (dient wahrscheinlich der Lesbarkeit / Übersicht für den Lernenden).
Leerzeilen sollte man verwenden um logische Blöcke voneinander zu trennen.
 
Zuletzt bearbeitet:
Die Leerzeichen um die Klammern sind in Java eher unüblich, aber wie das mit solchen Dingen ist, wenn es einem gefällt und man niemanden nacheifern muss, kann man nutzen was man möchte. Dem Compiler ist es vollständig egal.

Bei den Leerzeilen ist es ähnlich. Es ist unüblich alle Statements zu trennen. Ich würde dort welche nutzen, wo es Sinn macht, um zusammenhängende Bereiche zu trennen und so das Lesen (und Verstehen) erleichtern. Ähnlich wie man auch einen Text gliedern sollte.

BTW, es gibt mittlerweile jede Menge Tools, die einem das händische Formatieren vollständig abnehmen. Viele bieten die Möglichkeit eigene Vorlieben zu berücksichtigen.
 
Zurück
Oben