Hallo Leute! Lassen Sie mich mit unserer Akademie für schlechte Codes fortfahren. In diesem Beitrag zeigen wir Ihnen eine weitere Möglichkeit, das Lesen von Code zu verlangsamen. Die folgenden Tricks können Ihnen helfen, das Verständnis Ihres Codes zu verringern und die Wahrscheinlichkeit von Fehlern darin zu erhöhen. Bereit? Lasst uns beginnen.
Zeilenumbrüche, Leerzeichen und Einrückungen können tödlich sein.
Wie lesen Menschen Bücher? Von oben nach unten, von links nach rechts (zumindest die meisten). Das gleiche passiert, wenn Entwickler den Code lesen. Eine Codezeile sollte einen Gedanken enthalten, daher sollte jede Zeile nur einen Befehl enthalten. Wenn Sie andere Entwickler in Verlegenheit bringen möchten, sollten Sie diese Richtlinien besser brechen. Und lassen Sie mich Ihnen zeigen, wie es geht.
Beispiel 1
Sehen Sie sich diesen Code an. Eine Idee in einer Zeile. Der Code ist so sauber, dass ich krank werde.
return elements
.Where(element => !element.Disabled)
.OrderBy(element => element.UpdatedAt)
.GroupBy(element => element.Type)
.Select(@group => @group.First());
Wir können alle Aussagen in einer Zeile zusammenfassen, aber das wäre zu einfach. In diesem Fall wird das Gehirn des Entwicklers verstehen, dass hier etwas nicht stimmt, und die Operatoren werden von links nach rechts aufgeteilt. Kinderleicht!
Es ist am besten, einige Aussagen in derselben Zeile zu halten und einige zu teilen. Die beste Option ist, wenn der Entwickler einige der Bediener möglicherweise nicht einmal bemerkt, was zu Missverständnissen und letztendlich zu einem Fehler führt. Eine andere Option - wir werden sein Verständnis dieses Codes nur langsam reduzieren, bis er "Was zum Teufel ist das!" Ruft.
return elements.Where(e => !e.Disabled)
.OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
.Select(g => g.First());
Wie gefällt dir das? Sie können Einrückungen hinzufügen, damit andere Entwickler Ihren Code jahrzehntelang formatieren, wenn sie die Elementvariable umbenennen müssen.
return elements.Where(e => !e.Disabled)
.OrderBy(e => e.UpdatedAt).GroupBy(e => e.Type)
.Select(g => g.First());
Senden Sie mir eine Postkarte, wenn dieser Ansatz von Ihrem Team überprüft wird.
Tipp : Lassen Sie ein paar Anweisungen in einer Zeile und ein paar in separaten Zeilen.
Beispiel 2
Absolut die gleiche Idee hier. Dies ist der einzige Code, den Sie viel häufiger sehen.
var result =
(condition1 && condition2) ||
condition3 ||
(condition4 && condition5);
Das Verfahren ist das gleiche. Trennen Sie die Zeilen, um den Leser so weit wie möglich zu verwirren. Spielen Sie ein wenig mit Zeilenumbrüchen, um das beste Ergebnis zu erzielen.
var result = (condition1 && condition2) || condition3 ||
(condition4 && condition5);
Fügen Sie einige Einrückungen hinzu, damit der Code normal aussieht.
var result = (condition1 && condition2) || condition3 ||
(condition4 && condition5);
Denken Sie daran, dass Sie ein Gleichgewicht zwischen der Unleserlichkeit Ihres Codes und der Glaubwürdigkeit Ihres Stils herstellen müssen.
Tipp : Spielen Sie mit Zeilenumbrüchen, um die besten Ergebnisse zu erzielen.
Beispiel 3
Was ist damit?
if (isValid)
{
_unitOfWork.Save();
return true;
}
else
{
return false;
}
Das gleiche Problem, aber auf der anderen Seite. Hier wäre die beste Option, die Anweisungen in einer Zeile zu kombinieren, natürlich mit geschweiften Klammern.
if (isValid) { _unitOfWork.Save(); return true; } else { return false; }
Dieser Ansatz funktioniert nur, wenn Sie nur wenige Anweisungen in den Blöcken then und else haben. Andernfalls wird Ihr Code möglicherweise in der Phase der Codeüberprüfung abgelehnt.
Tipp : Kombinieren Sie kleine if / for / foreach-Anweisungen in einer Zeile.
Beispiel Nr. 4
80 Zeichen pro Zeile ist der derzeit empfohlene Standard. Auf diese Weise können Sie die Konzentration des Entwicklers beim Lesen Ihres Codes beibehalten. Darüber hinaus können bei Bedarf zwei Dokumente gleichzeitig auf demselben Bildschirm geöffnet werden, sodass Sie Platz für den Projektmappen-Explorer haben.
bool IsProductValid(
ComplexProduct complexProduct,
bool hasAllRequiredElements,
ValidationSettings validationSettings)
{
// code
}
Der einfachste Weg, das Lesen Ihres Codes zu verlangsamen, besteht darin, andere Entwickler dazu zu bringen, Ihren Code horizontal zu scrollen. Ignorieren Sie einfach die 80-Zeichen-Regel.
bool IsProductValid(ComplexProduct complexProduct, bool hasAllRequiredElements, ValidationSettings validationSettings)
{
// code
}
Es ist ganz einfach: Vergessen Sie, was passiert ist, bevor Sie mit dem Scrollen begonnen haben, oder überspringen Sie die Zeile, mit der Sie begonnen haben. Toller Trick.
Tipp : Ignorieren Sie absichtlich die 80-Zeichen-Regel.
Beispiel 5 Eine
leere Zeile an der richtigen Stelle ist ein leistungsstarkes Werkzeug, um Ihren Code zu gruppieren und schneller lesen zu können.
ValidateAndThrow(product);
product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;
product.DisplayStatus = DisplayStatus.New;
_unitOfWork.Products.Add(product);
_unitOfWork.Save();
return product.Key;
Eine leere Zeile an der falschen Stelle in Kombination mit den anderen Tipps in diesem Artikel kann Ihnen dabei helfen, Ihre Arbeit zu speichern. Welche Leerzeile bevorzugen Sie?
ValidateAndThrow(product);
product.UpdatedBy = _currentUser;
product.UpdatedAt = DateTime.UtcNow;
product.DisplayStatus = DisplayStatus.New;
_unitOfWork.Products.Add(product);
_unitOfWork.Save();
return product.Key;
Tipp : Fügen Sie zufällig leere Zeilen ein.
Beispiel 6
Wenn Sie sich für ein Repository verpflichten, haben Sie eine winzige Gelegenheit zu sehen, was genau Sie festschreiben werden. TU DAS NICHT! Es ist in Ordnung, wenn Sie eine zusätzliche leere Zeile wie hier hinzufügen.
private Product Get(string key)
{
// code
}
private void Save(Product product)
{
// code
}
Oder, noch besser, fügen Sie ein paar Leerzeichen in eine leere Zeile ein (um den Unterschied zu verstehen, markieren Sie die 5. Zeile).
private Product Get(string key)
{
// code
}
private void Save(Product product)
{
// code
}
Warum brauchst du das? Der Code funktioniert weiterhin (ist aber nicht sicher). Sie verstehen Ihren Code weiterhin, aber der andere Entwickler wird Ihren Code weniger verstehen. Sie können nicht einfach ein paar zusätzliche Leerzeichen auf einmal zu gängigen Methoden hinzufügen (Codeüberprüfungen sind unser Feind), aber die Verwendung dieser Vorgehensweise führt nach ein paar Wochen aktiver Entwicklung zu einem Durcheinander.
Ein weiterer zusätzlicher Vorteil der Verwendung zusätzlicher Leerzeichen in einer Zeichenfolge besteht darin, dass ihre IDE die Formatierung automatisch korrigieren kann, wenn andere Entwickler verwandte Funktionen festlegen. Bei der Codeüberprüfung sehen sie tausend rote und grüne Linien. Wenn Sie verstehen, was ich meine;)
Aus dem gleichen Grund können Sie in Ihrer IDE Registerkarten einrichten, wenn Sie Leerzeichen in Ihrem Projekt verwenden, und umgekehrt.
Tipp : Sehen Sie sich den Code nicht an, bevor Sie ihn festschreiben.
Beispiel 7
Umgehen Sie die Entwickler, die möglicherweise zusätzliche Leerzeichen im Code sehen. Sie sind gefährlich für Ihre Karriere.
product.Name = model.Name;
product.Price = model.Price;
product.Count = model.Count;
Tipp : Kennen Sie Ihren Feind.
Es ist harte Arbeit, Ihren Code nicht mehr zu unterstützen. Wenn Sie viele kleine Probleme ansammeln, wachsen sie ohne Ihre Teilnahme. Junge Entwickler schreiben ihren Code gemäß Ihren Vorlagen. Eines Tages während der Codeüberprüfung hören Sie "Was zur Hölle?" von Ihrem Teamleiter, und dann können Sie das Schlagwort verwenden: „Was? Wir machen das immer “und zeigen ihm tausend Stellen im Code, an denen er auf die gleiche Weise geschrieben ist.
Habe Spaß.