Legacy Fortran Seifenkiste
Ich habe eine ganze Weile geholfen, eine alte Fortran-Codebasis zu pflegen / zu verbessern, und denke größtenteils, dass Sixletter-Variablen auf dem Geld stehen. Dieser Rat ist jedoch eher technisch; Eine schwierigere Aufgabe besteht darin, "bewährte Verfahren" umzusetzen.
- Legen Sie einen erforderlichen Codierungsstil und Codierungsrichtlinien fest.
- Fordern Sie eine Codeüberprüfung (von mehr als nur dem Codierer!) Für alles an, was an die Codebasis gesendet wird. (Die Versionskontrolle sollte an diesen Prozess gebunden sein.)
- Beginnen Sie mit dem Erstellen und Ausführen von Komponententests. ebenso Benchmark- oder Regressionstests.
Dies mag heutzutage nach offensichtlichen Dingen klingen, aber auf die Gefahr einer Überverallgemeinerung hin behaupte ich, dass die meisten Fortran-Code-Shops eine tief verwurzelte Kultur haben, einige begannen, bevor der Begriff "Software-Engineering" überhaupt existierte, und dass im Laufe der Zeit das dominiert ist "Jetzt erledigen". (Dies gilt keineswegs nur für Fortran-Geschäfte.)
Fallstricke umarmen
Aber was tun mit einer bereits vorhandenen, grottigen alten Legacy-Codebasis? Ich mit Joel Spolsky vereinbaren Umschreiben nicht . Meiner Meinung nach weist sixlettervariables jedoch auf die zulässige Ausnahme hin: Verwenden Sie Software-Tools, um zu besseren Fortran-Konstrukten überzugehen . Vieles kann von Code-Analysatoren ( FORCHECK ) und Code-Umschreibern ( plusFORT ) abgefangen / korrigiert werden . Wenn Sie es von Hand tun müssen, stellen Sie sicher, dass Sie einen dringenden Grund haben. (Ich wünschte, ich hätte einen Hinweis auf die Anzahl der Softwarefehler zur Hand, die durch das Beheben von Softwarefehlern entstanden sind. Das ist demütig. Ich denke, eine solche Statistik befindet sich in der Expert C-Programmierung .)
Die wahrscheinlich beste Offensive beim Gewinn des Fortran-Fallstrickspiels ist die beste Verteidigung: Sie kennen die Sprache ziemlich gut. Um dieses Ziel zu erreichen, empfehle ich ... Bücher!
Fortran Dead Tree Library
Ich hatte im Laufe der Jahre nur bescheidene Erfolge als "QA-Nörgler", aber ich habe festgestellt, dass Bildung manchmal versehentlich funktioniert und dass eines der einflussreichsten Dinge ein Nachschlagewerk ist, das jemand zur Hand hat. Ich liebe und kann es nur empfehlen
Fortran 90/95 für Wissenschaftler und Ingenieure , von Stephen J. Chapman
Das Buch ist sogar gut mit Fortran 77, da es spezifisch die Konstrukte identifiziert, die nicht verwendet werden sollten, und die besseren Alternativen bietet. Tatsächlich handelt es sich jedoch um ein Lehrbuch, dem die Puste ausgehen kann, wenn Sie wirklich wissen möchten, worauf es bei Fortran 95 ankommt, weshalb ich es empfehle
Fortran 90/95 Erklärt von Michael Metcalf & John K. Reid
Seien Sie gewarnt, dass es nicht die klarste Schrift ist, aber der Schleier löst sich, wenn Sie wirklich das Beste aus einer neuen Fortran 95-Funktion herausholen möchten.
Ich habe es genossen, mich auf die Probleme zu konzentrieren, von Fortran 77 nach Fortran 90 zu wechseln
Migration nach Fortran 90 von Jim Kerrigan
Aber das Buch ist jetzt vergriffen. (Ich verstehe O'Reillys Verwendung von Safari einfach nicht. Warum ist nicht jedes ihrer vergriffenen Bücher verfügbar?)
Zum Schluss nominiere ich den Erben des wunderbaren Klassikers Software Tools
Klassisches FORTRAN von Michael Kupferschmid
Dieses Buch zeigt nicht nur, was man mit "nur" Fortran 77 machen kann, sondern es spricht auch über einige der subtileren Probleme, die auftreten (z. B. sollte man die EXTERNE Deklaration verwenden oder nicht). Dieses Buch deckt nicht genau den gleichen Bereich ab wie "Software Tools", aber es sind zwei der drei Fortran-Programmierbücher, die ich als "Spaß" bezeichnen würde ... ( hier ist das dritte ).
Verschiedene Ratschläge, die für fast jeden Fortran-Compiler gelten
- Es gibt eine Compileroption zum Erzwingen des IMPLICIT NONE-Verhaltens, mit der Sie Problemroutinen identifizieren können, ohne sie zuerst mit der IMPLICIT NONE-Deklaration zu ändern. Dieser Ratschlag erscheint erst nach dem ersten Mal sinnvoll, wenn ein Build-Bomben aufgrund eines IMPLICIT NONE-Befehls in eine Legacy-Routine eingefügt wird. (Was? Deine Codeüberprüfung hat das nicht verstanden? ;-)
- Es gibt eine Compiler-Option zur Überprüfung der Array-Grenzen, die beim Debuggen von Fortran 77-Code hilfreich sein kann.
- Fortran 90-Compiler sollten in der Lage sein, fast den gesamten Fortran 77-Code und sogar älteren Fortran-Code zu kompilieren. Aktivieren Sie die Berichtsoptionen auf Ihrem Fortran 90-Compiler, führen Sie Ihren Legacy-Code durch, und Sie haben einen guten Start in die Syntaxprüfung. Einige kommerzielle Fortran 77-Compiler sind tatsächlich Fortran 90-Compiler, die im Fortran 77-Modus ausgeführt werden. Daher ist dies möglicherweise eine relativ triviale Option für alle Build-Skripte.