Seien Sie zwingend!!
TL;DR: Funktionen mit unklaren Namen verbergen die Absicht und verwirren die Leser. Verwenden Sie beschreibende, handlungsorientierte Namen.
Mit generischen Begriffen benannte Funktionen zwingen den Leser, in die Implementierung einzutauchen, um ihr Verhalten zu verstehen.
Das verschwendet Zeit und erhöht die Fehlerwahrscheinlichkeit.
Die Benennung wird noch wichtiger, wenn Sie mit eigenständigen Funktionen arbeiten, bei denen der Klassenname keinen zusätzlichen Kontext bietet.
Dieses Problem steht in direktem Zusammenhang mit dem Tell, Don't Ask-Prinzip.
Anstatt mehrdeutiges Verhalten aufzudecken, das den Aufrufer dazu zwingt, auf die Funktionalität zu schließen, vermitteln imperative Namen die genaue Aktion und leiten den Leser an, ohne den Code untersuchen zu müssen.
Wenn Sie Funktionen beschreibend benennen, vermeiden Sie unnötiges Rätselraten und richten sich nach diesem Prinzip.
public String dateFormatting(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void load() { System.out.println("Loading..."); }
public String formatDate(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void loadUserPreferences() { System.out.println("Loading user preferences..."); }
[X] Handbuch
Sie können diesen Geruch erkennen, indem Sie Funktionsnamen überprüfen, die vage Begriffe wie do, run, process, load usw. enthalten .
Automatisierte Linters können diese Muster kennzeichnen oder Funktionen mit übermäßig generischen Namen hervorheben.
[X] Anfänger
Funktionsnamen sollten eine klare Eins-zu-eins-Entsprechung zwischen ihrem Namen und ihrer Funktionalität herstellen.
Das Durchbrechen dieser Bijektion zwingt Entwickler dazu, Codedetails auf Kontext zu untersuchen, was Debugging, Überprüfungen und Erweiterungen verlangsamt.
KI-Tools generieren manchmal generische Funktionsnamen, ohne Ihre Domäne zu verstehen.
Geben Sie bei der Verwendung von KI an, dass Funktionsnamen beschreibend und handlungsorientiert sein müssen.
KI-Modelle können dabei helfen, mehrdeutige Namen zu erkennen, indem sie Funktionssignaturen mit vordefinierten Best Practices für die Benennung vergleichen.
Die Kombination von KI mit manueller Codeüberprüfung liefert die besten Ergebnisse.
Denken Sie daran: KI-Assistenten machen viele Fehler
Without Proper Instructions | With Specific Instructions |
---|---|
ChatGPT | ChatGPT |
Claude | Claude |
Perplexity | Perplexity |
Copilot | Copilot |
Gemini | Gemini |
Funktionsnamen sind nicht nur Bezeichnungen; es handelt sich um Verträge mit dem Leser.
Mehrdeutige Namen brechen diesen Vertrag und führen zu Verwirrung.
Beschreibende, handlungsorientierte Namen vereinfachen die Kommunikation und erleichtern die Wartung und Erweiterung Ihres Codes.
Code Smells sind meine Meinung.
Foto von britishlibrary auf Unsplash
Ein Funktionsname sollte ein Verb oder eine Verbphrase sein und muss es auch sein
sinnvoll
Robert C. Martin
Dieser Artikel ist Teil der CodeSmell-Reihe.
Das obige ist der detaillierte Inhalt vonCode-Geruch – Namen nicht zwingender Funktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!