Unser Entwicklungsprozess ist wie folgt
Code die Aufgabe -> jemand anderes QAs Code und Dokumentation -> Aufgabe wird in Trunk zusammengeführt.
Kürzlich hat sich ein Kollege aufgrund von Problemen mit Einrückungen und Leerzeichen geweigert, die Code-Qualitätssicherung zu übergeben.
Hier sind Beispiele für diese Probleme (Syntax ist SAS):
Zusätzliches Leerzeichen:
%if &syserr gt 0 %then %goto err; /*last line of code*/
/* Footer area*/
Zusätzliche weiße Leerzeile und nicht in der Proc-Sortierung eingerückt:
/* End Of header * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
proc sort data = %dataset ;
by id;
run;
%if &syserr gt 0 %then %goto err;
proc sort data = &second_dataset.;
by id;
run;
%if &syserr gt 0 %then %goto err;
Zusätzlicher Leerraum zwischen den Schritten:
/*join all details on for each record*/
proc sort data = &data out = data_srt ;
by &conditions;
run;
%if &syserr gt 0 %then %goto err;
proc sort data = &data2.;
by &conditions.;
run;
%if &syserr gt 0 %then %goto err;
/*cartesian join*/
data new_data;
join data
&data2. ;
by &conditions;
run;
Die Frage ist, ein guter Programmierer zu sein, Ihren Code zu überprüfen und all diese Dinge zu korrigieren, ist das Richtige, oder ist das einfach lächerlich?
Es gibt eine zusätzliche Komplikation: Da wir keine kontinuierliche Integration oder automatisierte Tests haben, ist es dem QAer nicht möglich, diese Probleme schnell zu beheben und den Code festzuschreiben, da das Risiko besteht, dass Semikolon oder ähnliches versehentlich gelöscht wird. (Um fair zu sein, besteht das Risiko für den Erstentwickler, der diese Änderungen vornimmt. Wenn dieser Fehler auftritt, muss er nur behoben und fortgesetzt werden.)
quelle
Antworten:
Ja, das ist die richtige Antwort. Der Einrückungsstil sollte für den gesamten Code konsistent sein.
Ein großer Teil des Wertes einer konsistenten Einrückung besteht darin, dass sie konsistent ist. Auf diese Weise lernen die Leute, es leicht zu lesen, was alle beschleunigt.
Meine Faustregel lautet, dass jeder Einrückungsstil, den das Team wünscht, gut ist, solange er mechanisch angewendet werden kann. Wenn Sie es mechanisch anwenden, müssen Sie weder die Details des Standards kennen noch Zeit mit dem Leerzeichen verbringen.
Die mechanische Formatierung wird auch zu einer weiteren Möglichkeit, Fehler hervorzuheben. Wenn Sie der Meinung sind, dass Sie Code in einen Block eingeschlossen haben, wird das Formatierungswerkzeug den Einzug aufheben und es ist offensichtlich, dass Sie Fehler gemacht haben. Dies erleichtert auch das Refactoring. Auf der trivialen Ebene entfernt Autoformat beim Extrahieren eines Codeblocks in eine Funktion die zusätzliche Einrückung.
Autoformat bedeutet auch, dass Sie, wenn Sie wirklich, wirklich nicht mit dem Standard leben können, den alle anderen verwenden, den Code so formatieren können, wie Sie ihn möchten, und ihn dann vor dem Einchecken neu formatieren können. Da Sie einen Überprüfungsschritt haben, würden Sie dies offensichtlich tun Tun Sie dies vor der Überprüfung, und wenn Sie dies nicht tun, wird es dann abgeholt.
Der GNU-Einzug ist ein Werkzeug, mit dem fast alles automatisch formatiert werden kann. Ich habe eine schnelle Suche durchgeführt und es scheint Tools zu geben , mit denen SAS-Code automatisch formatiert werden kann, aber die SAS-Tools erledigen das nicht für Sie.
quelle
Dies ist absolut richtig. Einer der größten Teile der Codequalität ist die Lesbarkeit. Wenn Sie Ihren Code nicht richtig eingerückt haben und überall zufällige Leerzeichen haben, wird die Lesbarkeit des Codes verringert.
Im Allgemeinen sollte Ihr Entwicklungsteam bei Einrückungen und Leerzeichen dieselben Codequalitätsstandards einhalten. Wenn andere Module in Ihrer Codebasis keine zusätzlichen Leerzeichen zwischen den Schritten einfügen, sollte dies auch nicht der Fall sein (es sei denn, dies verbessert natürlich die Lesbarkeit).
Ich bin kein SAS-Programmierer, aber wenn ich Code überprüfe und das Einrücken völlig aus dem Ruder läuft und es nicht ordentlich aussieht, kommentiere ich es auf jeden Fall zur Nachverfolgung und wenn es wirklich schlecht ist, scheitere ich die Überprüfung nicht.
quelle
Wie Onkel Bob in seinem Buch sagt , ist die Formatierung (sogar Leerzeichen) unglaublich wichtig. Software wird in der Regel viel häufiger gelesen als geschrieben. Daher müssen wir sie sauber und einfach zu lesen machen. Es ist eine Kommunikationsmethode.
Wenn Sie in einem Team arbeiten, legen Sie im Idealfall einen Standard fest, den jeder befolgt. Richten Sie im Idealfall ein Tool ein, das die Aufgabe für Sie erledigt, anstatt den Standard in einzelnen Codeüberprüfungen zu übernehmen. (Ich bin mir nicht sicher, welches Tool für Ihren Fall geeignet ist. So etwas wie Checkstyle für Java oder StyleCop für C #).
Also würde ich mit Ihrem Kollegen chatten und sehen, ob Sie keine Richtlinien für Leerzeichen finden können. Es lohnt sich, sich ein paar Minuten Zeit zu nehmen, um Ihren Code zu bereinigen, wenn dadurch die Dinge auf der ganzen Linie konsistent werden.
quelle
Nach einer Erfahrung vor vielen Jahren beim Lesen eines F-16C / D-Codes, bei dem die Einrückung gebrochen wurde, muss ich sagen, dass es von entscheidender Bedeutung ist, die Einrückung korrekt zu machen.
Es ist so wichtig, dass es nicht von Hand gemacht und nicht von Hand repariert werden sollte. Dafür sind Computer da.
Sie erstellen Computerprogramme, die den Quellcode automatisch neu formatieren können, um ihn dem bevorzugten Stil Ihres Unternehmens anzupassen. Schließen Sie einen von ihnen an Ihr Quellcodeverwaltungssystem an, damit der Code beim Einchecken automatisch in Übereinstimmung gebracht wird.
quelle