Ich schreibe keine großen Projekte. Ich verwalte keine riesige Datenbank und beschäftige mich nicht mit Millionen von Codezeilen.
Mein Code ist in erster Linie "Skripting" - Dinge zum Testen von mathematischen Funktionen oder zum Simulieren von etwas - "wissenschaftliches Programmieren". Die längsten Programme, an denen ich bis jetzt gearbeitet habe, sind ein paar hundert Codezeilen, und die meisten Programme, an denen ich arbeite, sind ungefähr 150.
Mein Code ist auch Mist. Ich habe das neulich bemerkt, als ich versucht habe, eine Datei zu finden, die ich vor einiger Zeit geschrieben habe, die ich aber wahrscheinlich überschrieben habe und die ich nicht mit Versionskontrolle verwende.
Der Stil meines Codes ist verworren und mit veralteten Kommentaren gefüllt, die alternative Vorgehensweisen angeben, oder mit Codezeilen, die überschrieben werden. Während die Variablennamen immer sehr nett und beschreibend beginnen, wenn ich Dinge hinzufüge oder ändere, wie z. B. etwas Neues, das jemand testen möchte, wird Code darüber gelegt und überschrieben, und weil ich der Meinung bin, dass dieses Ding jetzt schnell getestet werden sollte Ich habe ein Framework, in dem ich anfange, beschissene Variablennamen zu verwenden, und die Datei geht in den Topf.
In dem Projekt, an dem ich gerade arbeite, bin ich in der Phase, in der all das zurückkommt, um mich großartig zu beißen. Aber das Problem ist (abgesehen von der Verwendung der Versionskontrolle und dem Erstellen einer neuen Datei für jede neue Iteration und dem Aufzeichnen aller Dateien in einer Textdatei, was die Situation wahrscheinlich dramatisch verbessern wird), dass ich nicht wirklich weiß, wie ich mit der Verbesserung fortfahren soll Mein eigentlicher Codierungsstil.
Ist ein Komponententest erforderlich, um kleinere Codeteile zu schreiben? Wie wäre es mit OOP? Welche Ansätze eignen sich, um bei "wissenschaftlichem Programmieren" guten, sauberen Code schnell zu schreiben, anstatt an größeren Projekten zu arbeiten?
Ich stelle diese Fragen, weil die Programmierung selbst oft nicht sehr komplex ist. Es geht eher um Mathematik oder Naturwissenschaften, die ich mit der Programmierung teste oder erforsche. Ist zB eine Klasse notwendig, wenn zwei Variablen und eine Funktion sich wahrscheinlich darum kümmern könnten? (Bedenken Sie, dass dies im Allgemeinen auch Situationen sind, in denen die Geschwindigkeit des Programms am schnellsten ist. Wenn Sie mehr als 25.000.000 Zeitschritte einer Simulation ausführen, möchten Sie, dass dies der Fall ist.)
Vielleicht ist das zu weit gefasst, und wenn ja, entschuldige ich mich, aber wenn ich mir Programmbücher anschaue, scheinen sie oft bei größeren Projekten angesprochen zu werden. Mein Code nicht braucht OOP, und es ist schon verdammt kurz , so ist es nicht wie „oh, aber die Datei wird von tausend Zeilen reduziert werden , wenn wir das tun!“ Ich möchte wissen, wie ich bei diesen kleineren, schnelleren Projekten von vorne anfangen und sauber programmieren kann.
Ich würde gerne genauere Angaben machen, aber je allgemeiner der Rat, desto nützlicher, denke ich. Ich programmiere in Python 3.
Jemand schlug ein Duplikat vor. Lassen Sie mich klarstellen, dass es nicht darum geht, Standard-Programmierstandards direkt zu ignorieren. Es gibt natürlich einen Grund, warum diese Standards existieren. Aber auf der anderen Seite macht es wirklich Sinn, Code zu schreiben, der besagt, OOP, wenn einige Standard-Dinge hätten erledigt werden können, viel schneller zu schreiben gewesen wären und aufgrund der Kürze des Codes eine ähnliche Lesbarkeit gehabt hätten Programm?
Es gibt Ausnahmen. Darüber hinaus gibt es wahrscheinlich Standards für die wissenschaftliche Programmierung, die über reine Standards hinausgehen. Ich frage auch danach. Hier geht es nicht darum, ob normale Codierungsstandards beim Schreiben von wissenschaftlichem Code ignoriert werden sollten, sondern darum, sauberen wissenschaftlichen Code zu schreiben!
Aktualisieren
Ich dachte nur, ich würde eine Art Update "nicht ganz eine Woche später" hinzufügen. Alle Ihre Ratschläge waren äußerst hilfreich. Ich benutze jetzt Versionskontrolle - git mit git kraken für eine grafische Oberfläche. Es ist sehr einfach zu bedienen und hat meine Dateien drastisch aufgeräumt - es müssen keine alten Dateien mehr herumstehen oder alte Codeversionen "nur für den Fall" auskommentiert werden.
Ich habe auch pylint installiert und auf meinem gesamten Code ausgeführt. Eine Datei wurde anfangs negativ bewertet. Ich bin mir nicht mal sicher, wie das möglich war. Meine Hauptdatei begann mit einer Punktzahl von ~ 1,83 / 10 und liegt jetzt bei ~ 9,1 / 10. Der gesamte Code entspricht nun ziemlich gut den Standards. Ich überflog es auch mit meinen eigenen Augen und aktualisierte Variablennamen, die ... ähm ... schief gelaufen waren, und suchte nach Abschnitten, die umgestaltet werden sollten.
Insbesondere habe ich kürzlich auf dieser Website eine Frage zum Refactoring einer meiner Hauptfunktionen gestellt, und jetzt ist sie viel übersichtlicher und viel kürzer: Statt einer langen, aufgeblähten, wenn / sonst gefüllten Funktion ist sie jetzt weniger als die Hälfte die Größe und viel einfacher herauszufinden, was los ist.
Mein nächster Schritt ist die Implementierung von "Unit-Tests". Damit meine ich eine Datei, die ich auf meiner Hauptdatei ausführen kann, die alle darin enthaltenen Funktionen mit assert-Anweisungen und try / excepts anzeigt, was wahrscheinlich nicht der beste Weg ist, dies zu tun, und zu einer Menge doppeltem Code führt. aber ich lese weiter und versuche herauszufinden, wie ich es besser machen kann.
Ich habe auch die Dokumentation, die ich bereits geschrieben habe, erheblich aktualisiert und dem Github-Repository zusätzliche Dateien wie eine Excel-Tabelle, die Dokumentation und ein zugehöriges Dokument hinzugefügt. Es sieht jetzt aus wie ein echtes Programmierprojekt.
Also ... ich denke, das ist alles zu sagen: Danke .