paint-brush
Kode Reuk 285 - Hoe om nie-noodsaaklike funksies reg te steldeur@mcsee
286 lesings

Kode Reuk 285 - Hoe om nie-noodsaaklike funksies reg te stel

deur Maximiliano Contieri3m2025/01/11
Read on Terminal Reader

Te lank; Om te lees

Funksies met onduidelike name verberg bedoeling en verwar lesers. Gebruik beskrywende, aksie-georiënteerde name.
featured image - Kode Reuk 285 - Hoe om nie-noodsaaklike funksies reg te stel
Maximiliano Contieri HackerNoon profile picture
0-item

Wees noodsaaklik!!

TL;DR: Funksies met onduidelike name verberg bedoeling en verwar lesers. Gebruik beskrywende, aksie-georiënteerde name.

Probleme

  • Onduidelike funksie doel
  • Verhoogde kognitiewe lading
  • Misleidende konteks
  • Verminderde leesbaarheid
  • Moeilike samewerking
  • Versteekte funksionaliteit

Oplossings

  1. Gebruik aksie-georiënteerde werkwoorde
  2. Maak name beskrywend
  3. Gee die doel van die funksie weer
  4. Vermy generiese terme
  5. Verskaf betekenisvolle konteks
  6. Druk enkele verantwoordelikheid duidelik uit
  7. Pas aksie by uitkoms

Refaktorerings

https://hackernoon.com/improving-the-code-one-line-at-a-time

Konteks

Funksies wat met generiese terme genoem word, dwing lesers om in die implementering te duik om hul gedrag te verstaan.


Dit mors tyd en verhoog die kans op foute.


Naamgewing word selfs meer krities wanneer daar met selfstandige funksies gewerk word, waar die klasnaam nie addisionele konteks verskaf nie.


Hierdie kwessie hou direk verband met die Vertel, moenie vra-beginsel nie .


In plaas daarvan om dubbelsinnige gedrag aan die kaak te stel wat die oproeper dwing om funksionaliteit af te lei, dra imperatiewe name die presiese aksie oor en lei die leser sonder om die kode te inspekteer.


Wanneer jy funksies beskrywend benoem, skakel jy onnodige raaiwerk uit en pas jy by hierdie beginsel aan.

Voorbeeld kode

Verkeerd

 public String dateFormatting(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void load() { System.out.println("Loading..."); }

Reg

 public String formatDate(Date date) { return new SimpleDateFormat("yyyy-MM-dd").format(date); } public void loadUserPreferences() { System.out.println("Loading user preferences..."); }

Opsporing

  • [x] Handleiding

Jy kan hierdie reuk opspoor deur funksiename te hersien wat vae terme soos doen , hardloop , verwerk , laai , ens.


Outomatiese linters kan hierdie patrone vlag of funksies met té generiese name uitlig.

Merkers

  • Naamgewing

Vlak

  • [x] Beginner

Waarom die Bijection belangrik is

Funksiename moet 'n duidelike een-tot-een ooreenstemming tussen hul naam en funksionaliteit skep.


Deur hierdie Bijection te breek, dwing ontwikkelaars om kodebesonderhede vir konteks te ondersoek, wat ontfouting, resensies en uitbreidings vertraag.

AI Generasie

KI-nutsgoed genereer soms generiese funksiename sonder om jou domein te verstaan.


Wanneer u KI gebruik, spesifiseer dat funksiename beskrywend en aksiegeoriënteerd moet wees.

KI-opsporing

KI-modelle kan help om dubbelsinnige name op te spoor deur funksie-handtekeninge te vergelyk met voorafbepaalde benaming-beste praktyke.


Die kombinasie van KI met handmatige kodehersiening lewer die beste resultate.

Probeer hulle!

Onthou: KI-assistente maak baie foute

Sonder behoorlike instruksies

Met spesifieke instruksies

ChatGPT

ChatGPT

Claude

Claude

Verwarring

Verwarring

Medevlieënier

Medevlieënier

Tweeling

Tweeling

Gevolgtrekking

Funksiename is nie net byskrifte nie; dit is kontrakte met die leser.


Dubbelsinnige name verbreek hierdie kontrak en lei tot verwarring.


Beskrywende, aksie-georiënteerde name vereenvoudig kommunikasie en maak jou kode makliker om te onderhou en uit te brei.

Verhoudings

Sien ook

Disclaimer

Code Smells is my mening .

Krediete

Foto deur britishlibrary op Unsplash


'n Funksienaam moet 'n werkwoord of 'n werkwoordfrase wees, en dit moet betekenisvol wees

Robert C. Martin


Hierdie artikel is deel van die CodeSmell-reeks.