- Joined
- Jul 11, 2020
- Messages
- 0
- Reaction score
- 26
- Points
- 0
This Post is written in German. To view it in other languages I recommend https://www.deepl.com/translator .
Da ich hier oft ugly Code gesehen habe, gebe ich hier ein paar Tipps, mit denen Ihr Euren Codingstyle verbessern könnt. Das bezieht sich eigentlich auf Anfänger, also erwartet keine NASA Technology Tipps. Theoretisch ist es keine Totsünde, anders zu programmieren. Aber es gibt bestimmte Regeln, an die man sich halten sollte (wie DIN Regeln in einem Brief).
Fangen wir mit etwas Einfachem an: Sprache
Es es genormt auf Englisch zu programmieren. Englisch ist DIE Informatik Sprache. Jeder, der also etwas im Bereich der Informatik macht, sollte dies auf Englisch machen, damit das, was er macht, auch die meisten verstehen.
Hält mal die Regel ein, wird aus
ein schöneres
Dann gibt es "name conventions". Sie bestimmen, wie ein Name geschrieben wird.
Ich fasse Euch das Grobe zusammen, aber hier könnt Ihr mehr dazu lesen: https://www.geeksforgeeks.org/java-naming-conventions/
Klassennamen und Interfaces: Jeder Buchstabe am anfang jedes inneren Wortes wird groß geschrieben, der Rest klein.
Namen von Methoden: der erste Buchstabe klein, sonst am anfang jedes inneren Wortes groß.
Bei Variabeln gibt es schon mehr Regeln:
normale Variabeln:
- möglichst ein Wort (erster Buchstabe klein)
- bei temporähren Variablen werden in den meisten fällen i, j, k, m, n bei ints genutzt, c, d, e bei chars
konstante Variablen:
- alles groß
- innere Wörter werden mit _ getrennt
Bei Packages wird alles klein geschrieben. Sie sind oft Domains in umgedreht
Wendet man alles auf den Code von oben an, sieht er so aus
Ein weiterer Tipp von mir ist, so wenig Code zu benutzen, dass das Programm noch funktioniert, aber so viel Code zu benutzen, dass man einfach nachvollziehen kann, was der Code macht. Außerdem ist es hilfreich, D, F oder L bei doubles, floats oder longs hinzuzufügen.
Aus
wird
Um an Verständlichkeit zu gewinnen, hilft es, Kommentare hinzuzufügen.
(Das kommt aus java.util.Collections.java L412-L421)
Das letzte, was ich Euch mitgeben möchte, ist: performancereicheres Coden
Das Ziel ist es, so wenig aufwendige Berechnungen durchzuführen wie möglich. Das geht z. B. indem man das Ergebnis von einer Berechnung, die öfter ausgeführt wird, einfach übergibt.
Aus
wird
Das war mein erster Post, ich hoffe er ist nicht ganz so schlecht geworden. Viel Spaß beim Coden.
Edit: Danke an TheFootSees für das Aufmerksammachen eines Fehlers
Da ich hier oft ugly Code gesehen habe, gebe ich hier ein paar Tipps, mit denen Ihr Euren Codingstyle verbessern könnt. Das bezieht sich eigentlich auf Anfänger, also erwartet keine NASA Technology Tipps. Theoretisch ist es keine Totsünde, anders zu programmieren. Aber es gibt bestimmte Regeln, an die man sich halten sollte (wie DIN Regeln in einem Brief).
Fangen wir mit etwas Einfachem an: Sprache
Es es genormt auf Englisch zu programmieren. Englisch ist DIE Informatik Sprache. Jeder, der also etwas im Bereich der Informatik macht, sollte dies auf Englisch machen, damit das, was er macht, auch die meisten verstehen.
Hält mal die Regel ein, wird aus
Code:
public void MachEtwasBesonderes(long Zeit) {
boolean Eins = Math.random() > 0.5;
if(Eins == true){
...
}
}
Code:
public void DoSomethingSpecial(long Time) {
boolean One = Math.random() > 0.5;
if(One == true){
...
}
}
Dann gibt es "name conventions". Sie bestimmen, wie ein Name geschrieben wird.
Ich fasse Euch das Grobe zusammen, aber hier könnt Ihr mehr dazu lesen: https://www.geeksforgeeks.org/java-naming-conventions/
Klassennamen und Interfaces: Jeder Buchstabe am anfang jedes inneren Wortes wird groß geschrieben, der Rest klein.
Code:
interface SampleInterface
class SampleClassName implements SampleInterface
Namen von Methoden: der erste Buchstabe klein, sonst am anfang jedes inneren Wortes groß.
Code:
void doSomethingSpecial();
Bei Variabeln gibt es schon mehr Regeln:
normale Variabeln:
- möglichst ein Wort (erster Buchstabe klein)
- bei temporähren Variablen werden in den meisten fällen i, j, k, m, n bei ints genutzt, c, d, e bei chars
Code:
String name = "Unix";
int year = 1970;
konstante Variablen:
- alles groß
- innere Wörter werden mit _ getrennt
Code:
static final int MCP_VERSION = 910;
static final String MINECRAFT_VERSION = "1.8.0";
Bei Packages wird alles klein geschrieben. Sie sind oft Domains in umgedreht
Code:
package com.name.subpackage;
import net.minecraft.client.Minecraft;
Wendet man alles auf den Code von oben an, sieht er so aus
Code:
public void doSomethingSpecial(long time) {
boolean one = Math.random() > 0.5;
if(one == true){
...
}
}
Ein weiterer Tipp von mir ist, so wenig Code zu benutzen, dass das Programm noch funktioniert, aber so viel Code zu benutzen, dass man einfach nachvollziehen kann, was der Code macht. Außerdem ist es hilfreich, D, F oder L bei doubles, floats oder longs hinzuzufügen.
Aus
Code:
public void doSomethingSpecial(long time) {
boolean rdm = Math.random() > 0.5;
boolean valid = time > 1000;
if(rdm == true){
if(valid == true) {
...
}
}
}
Code:
public void doSomethingSpecial(long time) {
boolean rdm = Math.random() > 0.5D;
boolean valid = time > 1000L;
if(rdm && valid){
...
}
}
Um an Verständlichkeit zu gewinnen, hilft es, Kommentare hinzuzufügen.
Code:
/**
* Reverses the order of the elements in the specified list.<p>
*
* This method runs in linear time.
*
* @param list the list whose elements are to be reversed.
* @throws UnsupportedOperationException if the specified list or
* its list-iterator does not support the <tt>set</tt> operation.
*/
public static void reverse(List<?> list) {
...
Das letzte, was ich Euch mitgeben möchte, ist: performancereicheres Coden
Das Ziel ist es, so wenig aufwendige Berechnungen durchzuführen wie möglich. Das geht z. B. indem man das Ergebnis von einer Berechnung, die öfter ausgeführt wird, einfach übergibt.
Aus
Code:
public void update(long time){
doSomethingSpecial(time);
doOtherSpecialThings(time);
}
public void doSomethingSpecial(long time) {
if(heavyCalculation(time)){
...
}else{
...
}
}
public void doOtherSpecialThings(long time) {
if(heavyCalculation(time)){
...
}else{
...
}
}
Code:
public void update(long time){
boolean calculated = heavyCalculation(time);
doSomethingSpecial(calculated);
doOtherSpecialThings(calculated);
}
public void doSomethingSpecial(boolean calculated) {
if(calculated){
...
}else{
...
}
}
public void doOtherSpecialThings(boolean calculated) {
if(calculated){
...
}else{
...
}
}
Das war mein erster Post, ich hoffe er ist nicht ganz so schlecht geworden. Viel Spaß beim Coden.
Edit: Danke an TheFootSees für das Aufmerksammachen eines Fehlers
Last edited by a moderator: