Guten Abend. Ich bin jetzt in einem Legacy-Systemwartungsteam mit VB auf der Vorderseite, Java 1.4 auf dem Server und CVS auf dem Versionsverwaltungstool (aber ich sage nicht, dass es die Kontrolle hat). Wir sind hier.
Es ist nicht ungewöhnlich, eine Anfrage vom Helpdesk zu erhalten, der eine Benutzeranfrage erhält und den Code zur Untersuchung liest. Dieses Mal fragte ich zunächst: "Warum habe ich diesen Fehler erhalten, als ich diese Art von Operation durchgeführt habe?", Und ich las den VB-Code etwas ungewöhnlich.
Da ich fast keine VB-Erfahrung habe, habe ich mir den Code vorerst angesehen, aber es war auch "Ich spreche nicht über die Sprache ...". Wenn Sie sich jedoch nur beschweren, scheint es, dass jemand irgendwo wütend sein wird, wenn Sie nicht produktiv sind, und es wird nützlich sein, um erneut zu bestätigen, einschließlich der Selbstmahnung, dass "dies schwer zu verstehen ist", so dieser Artikel Ich würde gerne schreiben.
Jeder ist keine große Sache, und es scheint, dass ich es selbst tun kann, aber ich habe erneut erkannt, dass die Lesbarkeit und Wartbarkeit schrecklich sein wird, wenn sie sich überschneiden.
Es gibt kein Anforderungsdefinitionsdokument, Konstruktionsdokument, Testcode usw., und niemand weiß, "was das Richtige ist", weder der Benutzer, der die Anfrage gestellt hat, der Helpdesk, der die Anfrage erhalten hat, noch die Mitglieder vor Ort. .. Niemand weiß, ob der Fehler korrekt ist. Sie suchen also wirklich nur nach "Warum haben Sie diesen Fehler erhalten?" (Zu diesem Zeitpunkt schien es viel Spaß zu machen)
Es gibt keine Ausgabe, die im Protokoll der Anwendung nützlich zu sein scheint, und es gibt keine Umgebung, die wie Visual Studio debuggt werden kann. Es scheint, dass die Umgebung verwendet werden kann, wenn Sie sich bewerben und die Erlaubnis erhalten, aber ich erinnere mich, dass es 3 Wochen gedauert hat, bis die Benutzer-ID der internen Umgebung beantragt und abgerufen wurde. Daher habe ich den Quellcode vorerst mit einem Texteditor geöffnet Ich werde es lesen.
Es scheint, dass die anfängliche Entwicklung vor ungefähr 10 Jahren war, und ich höre Gerüchte, dass es zu dieser Zeit eine große Flamme gab. Ich höre, dass jeder, der an der anfänglichen Entwicklung beteiligt war, geschweige denn die Person, die diese Quelle geschrieben hat, das Unternehmen verlassen hat. Nun, ich habe ein schlechtes Gefühl.
Die Methoden, die Sie hauptsächlich lesen sollten, sind ungefähr 600 Zeilen bzw. ungefähr 200 Zeilen. Nun, es ist immer noch eine kurze Kategorie für mich, der auf dem Gebiet war, auf dem Tausende von Methodenreihen überfüllt sind, weil es verboten ist, Methoden herzustellen ...! (Es gab jedoch viele Kommentare und Dokumente an der Stelle von Tausenden von Zeilen, und viele Mitglieder haben die Datenstruktur genau verstanden.)
Die linke Seite des Zentrums war Sukasuka. Ich mag flache Nester, es sei denn, es gibt einen bestimmten Grund, und ich konnte mir keinen Grund vorstellen, warum ich sie 12 Schichten machen musste ...
boolean ariFlg;
boolean flg;
boolean checkFlg;
boolean okFlg;
Selbst wenn der Variablenname etwas lang ist, ist es leichter zu lesen, wenn man sich leichter vorstellen kann, wann das Flag für das, was wahr sein wird. Ich möchte, dass Sie zumindest einen Kommentar hinzufügen. Übrigens wurden einige Flaggen nirgendwo verwendet.
if (!flg || okFlg && !checkflg) {
if (!ariFlg) {
}
}
Natürlich handelt es sich tatsächlich um eine 12-fache Verschachtelungs- und 600-Zeilen-Methode, daher ist es viel komplizierter. Persönlich mag ich es nicht, Verweigerung wahllos zu verwenden oder Flags zu kombinieren, die hier und da für verschiedene Zwecke verwendet werden, da dies sehr verwirrend sein kann.
for (int k = 0; k < list.size(); k++) {
for (int h = 0; h < list.size(); h++) {
for (int g = 0; g < keys.size(); g++) {
}
}
}
Die Schleifenzähler sind nicht in alphabetischer Reihenfolge und sie scheinen kein Akronym für irgendetwas zu sein, und sie können Endbedingungen haben oder nicht.
int ii;
for (int i = 0; i < list.size(); i++) {
if (Bedingter Ausdruck) {
ii = i;
map.put(ii, i);
}
}
i und ii ... Ich denke, es ist ein verschachtelter Schleifenprozess, aber der Schlüssel / Wert der Karte scheint ii und i zu sein. was ist das?
int mainasuIchi = -1;
Ich dachte nicht, dass es "Mainasuichi" in römischen Schriftzeichen war, aber als ich es zum ersten Mal sah, dachte ich, es sei eine Art englisches Wort. Ich war besorgt, dass es keine Konstante war und -2 oder -3 nicht enthalten würde, aber als Ergebnis war es nicht. Es war -1 bis zum Ende.
arrLst.put(key, value); //arrLst ist ein HashMap-Typ. Natürlich ist dieser Kommentar nicht verfügbar.
Ich denke, es ist einfacher zu verstehen, wenn es weniger Variablen gibt, über die Sie sich in einer Methode Gedanken machen müssen. Es ist eine Methode mit Hunderten von Zeilen, und ich kann ohne Spezifikationen, Designdokumente und eine Debugging-Umgebung nicht mithalten ... Ist ein Superingenieur nicht so ein Streit?
int[] checkNum = {0, 1, 2, 3};
int[] kubun = {1, 2, 3};
Vielmehr freue ich mich, etwas zu treffen, mit dem ich vertraut bin.
String maccingMsg;
Wenn etwas zu etwas passt, können Sie hier eine Nachricht einfügen. Jeder kann Rechtschreibfehler machen. Als ich jedoch darauf stieß, nachdem ich verschiedene Verwirrungsvariablen gesehen hatte: "Ist das nicht nur eine Rechtschreibfehler, gibt es keine passende Msg? Ich glaube, ich habe dies gemacht, um einen anderen Typ darüber zu erstellen?" Ich machte mir Sorgen und suchte den Quellcode mit Übereinstimmung.
//Auf 0 setzen
//TU mehr
//Es ist ein Fehler
//Bestätigen
//Anzahl
//prüfen
Warum? was? Ich weiß es nicht, deshalb habe ich Angst, in das nächste Nest einzutauchen. Natürlich ist es eine kompakte Methode, es ist leicht vorstellbar, dass Sie dies in einer Klasse oder Methode überprüfen, es ist Ihr eigenes Werkzeug, und ich denke, es gibt einige Kommentare wie diese. Ich denke jedoch, dass es sicher ist, dies in einem komplizierten, groß angelegten System zu vermeiden, in dem Mitglieder ersetzt werden, da es sich um ein Release-Produkt handelt und bekannt ist, dass es noch viele Jahre gewartet wird. Ich habe die Erfahrung gemacht, in Flammen zu stehen und mich zu beeilen, "es trotzdem zu bewegen", aber wenn Sie ein wenig auf die Kommentare und Variablennamen achten, werden Sie gerettet, wenn es einen Fehler gibt, und infolgedessen wird er sich nicht verbreiten.
//Prozess, wenn Variable a 10 und Variable b 20 ist
if (a == 10) {
//wird bearbeitet
}
Die Variable b wird nicht beurteilt. Das Verschachteln ist noch im Gange. Werden wir es später tun? Oder bedeutet das, dass die Variable b 20 ist? Ist der Kommentar falsch? Ich frage mich, ob es einen Fehler gibt, dass er nicht wie kommentiert implementiert wurde und die Variable b nicht überprüft wurde.
//OK, wenn es nur ein OK gibt
Ich verstehe, ich verstehe. Vielleicht ist es in Ordnung, etwas zu überprüfen und ob es eines gibt, das in Ordnung ist. Ich liege nicht falsch. Ich liege nicht falsch.
for (Bedingter Ausdruck) {
//Wenn flg wahr ist, wird die Ausführung ausgeführt
if (!flg) {
continue;
}
//wird bearbeitet
}
"Wenn flg falsch ist, wird es mit! Negativ sein, also wird es wahr sein und fortfahren, und wenn es wahr ist! Flg ist falsch, also wird die Verarbeitung ausgeführt, ohne die if-Anweisung einzugeben, dh der Kommentar ist korrekt ... richtig?" Sie werden in Qualen denken. Wenn dies Nest, Nest, Nest ... ist, dann ist dein Kopf voll und du wirst alles rauswerfen und ein Nickerchen in einer Wiesenhängematte machen wollen.
In einem Projekt, an dem ich für einen Moment teilgenommen habe, dachte ich einmal, dass es sehr gut ist, weil das Wiki sagte: "Ein Fehler ist das Ergebnis der verantwortlichen Person, die zu dieser Zeit ihr Bestes gab. Beschuldigen Sie es nicht." .. Das erste Unternehmen, in das ich eintrat, war die interne Schulung. Ich stellte hauptsächlich interne Produkte und Auftragsprojekte her. Wenn ich jedoch ein Unternehmen wäre, das die Schulung nicht für mich durchgeführt hat und plötzlich vom Kunden übersprungen wurde und es keine Nachverfolgung oder Überprüfung gab ... Ich hätte möglicherweise schlechteren Code geschrieben und bereits einen Job ohne Bezug zur IT ausgeführt vielleicht. Es war schmerzhaft, als ich es las, aber dieses Mal stieß ich auf diese Art von Code, der mich dazu brachte, einen Artikel zu schreiben, und es gab mir auch die Möglichkeit, auf meine eigene Weise über Lesbarkeit nachzudenken. Seien wir produktiv!
Recommended Posts