Moderner MATLAB-Codestyle: Was fehlt? [geschlossen]

9

Ich möchte einen Codierungsstandard für MATLAB übernehmen, aber ich bin mir nicht sicher, ob ich den richtigen ausgewählt habe.

Nach meinem besten Wissen gibt es nicht so viel zum Thema Programmierrichtlinien für MATLAB, abgesehen von diesem Dokument . 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 aktuelle Version davon oder ein ähnliches Dokument? (Ich habe es wirklich versäumt, etwas anderes zu googeln).

Die Hintergrundmotivation geht von

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

Warum der Codestyle nicht gut genug für mich ist

Ich möchte hier ein paar Dinge zusammenfassen. Wenn Sie sich Zeit nehmen, das Dokument zu lesen, stellen Sie möglicherweise fest, dass es

ist
  • versucht zu ungarisch (es ist kryptisch und ich hasse das in den meisten Fällen)
  • es hat zu viele Verknüpfungen (mehr weniger ähnlich wie der vorherige Punkt)
  • es wird von Mathworks nicht unterstützt (aber es könnte tatsächlich eine gute Sache sein, da alle guten Sachen in MATLAB von der Benutzergemeinschaft IMO stammen)
  • es gibt keine automatisierten Qualitätskontroll-Tools, die einen solchen Codierungsstil respektieren (hier meine ich nicht etwas wie mlint wie in * lint family, sondern eher wie pep8.py für python)

Ich vermute, der Grund, warum ein solches Tool nicht entwickelt wurde, ist das Fehlen eines allgemein akzeptierten Kodierungsstandards.

Ich würde wirklich jede Ihrer Kritik am 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 formalen Kodierungsstandard verwendet haben, aber eine wertvolle Übung haben, die nicht hineinpasst - geben Sie bitte ein Beispiel an.

    
Yauhen Yakimovich 03.07.2013, 16:22
quelle

1 Antwort

3

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

"derselbe Autor (Richard Johnson)" hat ein Buch 'Die Elemente von MATLAB Style' (siehe auch Wiki ) 2011:

  

Inhaltsverzeichnis

     
  1. Allgemeine Grundsätze
  2.   
  3. Formatierung
  4.   
  5. Benennung
  6.   
  7. Dokumentation
  8.   
  9. Programmierung
  10.   
  11. Dateien und Organisation
  12.   
  13. Entwicklung.
  14.   

Loren hat einen Blogeintrag mit der Überprüfung des Buches . Ich werde hier nur der Kommentarzeile folgen:

  • 7 Aufgeteilte lange Codezeilen an magischen Punkten - Ich finde das nützlich, da es ein absoluter Schmerz ist, in jedem Editor weit nach rechts zu gehen, obwohl es möglich ist.
  • 10 Verwenden Sie keine harten Registerkarten - Dies hilft, bei der Arbeit in einer Gruppe mit möglicherweise unterschiedlichen Bearbeitungsumgebungen gesund zu bleiben.

  • 43 Sinnvolle Namen für Variablen mit großem Gültigkeitsbereich verwenden - Dies erleichtert das Lesen, Verstehen und Debuggen von Code erheblich.

  • 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 eine 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 der Performance-Kompromiss sich ändert, was der Code tun soll und habe zwei Startoptionen für eine Code-Aktualisierung.
  • 150, 151 Minimiere die Verwendung globaler Variablen und minimiere die 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 potentiell geeigneter werden.

  • 172 Verwenden Sie 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 dieser Optionen ist Komplizierte bedingte Ausdrücke vermeiden - Diese Einträge enthalten einige nützliche Hinweise zum Umgang mit bedingten Konstrukten, zur Reihenfolge der Fälle usw.

  • 271-275 Das erste von diesen ist Schreiben kleiner Tests - ich liebe, dass Richard das Testen zu einem zentralen Grundsatz dieses Stilleitfadens gemacht hat. Ich sehe nicht, wie Programmierer ohne eine robuste Testsuite funktionieren.

Fazit

Das Buch scheint zu allgemein zu sein, verglichen mit dem Originaldokument von 2002. Ich werde es weiter lesen und mehr Einsichten geben, aber es scheint meinem Verständnis von Strenge, das für einen Codierungsstandard erforderlich ist, nicht ganz zu entsprechen. Es fügt viele allgemeine Ideen zusammen, die für den Anfänger-Programmierer nützlich sind, aber nicht streng zu programmieren, so dass sie Code automatisch testen können (wieder ein PEP8 ).

    
Yauhen Yakimovich 03.07.2013, 20:04
quelle

Tags und Links