Wenn Sie mehr und mehr über Softwareentwicklung zu lesen beginnen, stoßen Sie häufig auf den Begriff "sauberer Code". In seiner reinsten Form ist das ein Code, den andere Leute leicht lesen können. Es ist ausdrucksstark und schön, und Sie können seine Absicht einfach erkennen, indem Sie es betrachten .
Sauberer Code schreiben ist leichter gesagt als getan.
Ob Sie ein Arduino sind Erste Schritte mit Arduino: Ein Anfängerhandbuch Erste Schritte mit Arduino: Ein Anfängerhandbuch Arduino ist eine Open-Source-Prototyping-Plattform für Elektronik, die auf flexibler, einfach zu bedienender Hardware und Software basiert. Es richtet sich an Künstler, Designer, Bastler und alle, die interaktive Objekte oder Umgebungen erstellen möchten. Lesen Sie mehr Tüftler, oder Sie bauen Raspberry Pi Raspberry Pi: Die inoffizielle Anleitung Raspberry Pi: Die inoffizielle Anleitung Ob Sie ein aktueller Pi-Besitzer, der mehr oder ein potenzieller Besitzer dieser Kreditkarte Größe Gerät lernen will, ist dies nicht 't ein Führer, den du verpassen willst. Lesen Sie weitere Anwendungen mit Python oder Sie sind sogar ein Webentwickler. Es gibt einige nützliche Tipps, die Ihren Code für andere leichter lesbar machen. Hier ist, was Sie wissen müssen .
Sei konsistent
Vielleicht ist der erste und offensichtlichste Tipp, konsequent zu sein, was Sie tun. Ein gutes Beispiel dafür sind die gleichen Muster bei der Benennung von Funktionen Die absoluten Grundlagen der Programmierung für Anfänger (Teil 2) Die absoluten Grundlagen der Programmierung für Anfänger (Teil 2) In Teil 2 unserer absoluten Anfänger Anleitung zum Programmieren werde ich sein über die Grundlagen von Funktionen, Rückgabewerte, Schleifen und Bedingungen. Stellen Sie sicher, dass Sie Teil 1 gelesen haben, bevor Sie das ... Lesen Sie mehr und Variablen Die Grundlagen der Computerprogrammierung 101 - Variablen und Datentypen Die Grundlagen der Computerprogrammierung 101 - Variablen und Datentypen Nachdem ich etwas eingeführt und darüber gesprochen habe Objektorientierte Programmierung Vor und wo sein Namensgeber herkommt, dachte ich, es ist an der Zeit, dass wir die absoluten Grundlagen der Programmierung auf eine nicht sprachspezifische Weise durchgehen. Dies ... Lesen Sie mehr. Sie sollten eine Namenskonvention auswählen und dabei bleiben.
Also, welche Namenskonvention sollten Sie verwenden?
Nun, wenn Sie Python für Raspberry Pi schreiben, ist die Antwort klar. Der PEP-8-Standard (das Barometer für guten, sauberen Python-Code) besagt, dass Variablennamen in Kleinbuchstaben geschrieben sein sollten, wobei jedes Wort durch einen Unterstrich getrennt sein sollte. Zum Beispiel: gpio_input und moisture_sensor_reading .
Der Arduino Style Guide gibt implizit an, dass Sie Ihre Variablen in den so genannten Camel Case schreiben sollten. Hier werden Wörter nicht durch irgendetwas getrennt, sondern der erste Buchstabe jedes Wortes wird mit Ausnahme des ersten Wortes groß geschrieben. Zum Beispiel: buttonPressed und temperatureReading .
Es gibt natürlich andere Arten der Variablenbenennung. Das oben genannte ist einfach das, was von den offiziellen Style Guides empfohlen wird. Aber was auch immer Sie wählen, stellen Sie sicher, dass Sie dabei bleiben, und verwenden Sie die gleiche Namenskonvention in Ihrem Programm.
Schreiben Sie aussagekräftige Kommentare
Kommentare sind eine gute Möglichkeit zu erklären, was Ihr Programm tut. Sie können angeben, was jede Funktion macht und jede Variable in Ihren eigenen Worten darstellt. Dies erleichtert es Dritten, Ihren Code zu lesen, erleichtert aber auch die Pflege Ihres Codes, da Sie ihn letztendlich besser verstehen.
Aber wenn Sie Ihre Kommentare nicht auf eine Art und Weise schreiben, die offensichtlich und ausdrucksvoll ist, dann werden Sie vielleicht nicht so viel tun.
Wenn Sie Kommentare schreiben, sollten Sie versuchen, neben dem How How, den Grund für den Code zu erläutern. Versuchen Sie, die Absicht deutlich zu machen und etwas über den Code zu sagen, den er nicht selbst sagen kann. Also, anstatt:
// Lesevorgang aktualisieren
Denke darüber nach,
// Aktualisiere die Anzahl der Male, die der Laserstrahl gebrochen wurde, bevor du ihn twetierst
Stellen Sie sicher, dass Sie vollständige, grammatikalisch korrekte Sätze schreiben. Darüber hinaus besagt der PEP-8-Standard für Python, dass Sie Ihre Kommentare und Variablen immer auf Englisch schreiben sollten. Dies erleichtert es anderen, mit Ihnen zusammenzuarbeiten, sollten Sie sich dazu entschließen, Ihren Code als Open Source zu veröffentlichen, da Englisch sozusagen die Lingua Franca der Softwareentwicklung ist.
Der Arduino-Style-Guide geht noch weiter und sagt, dass Sie jeden Codeblock, jede for-Schleife und jede Variablendeklaration kommentieren müssen.
Ich persönlich finde das ein bisschen extrem. Wenn Sie ausführliche, aussagekräftige Variablennamen schreiben, ist Ihr Code bereits selbstdokumentierend. Zögern Sie nicht, Kommentare hinzuzufügen, wenn Sie denken, dass sie gebraucht werden. Benützen Sie Ihr eigenes gutes Urteilsvermögen.
Vereinfachen Sie Ihren Code
Wenn du lernst, dich zum ersten Mal zu entwickeln Wie lernst du das Programmieren ohne Stress? Wie lernst du das Programmieren ohne den Stress? Vielleicht hast du dich dazu entschieden, das Programmieren zu verfolgen, sei es für eine Karriere oder einfach nur als Hobby. Groß! Aber vielleicht fängst du an, dich überwältigt zu fühlen. Nicht so toll. Hier ist Hilfe, um Ihre Reise zu erleichtern. Lesen Sie weiter, Sie sind oft mit einem immensen Enthusiasmus gefüllt. Sie lesen alles über Ihre Sprache, Ihr Framework oder Ihre Plattform. Du fängst an, auf Konzepte zu treffen, die du vorher noch nicht kanntest, und du bist zu eifrig genug, sie in deinem eigenen Code zu verwenden.
Dinge wie ternäre Operatoren, mit denen Sie die Logik einer "if-Anweisung" wie dieser zusammenfassen können:
int x = 5; if ( x< 10) { y = 1; { else { y = 0; }
In eine einzige Zeile, so:
int x = 5; int y = (x< 10) ? 1 : 0; printf("%i\n", y);
Ternäre Betreiber sind sicherlich cool, und ich ermutige Sie, sie zu lesen. Aber wenn Sie Code schreiben, der für andere leicht lesbar ist, sollten Sie ihn am besten vermeiden. Das ist nur ein Beispiel.
Der Arduino-Style-Guide ermutigt Sie außerdem, Zeiger, #define-Anweisungen und andere Datentypen als den Standard zu vermeiden: boolean, char, byte, int, unsigned int, long, unsigned long, float, double, string, array und void. Sie sollten Datentypen wie uint8_t vermeiden, da diese weniger häufig verwendet werden, nicht in der Dokumentation erklärt werden und nicht sehr knapp sind.
Indent, und nutzen Sie Whitespace
Wenn es darum geht, sauberen Code zu schreiben, sind Python-Benutzer von Vorteil, da der Standard-Python-Interpreter vorschreibt, dass der gesamte Code sinnvoll strukturiert und eingerückt sein muss. Wenn Sie nicht nach jeder Funktion und Klassendeklaration und bedingten Anweisung einrücken, wird Ihr Programm einfach nicht ausgeführt.
Auf Arduino hält Sie nichts davon ab, unstrukturierten, komprimierten Code zu schreiben. Dies ist letztlich schwer zu lesen und schwer zu pflegen.
Aber nichts hindert Sie daran, Ihren Code besser zu strukturieren.
Stellen Sie zunächst fest, um wie viel Sie einrücken möchten. Sie sollten die Tabulatortaste mit Bedacht verwenden, da jeder Texteditor den ASCII-Code für Tabs unterschiedlich behandelt, und wenn Sie Ihren Code mit jemand anderem teilen, besteht die Möglichkeit, dass sie versehentlich Inkonsistenzen in Ihren Einzug einfügen. Diese Inkonsistenzen können Ihr Programm beschädigen, vor allem, wenn Sie eine whitespace-sensitive Sprache wie CoffeeScript verwenden. JavaScript ist ohne die Kopfschmerzen CoffeeScript ist JavaScript ohne die Kopfschmerzen Ich habe nie wirklich sehr gerne JavaScript geschrieben. Von dem Tag an, an dem ich meine erste Zeile geschrieben habe, habe ich mich immer geweigert, dass alles, was ich darin schreibe, immer wie ein Jackson aussieht ... Read More oder Python. Dieser Artikel von OpenSourceHacker erklärt ausführlicher, warum der Tab-Schlüssel vermieden werden sollte.
Ich neige dazu, für jeden Einzug vier Leerzeichen zu verwenden, aber die Gesamtanzahl hängt von Ihnen ab. Nur solange du konsequent bist.
Sie können Ihre IDE und Ihren Texteditor so konfigurieren, dass jede Registerkarte als eine festgelegte Anzahl von Leerzeichen behandelt wird. Sie können jedoch die Tabulatortaste verwenden, ohne das Risiko von Problemen einzugehen. Wenn Sie Sublime Text 2 verwenden, lesen Sie ihre offizielle Dokumentation. Wenn Sie Vim verwenden, bearbeiten Sie einfach Ihre .vimrc- Datei mit diesen Zeilen. Der Arduino-Editor führt dies automatisch aus und fügt bei jedem Drücken der Tabulatortaste zwei Leerzeichen ein.
Dann müssen Sie nur wissen, wo Sie Ihren Code einrücken müssen. Als Faustregel sollten Sie immer nach jeder Funktionsdeklaration und nach jeder if-, else- , while-, switch- und case- Anweisung einrücken.
Viele Redakteure haben die Möglichkeit, ganze Code-Blöcke gleichzeitig einzurücken. Wenn Sie Sublime Text 2 verwenden, können Sie eine Hotkey- oder Tastenkombination einrichten. Andernfalls können Sie die Standardkombination verwenden, die (unter OS X) Cmd + [ . Im Arduino-Editor können Sie den Einzug Ihrer Datei automatisch korrigieren, indem Sie unter Windows und Linux Strg + T und unter OS X Cmd + T drücken.
Es hängt ganz von Ihrem Editor ab, also lesen Sie das Handbuch !
Wiederhole dich nicht
Eines der wichtigsten Mantras guter Softwareentwicklung ist, sich nicht zu wiederholen, was oft zu DRY abgekürzt wird .
Das Schreiben von DRY-Code ist unglaublich wichtig, da es die Logik Ihres Programms konsistent hält, es Ihnen ermöglicht, einmal Änderungen vorzunehmen und es global widerzuspiegeln, und Sie weniger Zeit damit verbringen, dasselbe immer wieder zu schreiben.
Der beste Weg, um DRY zu bleiben, ist eine großzügige und großzügige Verwendung von Funktionen - das Einkapseln einer wiederholten Aufgabe mit einem Codeblock, den Sie immer wieder aufrufen können - und das Sicherstellen, dass jede davon eindeutig und gut geschrieben ist.
Eine gute Funktion ist kurz; Der PEP-8 Guide sagt wenig über die Funktionslänge, aber Clean Code: Ein Handbuch der Agile Software Craftsmanship von Bob Martin (sehr empfehlenswert) sagt, dass "Funktionen fast nie 20 Zeilen lang sein sollten". Am liebsten wären sie noch kürzer .
Funktionen sollten auch genau eine Sache tun. Brauchen Sie eine Funktion, die zwei Dinge tut? Schreibe zwei Funktionen.
Diese Tipps machen es einfach, den Fluss eines Programms zu verfolgen und gegebenenfalls zu debuggen. Es gibt auch einen zusätzlichen Vorteil für Arduino-Benutzer, die durch Speicherbeschränkungen stark eingeschränkt sind, da Redundanzen entfernt werden. Dies führt zu kleineren Programmen.
Sei explizit
Ein weiteres wichtiges Mantra der Softwareentwicklung ist "explizit ist besser als implizit" . Es bedeutet, dass Ihr Code auf den ersten Blick ziemlich deutlich sagen sollte, was er tut. Der Arduino Style Guide sagt, dass so etwas vermieden werden sollte:
if(buttonPressed){ doSomething(); }
Stattdessen sollten Sie deutlich machen, was passiert. Schreiben Sie stattdessen etwas wie folgt:
if (buttonPressed == True){ doSomething(); }
Gehe raus und Code (gut)
Sauberer Code zu schreiben ist überraschend einfach. Sie müssen bei allem, was Sie tun, nur konsequent sein, Redundanzen vermeiden und explizit sein. Denken Sie daran, sauberer Code ist lediglich Code, der lesbar ist.
Es gibt viel gutes Lesematerial zu diesem Thema. Ein guter Ausgangspunkt sind Arduino-Tutorials und API-Style-Guides, gefolgt vom PEP-8-Standard, wenn Sie Python-Apps für den Raspberry Pi entwickeln. Wenn Sie eine andere Sprache benutzen (wie Javascript auf dem Tessel-Brett Gebäude das Internet der Dinge, mit Tessel: Das Node.js-Entwicklungs-Brett, das das Internet der Sachen, mit Tessel errichtet: Das Node.js Entwicklungs-Brett Tessel ist eine neue Zucht von Entwicklungsboard, das komplett auf Node.js läuft, und nach einem erfolgreichen Kickstarter, haben sie nun den Punkt erreicht, dass sie für jeden verfügbar sind. Lesen Sie mehr), checken Sie Google für einen offiziellen Style Guide.
Wenn Sie sich für eine akademischere Lektüre zu diesem Thema interessieren, lesen Sie sich Clean Code: Ein Handbuch für Agile Software Craftsmanship von Bob Martin durch. Ich erwähnte es bereits früher in diesem Artikel, und es wird sehr empfohlen. Obwohl es Java zur Veranschaulichung von Konzepten verwendet, können viele der Ideen in andere Sprachen wie Python und C für Arduino übertragen werden.
Es gibt auch einige brillante Blogbeiträge, die illustrieren, wie man guten, beschreibenden, sauberen Code schreibt. Ich empfehle Ihnen, "Clean, qualitativ hochwertiger Code: eine Anleitung, wie man ein besserer Programmierer wird" von Arash Arabi, der für butterfly.com.au schreibt, und "The Fundamentals of Writing Clean Code" von Chris Reynolds für webdevstudios zu schreiben. com.
Obwohl nicht explizit auf sauberen Code bezogen, ist es auch hilfreich zu erfahren, welche Funktionen und Bibliotheken in der Sprache Ihrer Wahl am besten vermieden werden. Wenn Sie beispielsweise PHP lernen, sollten Sie die "mysql" -Bibliotheken meiden, und wenn Sie physische Produkte mit Arduino erstellen, sollten Sie niemals die Delay-Funktion Arduino Delay-Funktion verwenden und warum Sie Arduino nicht verwenden sollten Delay-Funktion, und warum Sie sie nicht verwenden sollten Während delay () praktisch ist für grundlegende Demonstrationen, wie Arduino funktioniert, sollten Sie es wirklich nicht in der realen Welt verwenden. Hier ist warum, und was Sie stattdessen verwenden sollten. Weiterlesen .
Denken Sie daran, dass Code, der leichter zu lesen ist, einfacher zu pflegen ist. Außerdem, wenn Sie jemals mit etwas stecken bleiben, ist es einfacher für jemanden, es zu lesen und Ihnen zu helfen.
Haben Sie Tipps zum Schreiben von sauberem Code? Habe ich etwas vergessen? Sag mir! Hinterlasse mir einen Kommentar und lass es mich wissen.
Fotonachweis: Trockenes Bett (Premasagar), Kleiner TAB-Schlüssel (Kai Hendry), 2015 (Wikilogia)