[JAVA] Wie man Variablen benennt 7 Auswahl von Unbehagen

Einführung

Ich habe aufgrund meiner Arbeit viele Möglichkeiten, Quellen zu lesen, die von anderen geschrieben wurden (hauptsächlich Quellen von Lieferanten), aber ich fühle mich oft unwohl, wenn es darum geht, Variablen zu benennen, was eine der Ursachen für Schwierigkeiten beim Lesen ist. Ich habe versucht, diejenigen aufzulisten, die teuer waren.

Natürlich möchte ich auch vorsichtig mit der Quelle sein, die ich geschrieben habe, damit ich später nicht verwirrt werde.

Die Muster sind unten aufgeführt.

1. Ausgelassen

× res -> 〇result △ prop -> 〇property × pat -> 〇pattern × enz -> 〇enzyme × idx-> 〇 Index (hinzugefügt am 30.7.2019) × tbl-> 〇 Tabelle (Hinzugefügt am 24.08.2019)

Ich wusste es früher nicht, als die Maschinenressourcen begrenzt waren, und heutzutage ist die Lesbarkeit stark eingeschränkt, so dass es wenig Verdienst gibt, es wegzulassen. "prop" ist nicht so unangenehm, aber unter dem Gesichtspunkt der Konsistenz ist "property" weniger unangenehm. Für "enz" denke ich, dass es in Ordnung ist, (wahrscheinlich) wichtige Wörter wegzulassen, auf die Sie selten stoßen.

2. Subtile Rechtschreibfehler

× propaty -> 〇property × canceld -> 〇canceled × spacified -> 〇specified

Obwohl sich "Propaty" von Anfang an seltsam anfühlte, war es kein häufiger Fehler, und es dauerte lange, bis ich bemerkte, dass es falsch geschrieben war, und als ich es bemerkte, war meine Brust erfrischt. Ich verstehe, dass ich "annullieren" zu einer früheren Form machen möchte, aber ich möchte, dass Sie es richtig schreiben. Viele der jüngsten Entwicklungstools weisen auch auf Rechtschreibfehler hin, sodass Sie sie verwenden können.

3. Es gibt keine Spezifität und es ist schwierig, den Zweck zu verstehen

× count -> 〇progressCount × max -> 〇progressCountMax etc

Ich denke, dass der Bereich eng sein kann, beispielsweise in einer kleinen Schleife oder Funktion, aber wenn Sie ihn für eine Instanzvariable einer großen Klasse verwenden, müssen Sie beim Lesen des relevanten Teils "Welche Variable" etwas konkreter schreiben Es wird sein ".

Dies gilt nicht nur für primitive Typen, sondern auch für Klassentypvariablen. Beispiel: Als Name der Klassentypvariablen der CalculationResult-Klasse

× result -> 〇calculationResult

Es sollte konkret sein. Bei ersteren können Sie sich nicht sofort vorstellen, wie das Ergebnis aussehen wird.

4. Die Bedeutung ist umgekehrt

Es ist in Ordnung, ihm einen booleschen Variablennamen mit dem Namen isValid zu geben, aber er sollte "true" enthalten, wenn er nicht gültig ist, und "false", wenn er gültig ist. Es kann nur gesagt werden, dass es nicht in Frage kommt. Ich bin sogar überzeugt, wenn dies passiert ...

boolean isValid = false;

if(!inputFile.exists()){
    isValid = true;
}

if(isValid){
  printUsage();
}

Nachtrag 2019/7/30 Zu einem späteren Zeitpunkt hatte ich die Möglichkeit, mir die Originalquelle anzusehen, die anstelle von isValid exitFlag hieß. Es scheint eine Pointe zu sein, dass ich den Namen geändert habe, um ihn für einen anderen Zweck zu verwenden, aber die Bedeutung von wahr / falsch nicht geändert habe. Der ursprüngliche Entwickler und der Modifikator sind unterschiedliche Personen. Das übliche Anti-Muster. Junge, halte deinen Standpunkt hoch.

5. Ich kann mir den Typ nicht vorstellen

Da ich die Quelle oft lese, während ich mir vorstelle, wie die Daten verarbeitet werden, halte ich es für wünschenswert, den Zweck und den Typ auf einen Blick anhand des Variablennamens zu kennen. Neben primitiven Typen gibt es Arrays, Listen, Karten usw., die häufig in der Datenverarbeitung verwendet werden. Liste ist XX Liste (XX ist der Name, der darstellt, was in Liste gespeichert ist), Karte ist XX △△ Karte (XX ist der Name, der den Schlüssel der Karte darstellt, △△ ist der Name, der den Wert der Karte darstellt) Es fühlt sich leicht zu verstehen an, wenn es angebracht ist.

Das folgende Beispiel wird für den Kartentyp angegeben.

× names -> 〇 nameValidMap

Es stellt sich heraus, dass letzteres zumindest eine Karte ist, auf der die Entsprechung zwischen dem Namen und etwas gespeichert ist, aber erstere sagt es überhaupt nicht. Ich habe es als Liste missverstanden und als ich es gelesen habe? Plötzlich kehre ich zum definierten Teil zurück und wiederhole die Bestätigungsschleife.

6. Ich kann mir keinen oder mehrere vorstellen

Obwohl es dem vorherigen Abschnitt ähnlich ist, ist es wichtig zu verstehen, ob es sich bei der Variablen um "einzelne" Daten oder "mehrere" Daten handelt, wenn Sie dem Datenverarbeitungsfluss folgen. Daher ist es viel einfacher zu verstehen, ob es sich um einzelne Daten handelt, und wenn es sich um eine Variable handelt, die mehrere Daten wie ein Array oder eine Liste speichern kann, sollte sie in mehrfacher Form vorliegen.

7. Ich habe den idiomatischen Namen absichtlich geändert

Es ist eine bekannte Hauptfunktion in Java. Es ist so geschrieben.

public static void main(String[] option){
    
}

Fühlst du dich unwohl? Ja, der Name des Arguments der Hauptfunktion wird in einen anderen Namen geändert, obwohl der Marktpreis als "argv" festgelegt ist.

Die Argumente der Hauptfunktion enthalten die "Argumente" des Programms, nicht die "Optionen" (auch wenn sie als Ergebnis gespeichert werden).

Ich habe mich ziemlich gefragt, wo diese Variable namens Option definiert wurde. Wenn Sie den Namen ändern möchten, den Sie idiomatisch verwenden, benötigen Sie einen sehr positiven Grund.

abschließend

Es gibt viele andere Unannehmlichkeiten wie "Einfügen von Leerzeilen", "Umfangsvariablen", "Schreiben von Kommentaren", "Verarbeitungsreihenfolge" usw. Ich möchte es in zusammenfassen.

Recommended Posts

Wie man Variablen benennt 7 Auswahl von Unbehagen
So benennen Sie Variablen in Java
[Rails] So ändern Sie den Spaltennamen der Tabelle
Verwendung von Java-Variablen
Verwendung von setDefaultCloseOperation () von JFrame
[Verarbeitung × Java] Verwendung von Variablen
So legen Sie die IP-Adresse und den Hostnamen von CentOS8 fest
Grundlagen der Java-Entwicklung ~ Schreiben von Programmen (Variablen und Typen) ~
So ändern Sie den App-Namen in Rails
[java] Zusammenfassung des Umgangs mit char
Zusammenfassung zum Schreiben von Anmerkungsargumenten
So bestimmen Sie die Anzahl der Parallelen
[Java] [Maven3] Zusammenfassung der Verwendung von Maven3
So sortieren Sie eine Liste von SelectItems
Verwendung von Umgebungsvariablen in RubyOnRails
[Spring MVC] Übergeben von Pfadvariablen
Zusammenfassung der Auswahl von Elementen in Selen
JDBC Versprechen und Schreibbeispiel
So finden Sie die Ursache des Ruby-Fehlers
graphql-ruby: So erhalten Sie den Namen der Abfrage oder Mutation im Controller Hinweis
[java] Zusammenfassung des Umgangs mit Zeichenketten
Passen Sie an, wie der Inhalt von Recyclerview aufgeteilt wird
[Bcrypt] So brechen Sie die Anwesenheit ab: true für has_secure_password
[Java] Zusammenfassung, wie Lambda-Ausdrücke weggelassen werden
Wie komme ich zum heutigen Tag?
Ausgabe der Verwendung der Slice-Methode
[Swift UI] So deaktivieren Sie ScrollsToTop von ScrollView
Verwendung von JQuery in Rails 6 js.erb
So zeigen Sie das Ergebnis des Ausfüllens des Formulars an
So legen Sie Umgebungsvariablen in der Eigenschaftendatei der Spring-Boot-Anwendung fest
So erstellen Sie Elementvariablen mit dem JPA-Modell
So geben Sie den JavaScript-Index für die Anweisung an
So erhalten Sie den Klassennamen des Arguments von LoggerFactory.getLogger, wenn Sie SLF4J in Java verwenden
Einbetten von JavaScript-Variablen in HTML mit Thymeleaf
[Java] So erhalten Sie die URL der Übergangsquelle
So löschen / aktualisieren Sie das Listenfeld von OneToMany
So wenden Sie HandlerInterceptor auf das http-Inbound-Gateway von Spring Integration an
Wie schreibe ich Scala aus der Perspektive von Java
[Java] Arten von Kommentaren und wie man sie schreibt
[Rails, JS] So implementieren Sie die asynchrone Anzeige von Kommentaren
[Java] So extrahieren Sie den Dateinamen aus dem Pfad
[Ruby on Rails] So ändern Sie den Spaltennamen
[Java] So erhalten Sie den Maximalwert von HashMap
Ich möchte den Namen des Posters des Kommentars anzeigen
Stand April 2018 So installieren Sie Java 8 auf einem Mac
So setzen Sie BuildConfig des Bibliotheksprojekts (Moduls) auf Debug
Verwendung von CommandLineRunner im Spring Batch von Spring Boot
Zusammenfassung der Java-Kommunikations-API (1) Verwendung von Socket
[Android] So erhalten Sie die Einstellungssprache des Terminals
Zusammenfassung der Java-Kommunikations-API (3) Verwendung von SocketChannel
So verhindern Sie, dass editTextPreference von android PreferenceFragmentCompat beschädigt wird
Zusammenfassung der Java-Kommunikations-API (2) Verwendung von HttpUrlConnection
[Rails] So erhalten Sie den Inhalt starker Parameter