[PYTHON] Was ich dachte, nachdem ich ein Jahr lang an dem Projekt "Schreibe keine Kommentare" gearbeitet hatte

zunaechst

Ich bin Ingenieur bei SES. Daher ist es meine Aufgabe, an verschiedenen Websites teilzunehmen und mich weiterzuentwickeln, aber was ich fühlte, als ich in einem Team mit der Idee beschäftigt war, ** überhaupt keine Kommentare zu schreiben ** ~~ und nicht viel Dokumentation ~~ für ein Jahr. Es ist ein Artikel, der geschrieben hat.

Da Java und Python für die Entwicklung verwendet werden, werden Beispiele in diesen Sprachen beschrieben.

Gute Sache

Zuallererst war es gut. Breit geteilt

Es sind zwei Punkte.

Verbessern Sie Ihre Codierungsfähigkeiten

Es gibt keine Kommentare. Beim Schreiben von Code in diesem Zustand sind ** Variablennamen, Methodennamen usw. sehr wichtig. ** Man kann sagen, dass die Codierung selbst nicht so schwierig ist, solange die Benennung ordnungsgemäß erfolgt. In SIer-Projekten gibt es viele Ideen, die ** viele Kommentare schreiben **. Der Code sieht also bisher so aus:

Sample1.java


    /**
     * List<Integer>Wird empfangen und die Liste, aus der gerade Zahlen extrahiert werden, wird zurückgegeben.
     * @param List<Integer>Zielliste verarbeiten
     * @Extraktionsergebnisliste zurückgeben
     */
    private List<Integer> searchListValue(List<Integer> a) {
        List<Integer> resultList = new ArrayList<>();
        for(int target : a) {
            if(a % 2 == 0) {
                //Wenn es durch 2 teilbar ist, speichern Sie es.
                resultList.add(target);
            }
        }
        return resultList;
    }

Wie Sie sehen können, dauert es einige Zeit, ** zu lesen, z. B. `resultList```, das mehrmals im selben Quellcode erscheint und dessen Argumentbezeichnung` a``` lautet. Werde nehmen ** Versuchen wir, den Kommentar zu löschen. Wie wär es damit? Es ist schwer zu verstehen, wenn Sie nicht dem Prozess folgen ...

Sample1.java


    private List<Integer> searchListValue(List<Integer> a) {
        List<Integer> resultList = new ArrayList<>();
        for(int target : a) {
            if(a % 2 == 0) {
                resultList.add(target);
            }
        }
        return resultList;
    }

Diese Art von Code ist ** ohne Kommentare nicht lesbar (das Lesen dauert einige Zeit) **, was ** Code mit Kommentaren ** ist. Es ist also ein großes Wachstum, diese Art von Code nicht mehr zu erstellen war.

Sample1.java


    private List<Integer> filteledListNumber(List<Integer> targetNumList) {
        List<Integer> resultNumList = new ArrayList<>();
        for(int target : targetNumList) {
            if(a % 2 == 0) {
                resultNumList.add(target);
            }
        }
        return resultNumList;
    }

Der obige Code wurde gerade umbenannt, aber ich denke, er ist etwas einfacher zu lesen. ~~ Diese Benennung ist möglicherweise nicht gut ... ~~

Wenn in ** dynamisch typisierten ** Sprachen wie Python und JavaScript TypeScript und Typhinweise nicht verwendet werden können, welcher Datentyp sollte dann im Funktionsnamen ** verarbeitet werden? Schreibt. Je nach Fall

test.py


def add (a, b) :
    return a + b;

def addNumber(a, b) :
    return a + b;

Es war eine Geschichte, die tatsächlich passiert ist, aber ich habe dies getan, da es einen Fall gab, in dem ** ein Fehler aufgetreten ist, als ich einen numerischen Wert an eine Funktion übergeben habe, die Zeichenfolgen verbindet und aufruft.

Die nächste Änderung ist, dass ** jetzt Standardmethoden und Methoden / Funktionen aufruft, die in bekannten Bibliotheken zu finden sind **. Ich habe immer empfohlen, `if``` und` for``` zu verwenden, und ich denke, Methoden wie `stream ()` werden nicht gemocht, erstere Ich habe es oft benutzt, aber es war ein Fehler.

Der Vorteil der Verwendung von Standardmethoden und -bibliotheken besteht darin, dass Sie jetzt überlegen können, ob es eine Methode / Funktion gibt, die dasselbe mit demselben Namen in anderen Sprachen tut.

Und so weiter.

Sample1.java


   private List<Integer> filteledListNumber(List<Integer> targetNumList) {
        List<Integer> resultList = targetNumList.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
        return resultList;
    }

Ich habe auch das Gefühl, dass ** wenn Sie diese Methoden kennen, Sie sie in kürzester Zeit lesen können **, was ein großer Vorteil ist.

Es wurde eine Verbesserung der Schreibfähigkeit festgestellt

Auf den ersten Blick können die Schreibfähigkeiten abnehmen, wenn Sie aufhören, Kommentare zu schreiben, aber Sie müssen viel in das ** Designdokument ** schreiben. (Für mich) Ich habe das Gefühl, dass es viele Menschen gibt, die alleine arbeiten können ** in Projekten, deren Kultur ** keine Kommentare schreiben **, aber ** SES ist eine Mischung aus Steinen. ** ** ** Der Informationsaustausch, der für Neuankömmlinge durchgeführt werden kann, die den Code nicht lesen können, und für diejenigen, die schon lange nicht mehr hergestellt haben, muss nicht nur über den Code, sondern auch über ** Konstruktionsdokumente ** kommuniziert werden.

Ich habe versucht, dieses Designdokument sehr detailliert zu schreiben. ** Der Teil, den ich beim Lesen des Codes nicht verstehen kann, dient dazu, dass ich mir das Designdokument ansehen und herausfinden kann, welche Art von Verarbeitung ich ausführen möchte **.

Dabei haben sich meine Schreibfähigkeiten verbessert.

(Extra Edition) Einfache Wartung

** Ich war an einem Projekt beteiligt, bei dem die Kommentare, die ich hinterlassen habe, nicht geändert wurden und nicht mit dem aktuellen Prozess vereinbar waren **, aber ich habe Kommentare im Vergleich zu den damaligen Schwierigkeiten geschrieben. Ich habe das Gefühl, dass es einfacher ist, es nicht zu haben.

Ärger

Von hier an ist es ein Problem. Klassifizierung ist

――Es kann schwierig sein, den Code der Person zu lesen, die das Projekt verlassen hat.

Es sind zwei Punkte.

Es kann schwierig sein, den Code der Person zu lesen, die den Fall verlassen hat

Viele der Projekte, an denen ich bei SES teilgenommen habe, hatten viel Verkehr. ** Ich erinnere mich, dass der Code der Person, die ihn unterstützt hat, eine Java-Logik auf hoher Ebene war und sehr schwer zu lesen war. ** ** **

Wenn sich diese Situation akkumuliert, ** kann jeder sie beibehalten, wenn er den Code richtig gelesen hat, aber er brennt und es ist kein Platz dafür. ** Das passierte. In einem solchen Fall möchte ich so viel wie möglich einen Kommentar hinterlassen.

Die Qualität schwankt je nach Niveau der verantwortlichen Person

Nicht kommentieren. Im Projekt gab es keine ** Dokumentation oder Codeüberprüfung des gesamten Systems. Natürlich gibt es auch Kodierungsstandards. ** Mit anderen Worten, es bestand darin, alle Leistungen in die Verantwortung der verantwortlichen Person zu stellen **.

In diesen Fällen halte ich die Kommentare für gültig.

--Newcomer-Codierung zum ersten Mal ―― 5. Jahr ich

Jedes der von jedem von ihnen geschaffenen Artefakte hatte seinen eigenen Geschmack, so dass es einen Unterschied auf einer Ebene gab, die eine völlig andere Sprache zu sein schien. ** Ich möchte zu solchen Zeiten Informationen auf Japanisch teilen! Ich fühlte mich stark. ~~ Ich habe ein Feuer gelöscht, weil ich es nicht teilen konnte. ~~

Sample1.java


//Rookies Code
    private List<Integer> searchListValue(List<Integer> a) {
        List<Integer> resultList = new ArrayList<>();
        for(int target : a) {
            if(a % 2 == 0) {
                resultList.add(target);
            }
        }
        return resultList;
    }

//Mein Code
   private List<Integer> filteledListNumber(List<Integer> targetNumList) {
        List<Integer> resultList = targetNumList.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
        return resultList;
    }

//Veteranencode
   private List<Integer> filteledListNumber(List<Integer> targetNumList) {
        return targetNumList.stream().filter(i -> i % 2 == 0).collect(Collectors.toList());
    }

  

All dies ist der gleiche Prozess, jedoch mit einem anderen Ansatz. Dieser Unterschied in der Vorgehensweise ** tritt in allen Quelldateien auf. ** Wenn Sie also eine Kultur schaffen möchten, in der Sie keine Kommentare schreiben, ** müssen Sie sich auf andere Prozesse konzentrieren, sonst wird das Limit eines Tages kommen. ** ** **

Am Ende

Es ist kurz, aber das war's. Es ist ein persönlicher Eindruck, aber der Kommentar ist

Ich denke, dass es effektiv ist, in einem solchen Fall zu beschreiben.

Recommended Posts

Was ich dachte, nachdem ich ein Jahr lang an dem Projekt "Schreibe keine Kommentare" gearbeitet hatte
Was ich dachte und lernte, 100 Tage an einer Programmierschule zu studieren
Verändert TensorFlow das Bild des tiefen Lernens? Was ich dachte, nachdem ich ein wenig berührt hatte
Was soll ich denn mit der Python-Verzeichnisstruktur machen?
Was ist die XX-Datei im Stammverzeichnis eines beliebten Python-Projekts?
Was Java-Benutzer davon gehalten haben, die Go-Sprache für einen Tag zu verwenden
Was ich an 1/30 Tagen bei hackerrank gelernt habe.
Ich hielt eine Posterpräsentation auf der 36. Konferenz der Medical Informatics Association
Ich habe ein wenig über die Klasse recherchiert
Die Welt veränderte sich, als ich ein großes Python-Projekt (Django) auf Sourcetrail (Linux) eröffnete.
Ich habe mir den Inhalt von sklearn (scikit-learn) angesehen. (1) ~ Was ist mit der Implementierung von CountVectorizer? ~