1. Schreibunterricht? Nicht wirklich.
Das Schreiben von Quellcode unterscheidet sich genug vom Schreiben eines Buches.
Während beide dasselbe Ziel verfolgen: so eindeutig wie möglich zu sein und leicht zu verstehen, tun sie es auf eine ganz andere Art und Weise, und Dinge, die ein Autor lernen sollte, sind nicht die gleichen wie Dinge, die ein Softwareentwickler lernen sollte.
Beispiel 1: Redewendungen
Redewendungen sind beim Schreiben von Romanen, Gedichten usw. wertvoll, da sie die Ausdruckskraft des Schreibens erhöhen.
Was war das letzte Mal, dass Sie ein Oxymoron oder Litotes im Quellcode gesehen haben ? Wäre es hilfreich, sie zu haben, oder wäre es für jeden Entwickler, der später einen solchen Quellcode pflegen muss, äußerst schädlich?
Beispiel 2: Wortschatz
Reiches Vokabular wird in der Literatur sehr geschätzt. Das Vokabular von William Shakespeare zum Beispiel umfasst zwanzigtausend bis fünfundzwanzigtausend Wörter. Ein reichhaltigerer Wortschatz macht es interessanter, einen Roman oder ein Gedicht zu lesen.
Wenn Sie Quellcode schreiben, erwarten Sie, dass er von Leuten gelesen wird, die nicht sehr gut Englisch sprechen . Zu zeigen, wie gut Sie Englisch beherrschen, wäre äußerst schädlich für Ihren Code. Wenn Sie ein ausgefallenes Wort kennen, das genau das bedeutet, was Sie brauchen, aber Sie wissen, dass viele Menschen die Bedeutung dieses Wortes nicht kennen, sollten Sie eher ein weniger aussagekräftiges Synonym oder eine Reihe von Wörtern finden, die die Bedeutung erklären. Ein Wortschatz von einigen Tausend Wörtern reicht für ein bestimmtes Projekt oftmals aus.
Beachten Sie einen wichtigen Aspekt: Während Google Translate für Nicht-Muttersprachler eine große Hilfe sein kann, gibt es bei jedem Übersetzer zwei Probleme:
Ein Sprachpaar muss nicht unbedingt eine 1: 1-Übereinstimmung zwischen den Wörtern aufweisen. Einige Wörter sind entweder gar nicht in eine andere Sprache übersetzt, oder mehrere Wörter können in einer Fremdsprache in ein einzelnes Wort übersetzt werden. Zum Beispiel gibt es auf Russisch eine große Menge von Wörtern, die auf bestimmte Schnee- und Kältezustände abzielen, und eine Übersetzung auf Französisch oder Spanisch ist normalerweise unmöglich, ohne ihre Spezifität zu verlieren.
Ein Wort hat manchmal mehrere Bedeutungen und die Bedeutung wird aus dem Kontext abgeleitet. Trotz seiner hohen Qualität kann Google Translate in der Regel nur für die einfachsten Situationen die Bedeutung angeben.
Beispiel 3: Ausdrücke
Ausdrücke machen auch die Prosa reicher. Ein Autor erwartet von einem Leser ein bestimmtes Maß an allgemeiner Kultur und nutzt diese Gelegenheit, um den Text ausdrucksvoller zu gestalten.
Ähnlich wie im vorherigen Beispiel können solche Ausdrücke sehr problematisch sein, wenn sie von Personen gelesen werden, die keine Muttersprachler sind. Wenn jedoch das allgemeine Vokabular normalerweise übersetzt werden kann, sind Ausdrücke viel problematischer.
Beispielsweise ist Englisch nicht meine Muttersprache, und ich stoße täglich auf Ausdrücke, einschließlich hier bei StackExchange, die ich nicht kenne. Ich versuche, ihre Bedeutung zu erraten, und manchmal habe ich recht. Aber manchmal irre ich mich, und diese Ausdrücke zu googeln hilft nicht.
Ein Benutzer in seinem Kommentar erinnerte mich an ein Beispiel, unter dem ich lange gelitten hatte, als ich gerade mit dem Programmieren anfing: PHPs Nadel und Heuhaufen . Die entsprechende Redewendung war mir nicht bekannt, und jedes Mal, wenn ich die Dokumentation las, fragte ich mich, worum es eigentlich geht. Unnötig zu erwähnen, dass C # sequence.Contains(element)
oder die exzellenten Pythons element in sequence
eine viel bessere Alternative sind. Zumindest mussten Entwickler, die kein Hebräisch sprechen, auch unter PHP leiden , aber das ist eine andere Geschichte.
Beispiel 4: kulturelle Referenzen
Kulturelle Referenzen. In der Literatur ist es verlockend, Elemente aus einer bestimmten Kultur aufzunehmen, und dies macht das Buch auch reicher und manchmal interessanter zu lesen.
Code richtet sich jedoch an Entwickler aus der ganzen Welt. Was für einen italienischen Entwickler ein offensichtlicher Hinweis ist, ist für einen russischen Entwickler möglicherweise nicht so offensichtlich, und was jeder indische Junge oder jedes indische Mädchen weiß, ist möglicherweise nicht unbedingt einem amerikanischen Programmierer bekannt.
Derselbe Benutzer, der über die Nadel und den Heuhaufen sprach, gab auch ein hervorragendes Beispiel für einen solchen kulturellen Bezug: den Gral. Wer weiß nicht, was Gral ist? Nun, ich meine, es ist "Graal" auf Französisch, "Grial" auf Spanisch und ... "Kutsal Kâse" auf Türkisch, aber immer noch. Wie viel wissen amerikanische oder europäische Entwickler über die mittelalterliche Geschichte Chinas oder Indiens? Warum sollte jemand annehmen, dass jeder chinesische und indische Programmierer die Heilige-Gral-Referenz kennen muss?
2. Lektionen zum Schreiben von aussagekräftigem Quellcode? Sicher.
Jeder Entwickler sollte lernen, wie man aussagekräftigen Quellcode schreibt.
Jeder Entwickler sollte erklären, warum der Kommentar in:
int j = i + 1; // Creating i and adding 1 to it.
ist schlecht, auch wenn es total falsch ist.
Jeder Entwickler sollte in der Lage sein, das grundlegende Refactoring zu verstehen und zu verstehen, wie es dazu beiträgt, den Quellcode aussagekräftiger zu machen.
Jeder Entwickler sollte sich daran erinnern, dass 20% der Zeit für die Entwicklung und 80% für die Pflege von Code aufgewendet werden. Bei einigen Projekten sind es eher 5% bis 95%.
etc.
Die Programmierung entspricht im Wesentlichen der technischen Dokumentation. Muss eine Person, die ein Datenblatt für einen Bolzen schreibt, Schreibunterricht nehmen? Nicht wirklich. Gleiches gilt für Entwickler. Jeder sollte schreiben, ohne Rechtschreibfehler in jedem Wort zu machen, und jeder sollte in der Lage sein, seine Ideen klar genug zu kommunizieren. Abgesehen davon bin ich mir nicht sicher, wie der Schreibunterricht sinnvoller wäre als ein Kurs in Informatik oder in IT-Sicherheit oder was auch immer.
Die Aussagekraft des Quellcodes kann auf andere Weise erlernt werden. superM erwähnte einen von ihnen in seiner Antwort : Lesen von gutem Code. Ich kann einige andere erwähnen:
Bücher wie Beautiful Code oder Code Complete lesen,
Bitten Sie einen erfahreneren Entwickler, Ihren Code zu überprüfen.
Verstehen von Mustern und wie und wann sie verwendet werden sollen.