paint-brush
Code Smell 285 – A nem kötelező funkciók javításaáltal@mcsee
286 olvasmányok

Code Smell 285 – A nem kötelező funkciók javítása

által Maximiliano Contieri3m2025/01/11
Read on Terminal Reader

Túl hosszú; Olvasni

A homályos nevű funkciók elrejtik a szándékot és összezavarják az olvasókat. Használjon leíró, cselekvésorientált neveket.
featured image - Code Smell 285 – A nem kötelező funkciók javítása
Maximiliano Contieri HackerNoon profile picture
0-item

Légy kötelező!!

TL;DR: A nem egyértelmű nevű funkciók elrejtik a szándékot és összezavarják az olvasókat. Használjon leíró, cselekvésorientált neveket.

Problémák

  • Nem egyértelmű a funkció célja
  • Fokozott kognitív terhelés
  • Félrevezető kontextus
  • Csökkentett olvashatóság
  • Nehéz együttműködés
  • Rejtett funkciók

Megoldások

  1. Használj cselekvés-orientált igéket
  2. Tedd a neveket leíró jellegűvé
  3. Tükrözze a funkció célját
  4. Kerülje az általános kifejezéseket
  5. Adjon értelmes kontextust
  6. Világosan fejezze ki az egyetlen felelősséget
  7. Párosítsa a cselekvést az eredménnyel

Refaktorálások

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

Kontextus

Az általános kifejezésekkel elnevezett függvények arra kényszerítik az olvasókat, hogy belemerüljenek a megvalósításba, hogy megértsék viselkedésüket.


Ez időt veszít, és növeli a hibák esélyét.


A névadás még kritikusabbá válik, ha önálló függvényekkel dolgozik, ahol az osztálynév nem biztosít további kontextust.


Ez a probléma közvetlenül kapcsolódik a Mondd, ne kérdezz elvhez .


Ahelyett, hogy olyan kétértelmű viselkedéseket tárnának fel, amelyek arra kényszerítik a hívót, hogy funkcionalitásra következtessen, a kötelező nevek a pontos műveletet közvetítik, és a kód ellenőrzése nélkül irányítják az olvasót.


Ha a függvényeket leíró jelleggel nevezi meg, kiküszöböli a felesleges találgatásokat, és igazodik ehhez az elvhez.

Minta kód

Rossz

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

Jobbra

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

Érzékelés

  • [x] Kézi

Ezt a szagot úgy észlelheti, hogy áttekinti a függvényneveket, amelyek homályos kifejezéseket használnak, mint például a do , run , process , load stb.


Az automatizált linterek megjelölhetik ezeket a mintákat, vagy kiemelhetik a funkciókat túlságosan általános nevekkel.

Címkék

  • Elnevezés

Szint

  • [x] Kezdő

Miért fontos a Bijection?

A függvényneveknek egyértelmű egy az egyhez egyezést kell létrehozniuk a nevük és a funkcióik között.


A Bijection megszakítása arra kényszeríti a fejlesztőket, hogy megvizsgálják a kódrészleteket a környezet szempontjából, lelassítva a hibakeresést, az áttekintéseket és a bővítményeket.

AI generáció

Az AI-eszközök néha generikus függvényneveket generálnak anélkül, hogy megértenék a domainjét.


AI használatakor adja meg, hogy a függvényneveknek leíró jellegűnek és cselekvés-orientáltnak kell lenniük.

AI észlelés

Az AI-modellek segíthetnek felismerni a kétértelmű neveket, ha összehasonlítják a függvényaláírásokat az előre meghatározott elnevezési bevált gyakorlatokkal.


A mesterséges intelligencia és a kézi kódellenőrzés kombinálása a legjobb eredményt nyújtja.

Próbáld ki őket!

Ne feledje: az AI-asszisztensek sok hibát követnek el

Megfelelő utasítások nélkül

Speciális utasításokkal

ChatGPT

ChatGPT

Claude

Claude

Zavar

Zavar

Másodpilóta

Másodpilóta

Ikrek

Ikrek

Következtetés

A függvénynevek nem csak címkék; ezek az olvasóval kötött szerződések.


A kétértelmű nevek megszegik ezt a szerződést, és zűrzavarhoz vezetnek.


A leíró, cselekvésorientált nevek leegyszerűsítik a kommunikációt, és megkönnyítik a kód karbantartását és bővítését.

Kapcsolatok

Lásd még

Jogi nyilatkozat

Code Smells az én véleményem .

Kredit

Fotó: britishlibrary az Unsplash oldalon


A függvénynév ige vagy igei kifejezés lehet, és értelmesnek kell lennie

Robert C. Martin


Ez a cikk a CodeSmell sorozat része.