1. Code
  2. JavaScript

Die 20 häufigste Codierungsprobleme für Anfänger

Scroll to top
15 min read

German (Deutsch) translation by Nikol Angelowa (you can also view the original English article)

Unabhängig von unserem aktuellen Kenntnisstand waren wir einmal Anfänger. Klassische Anfängerfehler zu machen ist ganz normal. Heute haben wir verschiedene Autoren von Nettuts+ Mitarbeitern gebeten, sich mit ihrer Liste von Fallstricken und Lösungen in einer Vielzahl von Sprachen einzuschalten.

Lernen Sie aus unseren Fehlern und machen Sie sie nicht!


JavaScript-Tipps

1 - Unnötige DOM-Manipulation

Das DOM ist langsam. Wenn Sie Ihre Interaktion damit einschränken, wird die Leistung Ihres Codes erheblich gesteigert. Betrachten Sie den folgenden (schlechten) Code:

1
// anti-pattern
2
for (var i = 0; i < 100; i++){
3
	var li = $("<li>").html("This is list item #" + (i+1));
4
	$("#someUL").append(li);
5
}

Dieser Code ändert das DOM tatsächlich 100 Mal und erstellt unnötigerweise 100 jQuery-Objekte. 100! Ein korrekterer Ansatz wäre, entweder ein Dokumentfragment zu verwenden oder eine Zeichenfolge zu erstellen, die die 100 <li/> -Elemente enthält, und diesen HTML-Code dann an das enthaltende Element anzuhängen. Auf diese Weise springen Sie insgesamt einmal in das DOM. Hier ist ein Beispiel:

1
var liststring = "";
2
3
for (var i = 100; i > 0; i--){
4
	liststring += "<li>This is list item #" + (99- i);
5
}
6
7
document.getElementById("someUL").innerHTML(liststring);

Wie oben erwähnt, berühren wir mit dieser Technik das DOM nur einmal, was eine Verbesserung darstellt, aber es beruht auch auf der Verkettung von Zeichenfolgen, um eine große Zeichenfolge zu erstellen. Es gibt eine andere Möglichkeit, dies mithilfe von Arrays zu erreichen.

1
var liststring = "<li>"
2
var lis = [];
3
4
for (var i = 100; i > 0; i--){
5
	lis.push("This is list item #" + (99- i));
6
}
7
8
liststring += lis.join("</li><li>") + "</li>";
9
document.getElementById("someUL").innerHTML(liststring);

Wenn Sie große Zeichenfolgen erstellen, ist das Speichern jedes Teils der Zeichenfolge als Element in einem Array-Element und das Aufrufen von join() wohl eleganter als die Verkettung von Zeichenfolgen. Dies ist eine der schnellsten und einfachsten Möglichkeiten, sich wiederholendes HTML in JavaScript zu erstellen, ohne eine Vorlagenbibliothek oder ein Framework zu verwenden.

2 - Inkonsistente Variablen- und Funktionsnamen in JavaScript

Dieses nächste Element ist kein Leistungsproblem, aber äußerst wichtig - insbesondere, wenn Sie an Code arbeiten, an dem auch andere Personen arbeiten. Halten Sie Ihre Bezeichner (Variablen- und Funktionsnamen) konsistent. Betrachten Sie die folgenden Variablen als Beispiel:

1
var foo = "bar";
2
var plant = "green";
3
var car = "red";

Es wäre nicht sinnvoll, eine weitere Variable namens Something hinzuzufügen. Dies führt zu Inkonsistenzen in Ihrem Variablenbenennungsmuster, was dazu führt, dass Ihr Gehirn diese Variable kognitiv als anders oder speziell kennzeichnet. Aus diesem Grund werden Konstanten in den meisten Sprachen traditionell mit Großbuchstaben definiert.

Sie können noch einen Schritt weiter gehen, indem Sie bei der Benennung von Funktionen eine ähnliche Länge, grammatikalische Struktur und Erklärung beibehalten. Betrachten Sie beispielsweise die folgende erfundene Funktion:

1
function subtractFive(number){
2
	return number - 5;
3
}

Die Benennung einer Funktion, die einer bestimmten Zahl fünf hinzufügt, sollte dem hier gezeigten Muster folgen:

1
function addFive(number){
2
	return number + 5;
3
}

Manchmal können Sie eine Funktion benennen, um ihren Rückgabewert anzugeben. Sie können beispielsweise eine Funktion benennen, die eine HTML-Zeichenfolge getTweetHTML() zurückgibt. Sie können dem Namen einer Funktion auch do voranstellen, wenn die Funktion einfach eine Operation ausführt und keinen Wert zurückgibt, z. B.: doFetchTweets().

Konstruktorfunktionen folgen normalerweise der Tradition von Klassen in anderen Sprachen, wobei der erste Buchstabe groß geschrieben wird:

1
function Dog(color){
2
	this.color = color;
3
}

Als allgemeine Faustregel sollten Sie bei der Benennung Ihrer Bezeichner beschreibend sein. Klassifizieren Sie sie zusammen mit anderen ähnlichen Bezeichnern, indem Sie ein lesbares Namensmuster beibehalten, das Hinweise auf die Art des Zwecks einer Variablen oder Funktion bietet.

3 - Verwenden Sie hasOwnProperty() in for...in Loops

Die Arrays von JavaScript sind nicht assoziativ. Der Versuch, sie als solche zu benutzen, wird von der Gemeinschaft verpönt. Objekte hingegen können als Hash-Tabellen behandelt werden, und Sie können die Eigenschaften eines Objekts durchlaufen, indem Sie die for...in-Schleife wie folgt verwenden:

1
for (var prop in someObject) { 
2
    alert(someObject[prop]); // alert's value of property
3
}

Das Problem ist jedoch, dass die for...in-Schleife jede aufzählbare Eigenschaft in der Prototypenkette des Objekts durchläuft. Dies kann problematisch sein, wenn Sie nur die Eigenschaften verwenden möchten, die für das tatsächliche Objekt vorhanden sind.

Sie können dieses Problem mithilfe der Methode hasOwnProperty() lösen. Hier ist ein Beispiel:

1
for (var prop in someObject) {
2
    if (someObject.hasOwnProperty(prop)) {
3
        alert(someObject[prop]); // alert's value of property
4
    }
5
}

Diese Version warnt nur die Werte der Eigenschaften, die sich direkt auf someObject befinden.

4 - Vergleichen von Booleschen Werten

Das Vergleichen von Booleschen Werten in einer Bedingung ist eine Verschwendung von Rechenzeit. Schauen Sie sich das folgende Beispiel an:

1
if (foo == true) {
2
    // do something for true
3
} else {
4
    // do something for false
5
}

Beachten Sie die Bedingung: foo == true. Der Vergleich von foo und true ist nicht erforderlich, da foo bereits ein boolescher Wert ist (oder ein wahrer oder falscher Wert). Anstatt foo zu vergleichen, verwenden Sie es einfach als Bedingung wie folgt:

1
if (foo) {
2
    // do something for true
3
} else {
4
    // do something for false
5
}

Verwenden Sie den logischen NOT-Operator wie unten gezeigt, um auf false zu testen:

1
if (!foo) {
2
    // do something if foo is false
3
} else {
4
    // do something if foo is true
5
}

5 - Ereignisbindung

Ereignisse sind in JavaScript ein kompliziertes Thema. Vorbei sind die Zeiten der Inline-onclick-Ereignishandler (außer in einigen sehr seltenen Fällen von "Begrüßungsseiten"). Verwenden Sie stattdessen Ereignisblasen und Delegierung.

Stellen Sie sich vor, Sie haben ein Raster mit Bildern, die zum Starten eines modalen Leuchtkastenfensters erforderlich sind. Folgendes sollten Sie nicht tun. Hinweis: Wir verwenden hier jQuery, vorausgesetzt, Sie verwenden eine ähnliche Bibliothek. Wenn nicht, gelten die gleichen Prinzipien auch für Vanille-JavaScript.

Der relevante HTML:

1
<div id="grid-container">
2
	<a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
3
	<a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
4
	<a href="someimage.jpg"><img src="someimage-thumb.jpg"></a>
5
	...
6
</div>

Das (schlechte) JavaScript:

1
$('a').on('click', function() {
2
	callLightbox(this);
3
});

In diesem Code wird davon ausgegangen, dass beim Aufrufen des Leuchtkastens ein Ankerelement übergeben wird, das auf das Bild in voller Größe verweist. Anstatt an jedes Ankerelement zu binden, binden Sie stattdessen an das #grid-container-Element.

1
$("#grid-container").on("click", "a", function(event) {
2
	callLightbox(event.target);
3
});

In diesem Code beziehen sich sowohl this als auch event.target auf das Ankerelement. Sie können dieselbe Technik für jedes übergeordnete Element verwenden. Stellen Sie einfach sicher, dass Sie das Element definieren, das das Ziel des Ereignisses sein soll.

6 - Vermeiden Sie ternäre Redundanz

Die Überbeanspruchung ternärer Anweisungen ist sowohl in JavaScript als auch in PHP weit verbreitet.

1
// javascript
2
return foo.toString() !== "" ? true : false;
1
// php

2
return (something()) ? true : false;

Ein Bedingungsausdruck gibt immer einen true oder false Wert zurück, was bedeutet, dass Sie nicht explizit true/false als ternäre Werte hinzufügen müssen. Stattdessen können Sie einfach die Bedingung zurückgeben:

1
// javascript
2
return foo.toString() !== "";
1
// php

2
return something();

PHP-Tipps

7 - Verwenden Sie Ternary, wenn dies angemessen ist

if...else-Anweisungen sind ein zentraler Bestandteil der meisten Sprachen. Aber machen Sie etwas Einfaches, wie das Zuweisen eines Werts zu einer Variablen basierend auf einer Bedingung - nun, sie können Ihren Code verschmutzen. Betrachten Sie den folgenden Code:

1
if ($greeting) 
2
{
3
    $post->message = 'Hello';
4
} 
5
else 
6
{
7
    $post->message = 'Goodbye';
8
}

Dieser Code kann auf eine Zeile reduziert werden, während die Lesbarkeit mithilfe des ternären Operators wie folgt erhalten bleibt:

1
$post->message = $greeting ? 'Hello' : 'Goodbye';

Es ist klar, präzise und bietet Ihnen die Funktionalität, die Sie benötigen.

So nützlich der ternäre Operator auch ist, die wichtigste Richtlinie ist, ihn nicht zu stark zu verwenden! Das Ziel der Codierung besteht nicht darin, Ihre Logik in so wenige Zeilen wie möglich zu beschränken.

8 - Auslösen von Ausnahmen anstelle von Verschachtelung im Inception-Stil

Seien wir ehrlich: Viele Verschachtelungsebenen sind hässlich und schwer zu pflegen / zu lesen. Der folgende Code ist ein relativ vereinfachtes Beispiel, das sich jedoch mit der Zeit erheblich verschlechtert:

1
// anti-pattern

2
$error_message = null;
3
4
if ($this->form_validation->run())
5
{
6
	if ($this->upload->do_upload())
7
	{
8
		$image = $this->upload->get_info();
9
10
		if ( ! $this->image->create_thumbnail($image['file_name'], 300, 150))
11
		{
12
			$error_message = 'There was an error creating the thumbnail.';
13
		}
14
	}
15
	else
16
	{
17
		$error_message = 'There was an error uploading the image.';
18
	}
19
}
20
else
21
{
22
	$error_message = $this->form_validation->error_string();
23
}
24
25
// Show error messages

26
if ($error_message !== null)
27
{
28
	$this->load->view('form', array(
29
		'error' => $error_message,
30
	));
31
}
32
33
// Save the page

34
else
35
{
36
	$some_data['image'] = $image['file_name'];
37
38
	$this->some_model->save($some_data);
39
}

Das ist ein böser Code, aber Sie können ihn drastisch sauberer machen, indem Sie Ausnahmen verwenden, wie zum Beispiel:

1
try
2
{
3
	if ( ! $this->form_validation->run())
4
	{
5
		throw new Exception($this->form_validation->error_string());
6
	}
7
8
	if ( ! $this->upload->do_upload())
9
	{
10
		throw new Exception('There was an error uploading the image.');
11
	}
12
13
	$image = $this->upload->get_info();
14
15
	if ( ! $this->image->create_thumbnail($image['file_name'], 300, 150))
16
	{
17
		throw new Exception('There was an error creating the thumbnail.');
18
	}
19
}
20
21
// Show error messages

22
catch (Exception $e)
23
{
24
	$this->load->view('form', array(
25
		'error' => $e->getMessage(),
26
	));
27
28
	// Stop method execution with return, or use exit

29
	return;
30
}
31
32
// Got this far, must not have any trouble

33
$some_data['image'] = $image['file_name'];
34
35
$this->some_model->save($some_data);

Es kann die gleiche Anzahl von Zeilen sein, aber es ermöglicht wesentlich besser lesbaren und wartbaren Code. Außerdem werden schwierige Debugging-Sitzungen vermieden, bei denen Sie einen möglichen Pfad durch die if-Anweisung verpasst haben. Halte es einfach!

Zweite Meinung: Seien Sie sehr, sehr vorsichtig, wenn Sie Ausnahmen für die Flusskontrolle verwenden. Weitere Informationen finden Sie hier.

9 - False-Glückliche Methoden

Ausnahmefreudig zu sein ist weitaus vorteilhafter als falschglücklich zu sein.

Ruby- oder Python-Entwickler sind es gewohnt, nach trivialen Ausnahmen zu suchen. Das klingt zwar langweilig, ist aber eigentlich eine gute Sache. Wenn etwas schief geht, wird eine Ausnahme ausgelöst und Sie wissen sofort, wo das Problem liegt.

In PHP - und insbesondere bei Verwendung älterer Frameworks wie CodeIgniter - erhalten Sie das, was ich als "falsch-fröhlichen Code" bezeichne (im Gegensatz zu ausnahmefreudigem Code). Anstatt eine Ausnahme in Ihrem Gesicht zu haben, gibt sie nur einen false Wert zurück und weist die Fehlerzeichenfolge einer anderen Eigenschaft zu. Dies zwingt Sie, es mit einem get_error(); aus der Klasse zu fischen Methode.

Ausnahmefreudig zu sein ist weitaus vorteilhafter als falschglücklich zu sein. Wenn in Ihrem Code ein Fehler auftritt (z. B. konnte keine Verbindung zu S3 hergestellt werden, um ein Bild hochzuladen, oder ein Wert ist leer usw.), lösen Sie eine Ausnahme aus. Sie können auch bestimmte Arten von Ausnahmen auslösen, indem Sie die Exception-Klasse wie folgt erweitern:

1
class CustomException extends Exception {}

Das Auslösen einer benutzerdefinierten Ausnahme erleichtert das Debuggen erheblich.

Tipp 10 - Verwenden Sie Schutzklauseln

Es ist üblich, if-Anweisungen zu verwenden, um den Ausführungspfad einer Funktion oder Methode zu steuern. Es ist verlockend, eine Bedingung zu testen und viel Code auszuführen, wenn die Bedingung true ist, nur um einfach in die else-Anweisung zurückzukehren. Zum Beispiel:

1
function someFunction($param) {
2
    if ($param == 'OK') {
3
       $this->doSomething();
4
       return true;
5
    } else {
6
       return false;
7
    }
8
}

Diese Art von Lösung stellt jedoch ein Potenzial für Spaghetti-Code dar. Sie können das Lesen dieses Codes erleichtern, indem Sie die Bedingung umkehren. Hier ist die bessere Version:

1
function someFunction($param) {
2
    if ($param != 'OK') return false;
3
4
    $this->doSomething();
5
    return true;
6
}

Ist das nicht einfacher zu lesen? Es ist eine einfache Änderung, die die Lesbarkeit Ihres Codes drastisch verbessert.

Tipp 11 - Verwenden Sie while für einfache Iterationen

Die for-Schleife wird häufig verwendet, wenn Sie beispielsweise einen Zähler benötigen. Hier ist eine einfache for-Schleife:

1
for (var i = 0; i < x; i++) { 
2
    ... 
3
}

Es gibt einige sehr gute Gründe, eine for-Schleife zu verwenden, aber eine while-Schleife ist möglicherweise besser, wenn Sie nur etwas Einfaches wie das folgende benötigen:

1
var i = x;
2
3
while (i--) { 
4
    ... 
5
}

Es funktioniert nicht in jeder Situation, aber es ist eine Alternative.

Tipp 12 - Methoden wartbar halten

Dies ist leicht einer der häufigsten Fehler, die Neulinge gemacht haben.

Eine Methode ist die Arbeitseinheit eines Objekts. Wenn Sie Ihre Methoden auf eine wartbare Größe beschränken, können Sie Ihren Code leichter lesen und warten. Schauen Sie sich die folgende Monstermethode an:

1
class SomeClass {
2
3
	function monsterMethod() {
4
		if($weArePilots) {
5
			$this->goAndDressUp();
6
			$this->washYourTeeth();
7
			$this->cleanYourWeapon();
8
			$this->takeYourHelmet();
9
			if($this->helmetDoesNotFit())
10
				$this->takeAHat();
11
			else
12
				$this->installHelmet();
13
			$this->chekcYourKnife();
14
			if($this->myAirplain() == "F22")
15
				$this->goToArmyAirport();
16
			else
17
				$this->goToCivilianAirport();
18
			$this->aim();
19
			$this->prepare();
20
			$this->fire();
21
		}
22
	}
23
24
}

Teilen Sie diese Monstermethode in kleinere, beschreibende Teile auf, die jeweils für die Ausführung einer gut abstrahierten Aktion verantwortlich sind. Dies ist leicht einer der häufigsten Fehler, die Neulinge gemacht haben.

1
class SomeClass {
2
3
	function monsterMethod() {
4
		if($weArePilots) {
5
			$this->prepareYourself();
6
			$this->tryHelmet();
7
			$this->findYourAirport();
8
			$this->fightEnemy();
9
		}
10
	}
11
12
	private function prepareYourself() {
13
		$this->goAndDressUp();
14
		$this->washYourTeeth();
15
		$this->cleanYourWeapon();
16
		$this->chekcYourKnife();
17
	}
18
19
	private function tryHelmet() {
20
		$this->takeYourHelmet();
21
		if($this->helmetDoesNotFit())
22
			$this->takeAHat();
23
		else
24
			$this->installHelmet();
25
	}
26
27
	private function findYourAirport() {
28
		if($this->myAirplain() == "F22")
29
			$this->goToArmyAirport();
30
		else
31
			$this->goToCivilianAirport();
32
	}
33
34
	private function fightEnemy() {
35
		$this->aim();
36
		$this->prepare();
37
		$this->fire();
38
	}
39
40
}

Los geht's: sauberer und einfacher zu debuggen!

Schritt 13 - Vermeiden Sie tiefes Verschachteln

Zu viele Verschachtelungsebenen erschweren das Lesen und Verwalten von Code. Folgendes berücksichtigen:

1
function doSomething() {
2
    if ($someCondition) {
3
        if ($someOtherCondition) {
4
            if ($yetSomeOtherCondition) {
5
                doSomethingSpecial();
6
            }
7
8
            doSomethingElse();
9
        }
10
    }
11
}

Sie können sich auf Tipp 10 beziehen, um das Lesen dieses Codes zu vereinfachen, indem Sie einige der Bedingungen umkehren.

1
function doSomething() {
2
    if (!$someCondition) {
3
        return false;
4
    }
5
6
    if (!$someOtherCondition) {
7
        return false; 
8
    }
9
10
    if ($yetSomeOtherCondition) {
11
        doSomethingSpecial();
12
    }
13
14
    doSomethingElse();
15
}

Dieser Code ist erheblich sauberer und führt zu den gleichen Ergebnissen wie zuvor.

Wenn Sie verschachtelte if-Anweisungen haben, überprüfen Sie Ihren Code genau. Ihre Methode führt möglicherweise mehr als eine Aufgabe aus. Hier ist ein Beispiel:

1
function someFunc() {
2
	if($oneThing) {
3
		$this->doSomething();
4
		if($anotherThing)
5
			$this->doSomethingElse();
6
	}
7
}

Extrahieren Sie in diesen Fällen die verschachtelten Methoden in ihre eigene Methode:

1
function someFunc() {
2
	if($oneThing) {
3
		$this->doSomething();
4
		$this->doAnotherThing($anotherThing);
5
	}
6
}
7
8
private doAnotherThing($anotherThing) {
9
	if($anotherThing)
10
		$this->doSomethingElse();
11
}

Tipp 14 - Vermeiden Sie magische Zahlen und Zeichenfolgen

Magische Zahlen und Strings sind böse. Definieren Sie Variablen oder Konstanten mit den Werten, die Sie in Ihrem Code verwenden möchten.

An Stelle von:

1
function someFunct() {
2
	$this->order->set(23);
3
	$this->order->addProduct('superComputer');
4
	$this->shoppingList->add('superComputer');
5
}

Geben Sie an, was diese Zahlen und Zeichenfolgen bedeuten, und weisen Sie sie einer Variablen mit einem aussagekräftigen Namen zu:

1
function someFunct() {
2
	$orderId = 23;
3
	$selectedProductName = 'superComputer';
4
5
	$this->order->set($orderId);
6
	$this->order->addProduct($selectedProductName);
7
	$this->shoppingList->add($selectedProductName);
8
}

Während einige argumentieren könnten, dass wir unnötig Variablen erstellen, ist der Leistungseinbruch vernachlässigbar. Die Lesbarkeit hat immer Vorrang. Denken Sie daran: Optimieren Sie die Leistung erst, wenn Sie beschreiben können, warum dies erforderlich ist.

Schritt 15 - Verwenden Sie integrierte Array-Funktionen

Verwenden Sie die integrierten Array-Funktionen anstelle von foreach().

Nicht ideal:

1
foreach (&$myArray as $key =>$element) {
2
   if ($element > 5) unset ($myArray[$key]);
3
}

Besser:

1
$myArray = array_filter($myArray, function ($element) { return $element <= 5;});

PHP bietet eine Vielzahl von Array-Methoden. Sie sind zunächst verwirrend, aber nehmen Sie sich einen Tag Zeit und versuchen Sie, so viele wie möglich zu lernen.

Tipp 16 - Variablen nicht überbeanspruchen

Es ist leicht, Variablen zu überbeanspruchen, aber denken Sie daran, dass Variablen im Speicher gespeichert sind. Für jede von Ihnen erstellte Variable muss das System Speicher für diese Variable zuweisen. Schauen Sie sich diesen Code an:

1
public function get_posts() {
2
	$query = $this->db->get('posts');
3
	$result = $query->result();
4
	return $result;
5
}

Die Variable $result ist nicht erforderlich. Der folgende Code lässt diese Variable weg:

1
public function get_posts() {
2
	$query = $this->db->get('posts');
3
	return $query->result();
4
}

Der Unterschied ist subtil, aber wir konnten dieses einfache Beispiel verbessern. Wir haben die Variable $query beibehalten, da sie sich auf die Datenbank bezieht, während sich $result mehr auf unsere Logik bezieht.


Allgemeine Programmierempfehlungen

Tipp 17 - Verlassen Sie sich auf das Datenbankmodul

Alles andere ist ein Code-Geruch.

Eine Datenbank dient zum Arbeiten mit Daten. Verwenden Sie seine Tools und Fähigkeiten, um Ihre Anwendung effizienter zu gestalten.

Beispielsweise können Sie redundante Datenbankabfragen unter vielen Umständen vermeiden. Die meisten Plug-and-Play-Benutzerverwaltungsskripte verwenden zwei Abfragen für die Benutzerregistrierung: eine, um zu überprüfen, ob die E-Mail / der Benutzername bereits vorhanden ist, und eine, um sie tatsächlich zur Datenbank hinzuzufügen. Ein viel besserer Ansatz besteht darin, das Feld Benutzername auf UNIQUE zu setzen. Sie können dann native MySQL-Funktionen verwenden, um zu überprüfen, ob der Datensatz zur Datenbank hinzugefügt wurde oder nicht.

Tipp 18: Benennen Sie Ihre Variablen richtig

Die Tage der Benennung Ihrer Variablen x, y, z sind vorbei (es sei denn, Sie haben es natürlich mit einem Koordinatensystem zu tun). Eine Variable ist ein wichtiger Teil Ihrer Logik. Sie möchten keinen langen Namen eingeben? Holen Sie sich eine bessere IDE. Moderne IDEs vervollständigen Variablennamen im Handumdrehen automatisch.

Codieren Sie in sechs Monaten immer. Sind Sie sicher, dass Sie sich daran erinnern werden, worauf sich diese $sut-Variablen in einem Jahr beziehen? Wahrscheinlich nicht: beschreibend sein. Alles andere ist ein Code-Geruch.

Tipp 19 - Methoden repräsentieren Aktionen

Fehler passieren; Der Schlüssel ist, von ihnen zu lernen.

Benennen Sie Ihre Methoden mit Verben, die die von ihnen ausgeführte Aktion darstellen. Das Hauptkonzept ist das genaue Gegenteil des Variablennamensschemas. Verwenden Sie einen kurzen, aber beschreibenden Namen in einem großen Bereich (dh öffentliche Methoden) und einen längeren und detaillierteren Namen in einem kurzen Bereich (dh private / geschützte Methoden). Dies hilft dabei, Ihren Code wie eine gut geschriebene Prosa zu lesen.

Vermeiden Sie auch andere Sprachen als Englisch, wenn Sie Ihre Methoden benennen. Es ist ärgerlich, Funktionsnamen wie 做些 什麼() oder делатьчтото() in Ihrem Projekt zu lesen. Für andere Programmierer ist es möglicherweise unmöglich, Ihre Absicht zu verstehen. Während es arrogant erscheinen mag, ist Englisch die angenommene Sprache des Codes. Versuchen Sie es zu benutzen, wenn wir in einem großen Team arbeiten.

Tipp 20: Strukturempfehlungen

Schließlich ist die Codestruktur für die Lesbarkeit und Wartbarkeit genauso wichtig wie alles andere, worüber wir heute gesprochen haben. Hier sind zwei Empfehlungen:

  • Einrückung mit vier oder zwei Leerzeichen. Alles andere, z. B. acht Leerzeichen, ist zu viel und erschwert das Lesen Ihres Codes.
  • Stellen Sie eine angemessene Linienbreite ein und respektieren Sie diese. Vierzig Zeichen in einer Zeile? Wir sind nicht mehr in den 70ern; Setzen Sie Ihr Limit auf 120 Zeichen, markieren Sie den Bildschirm und zwingen Sie sich oder Ihre IDE, dieses Limit einzuhalten. 120 Zeichen geben Ihnen eine schöne Breite, ohne dass Sie scrollen müssen.

Abschluss

"Ich habe noch nie einen dummen Programmierfehler gemacht." -- Niemand.

Fehler passieren. Der Schlüssel ist, von ihnen zu lernen. Wir bei Nettuts+ haben Fehler gemacht und werden dies auch weiterhin tun. Wir hoffen, dass Sie aus unseren Fehlern lernen, damit Sie sie in Zukunft vermeiden können. Aber um ehrlich zu sein, ist der beste Weg, die besten Sachen zu lernen, die Fehler selbst zu machen!

Danke fürs Lesen!