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
- Használj cselekvés-orientált igéket
- Tedd a neveket leíró jellegűvé
- Tükrözze a funkció célját
- Kerülje az általános kifejezéseket
- Adjon értelmes kontextust
- Világosan fejezze ki az egyetlen felelősséget
- 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 |
---|---|
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.