paint-brush
Code Smell 285 - Императивті емес функцияларды қалай түзетуге боладыбойынша@mcsee
277 оқулар

Code Smell 285 - Императивті емес функцияларды қалай түзетуге болады

бойынша Maximiliano Contieri3m2025/01/11
Read on Terminal Reader

Тым ұзақ; Оқу

Түсініксіз атаулары бар функциялар ниетті жасырады және оқырмандарды шатастырады. Сипаттамалық, әрекетке бағытталған атауларды қолданыңыз.
featured image - Code Smell 285 - Императивті емес функцияларды қалай түзетуге болады
Maximiliano Contieri HackerNoon profile picture
0-item

Міндетті болыңыз!!

TL;DR: Аты анық емес функциялар ниетті жасырады және оқырмандарды шатастырады. Сипаттамалық, әрекетке бағытталған атауларды қолданыңыз.

Мәселелер

  • Белгісіз функция мақсаты
  • Когнитивті жүктеменің жоғарылауы
  • Жаңылтпаш контекст
  • Оқу мүмкіндігінің төмендеуі
  • Күрделі ынтымақтастық
  • Жасырын функция

Шешімдер

  1. Іс-әрекетке бағытталған етістіктерді қолданыңыз
  2. Атауларды сипаттау
  3. Функцияның мақсатын көрсетіңіз
  4. Жалпы терминдерден аулақ болыңыз
  5. Мағыналы контекстті қамтамасыз етіңіз
  6. Жалғыз жауапкершілікті нақты көрсетіңіз
  7. Әрекетті нәтижеге сәйкестендіру

Рефакторингтер

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

Контекст

Жалпы терминдермен аталған функциялар оқырмандарды олардың мінез-құлқын түсіну үшін іске асыруға сүңгуге мәжбүр етеді.


Бұл уақытты ысырап етеді және қателер ықтималдығын арттырады.


Сынып атауы қосымша мәтінмәнді қамтамасыз етпейтін оқшау функциялармен жұмыс істегенде атау одан да маңыздырақ болады.


Бұл мәселе «Айт, сұрама» қағидасына тікелей қатысты.


Қоңырау шалушыны функционалдық туралы қорытынды жасауға мәжбүр ететін екіұшты мінез-құлықтарды көрсетудің орнына, императивті атаулар кодты тексеруді қажет етпестен оқырманды бағыттай отырып, нақты әрекетті жеткізеді.


Функцияларды сипаттамалық түрде атаған кезде, қажетсіз болжамды жоясыз және осы принциппен туралаңыз.

Үлгі код

Қате

 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] Нұсқаулық

Бұл иісті орындау , іске қосу , өңдеу , жүктеу және т.б. сияқты түсініксіз терминдерді қолданатын функция атауларын қарап шығу арқылы анықтауға болады.


Автоматтандырылған линтерлер осы үлгілерді белгілей алады немесе тым жалпы атаулары бар функцияларды бөлектей алады.

Тегтер

  • Атау

Деңгей

  • [x] Бастауыш

Неліктен бижекция маңызды

Функция атаулары олардың аты мен функционалдығы арасында нақты сәйкестікті жасауы керек.


Бұл Bijection сынуы әзірлеушілерді контекст үшін код мәліметтерін тексеруге мәжбүрлейді, отладтауды, шолуларды және кеңейтімдерді баяулатады.

AI генерациясы

AI құралдары кейде сіздің доменіңізді түсінбестен жалпы функция атауларын жасайды.


AI пайдалану кезінде функция атаулары сипаттаушы және әрекетке бағытталған болуы керек екенін көрсетіңіз.

AI анықтау

Жасанды интеллект үлгілері функция қолтаңбаларын алдын ала анықталған атау беру тәжірибелерімен салыстыру арқылы анық емес атауларды анықтауға көмектеседі.


AI-ны кодты қолмен қараумен біріктіру ең жақсы нәтиже береді.

Оларды қолданып көріңіз!

Есіңізде болсын: AI көмекшілері көптеген қателіктер жібереді

Тиісті нұсқауларсыз

Арнайы нұсқаулармен

ChatGPT

ChatGPT

Клод

Клод

Түсініксіздік

Түсініксіздік

Қосалқы ұшқыш

Қосалқы ұшқыш

Егіздер

Егіздер

Қорытынды

Функция атаулары тек белгілер емес; олар оқырманмен жасалған келісім-шарттар.


Көп мағыналы атаулар бұл келісім-шартты бұзады және шатасуға әкеледі.


Сипаттамалық, әрекетке бағытталған атаулар байланысты жеңілдетеді және кодты қолдау мен кеңейтуді жеңілдетеді.

Қарым-қатынастар

Сондай-ақ қараңыз

Жауапкершіліктен бас тарту

Код иісі - менің пікірім .

Несиелер

Unsplash сайтындағы britishlibrary суреті


Функция атауы етістік немесе етістікті тіркес болуы керек және ол мағыналы болуы керек

Роберт С. Мартин


Бұл мақала CodeSmell сериясының бөлігі болып табылады.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

ТЕГТЕРДІ АЛУ

БҰЛ МАҚАЛА БАСҚАРҒАН...