2013-07-03 19 views
9

Ich möchte einen Codierungsstandard für MATLAB übernehmen, aber ich bin mir nicht sicher, ob ich den richtigen ausgewählt habe.Moderner MATLAB-Codestyle: Was fehlt?

Nach meinem besten Wissen gibt es nicht so viel zum Thema Programmierrichtlinien für MATLAB, außer diesem document. Das Dokument ist gut geschrieben und hat gute Rückmeldungen. Standard wurde 2002 (auf Matlab Central) von Richard Johnson veröffentlicht, wurde aber seitdem nicht aktualisiert. Gibt es eine mehr aktuelle Version davon oder ähnliches Dokument? (Ich habe es wirklich versäumt, etwas anderes zu googeln).

Hintergrund Motivation geht davon aus

  • Coding Standards wichtig sind
  • Obwohl MATLAB seit 2002 nicht viel ändern, andere Sprachen und ihre Ansätze haben. Von diesen Praktiken könnte man wirklich profitieren.
  • Tatsache ist, viele Leute schreiben neuen Code mit MATLAB oder Octave. Obwohl, man könnte argumentieren, die Sprache ist praktisch tot (bla bla). Ich würde lieber nicht dorthin gehen (lassen Sie uns es als Offtop markieren).

Warum die codestyle für mich nicht gut genug ist

Ich möchte hier ein paar Dinge zusammenzufassen. Wenn Sie Zeit nehmen, um das Dokument zu lesen, könnten Sie feststellen, dass es

  • versucht zu hungarian zu sein (es ist kryptisch und ich hasse es wirklich in den meisten Fällen)
  • es hat zu viele Abkürzungen (mehr weniger ähnlich die vorheriger Punkt)
  • es wird nicht von Mathworks unterstützt (aber es könnte tatsächlich eine gute Sache sein, da alle guten Sachen in MATLAB von der Benutzer-Community stammten)
  • es gibt keine automatisierten Qualitätskontroll-Tools, die einen solchen Codierungsstil respektieren (hier meine ich nicht etwas wie mlint wie in * lint Familie, sondern eher wie pep8.py für Python)

Ich denke, der Grund, warum ein solches Werkzeug nicht entwickelt wurde, ist eigentlich das Fehlen eines weithin akzeptierten Kodierungsstandards.

Ich würde wirklich jede Ihrer Kritik auf dem Standard oder Informationen über eine bessere zu schätzen wissen.

Haben Sie Erfahrung mit diesem Standard? Welche Teile davon haben nicht für dich funktioniert? Wenn Sie nie einen formellen Kodierungsstandard verwendet haben, aber eine wertvolle Übung haben, die nicht in diese passt - geben Sie bitte ein Beispiel an.

+2

gibt es das: http://Stackoverflow.com/a/5042797/97160. Auch ein paar nützliche Sachen hier: http://stackoverflow.com/q/2326609/97160 – Amro

+0

@Amro: Das ist eigentlich ganz toll. Wenn "Die Elemente von MATLAB Style" so gut sind, könnte ich meine Antwort haben! –

+1

ist vom selben Autor (Richard Johnson). Ich habe auch dieses Wiki gefunden: https://sites.google.com/site/matlabstyleguidelines/ – Amro

Antwort

3

Eine der besten Antworten so weit wäre, einen Kommentar von Amro zu zitieren:

„der gleichen Autor (Richard Johnson)“ ein book‚Die Elemente von MATLAB Style‘ (auch wiki veröffentlicht sehen) 2011:

cover

Inhaltsverzeichnis

  1. Allgemeine Grundsätze
  2. Dokumentation
  3. Programmierung
  4. Dateien und Organisation
  5. Entwicklung Naming Formatierung.

Loren hat einen Blog-Eintrag mit dem review of the book. Ich folge nur hier Linie Kommentare:

  • 7 Split Long-Code-Zeilen bei Graceful Punkten - ich dies nützlich finden, da es insgesamt Schmerz ist mit off in einem beliebigen Editor nach rechts weit zu schleppen, obwohl es sogar ist möglich.
  • 10 Keine harten Registerkarten verwenden - Dies hilft, bei der Arbeit in einer Gruppe mit möglicherweise unterschiedlichen Bearbeitungsumgebungen gesund zu bleiben.

  • 43 Verwenden bedeutungsvoller Namen für Variablen mit einem großen Gültigkeitsbereich - Dies erleichtert das Lesen, Verstehen und Debuggen von Code, falls erforderlich.

  • 69 Name Funktionen für was sie tun - Da Funktionen eine Aktion ausführen, sollte der Name Informationen über die Aktion enthalten.

  • 86 Verwenden Sie die sortierbare Nummerierung in Datendateinamen - Wenn Sie viele ähnliche Datendateien haben, kann Ihnen ein rationelles Nummerierungsschema nur helfen.

  • 97 Seien Sie sicher, dass diese Kommentare mit dem Kodex übereinstimmen - Ich werde niemals die Zeit vergessen, in der mein Doktorvater mich anrief, weil er wirklich irritiert war. Ich hatte ihm eine Kopie eines Fortran-Programms hinterlassen, das reichhaltige Kommentare enthielt, und das letzte war: "Ignoriere alle obigen Kommentare; sie waren für eine frühere Version." Vermeiden Sie kryptischen Code - Ich habe festgestellt, dass das Schreiben von kryptischem Code im Allgemeinen weniger kostet, als ich in Bezug auf gute Dinge erwarte, und mehr Kopfschmerzen, als es rechtfertigt. Gelegentlich habe ich kryptischen Code für etwas Zeitkritisches eingesetzt. Wenn ich das tue, versuche ich, es vollständig zu kommentieren, einschließlich einer geradlinigen Implementierung in den Kommentaren, die ich getestet habe. Auf diese Weise verstehe ich, wenn sich die Performance-Kompromisse ändern, was der Code tun soll und habe zwei Startoptionen für eine Code-Aktualisierung.

  • 150, 151 Minimierung der Verwendung globaler Variablen und Minimierung der Verwendung globaler Konstanten - das würde ich selbst noch stärker betonen. Es gibt überlegene Techniken für den Umgang mit Informationen, die Sie teilen möchten, egal ob es sich um Funktions-Handles, Klassen und deren Eigenschaften oder um andere Methoden handelt.Diese Techniken sind aus vielen Gründen viel sicherer zu verwenden - z. B. können leichter gesteuerte Nebenwirkungen, falls gewünscht, und Code für die Parallelität möglicherweise geeigneter werden.

  • 172 Verwendung Parenthese - Klarheit der Bedeutung ist von größter Bedeutung, insbesondere wenn andere den Code verstehen, ändern oder übersetzen müssen.

  • 176 Vermeiden Sie die Verwendung von eval wenn möglich - Ich bin mir sicher, dass es einigen MATLAB-Benutzern nicht so scheint, aber Eval ist die meiste Zeit vermeidbar.

  • 185-188 Die erste davon ist kompliziert Bedingte Ausdrücke vermeiden - Diese Einträge über den Umgang mit bedingten Konstrukten einige nützliche Gedanken enthalten, die Reihenfolge der Fälle usw.

  • 271-275 Die erste davon ist schreiben kleine Tests - Ich liebe, dass Richard Tests zu einem zentralen Grundsatz dieses Style Guide gemacht hat. Ich sehe nicht, wie Programmierer ohne eine robuste Testsuite gut funktionieren.

Fazit

Das Buch scheint zu allgemein im Vergleich zum Originaldokument aus dem Jahr 2002. Ich kann es lesen, wird fortgesetzt und weitere Einblicke geben, aber es scheint nicht ganz mein Verständnis von Strenge zu erfüllen, die für ein Kodierungsstandard. Es fügt viele allgemeine Ideen hinzu, die für den beginnenden Programmierer nützlich sind, aber nicht streng zu programmieren, so dass sie den Code automatisch testen können (wieder einmal PEP8).

+0

+1 wie versprochen. Ich fürchte, es gibt kein ähnliches PEP8-Werkzeug für MATLAB, das mir bekannt ist, um Code-Stile zu erzwingen. Der IDE * Code Analyzer * (früher mlint) ist das nächste, was ich mir vorstellen kann, aber das ist nicht genau das gleiche ... Du könntest immer ein neues Projekt starten und ein solches Tool implementieren :) – Amro

+1

Hier ist möglicherweise etwas von Interesse : http://undocumentedmatlab.com/blog/parsing-mlint-code-analyzer-output/ – Amro