Skip to content
PПромтбук
RUEN
04Рефакторинг

Улучшение имён в коде

Переименовать сущности так, чтобы код читался как текст: переменные, функции, типы, файлы.

Пройдись по {{scope}} и улучши имена.

Категории имён к проверке

1. Переменные

ПлохоХорошо
dataactiveUsers
temppendingPayment
x, yxCoord, yCoord (если они координаты) или индексы цикла оставь i, j
infoконкретное имя
objконкретное имя

Правила

  • Имя описывает что в переменной, не тип
  • Длина пропорциональна области видимости: i ок для 3 строк, userIndex нужно для 30
  • Не userObj, userData — просто user

2. Функции

ПлохоХорошо
process()validateAndSavePayment()
handle()onPaymentSuccess()
getData()fetchActiveUsers() (асинхронный) / activeUsers() (сразу есть)
doStuff()конкретное имя

Правила

  • Имя — глагол + объект
  • Boolean: префикс is, has, can, should
  • Чистая функция (без сайд-эффектов): можно существительным (fullName(user))
  • Возвращает массив: множественное число (activeUsers)
  • Возвращает Promise: глагол с действием (fetchUser, loadConfig)

3. Типы и классы

ПлохоХорошо
IUserUser (в TS префикс I устарел)
UserTypeUser
UserDTOUserPayload или User если совпадает
AbstractFactoryпо роли а не по паттерну

Правила

  • Существительное в единственном числе для одного объекта
  • Не повторяй контекст: в файле user.ts экспорт называется User, не UserModel

4. Файлы

ПлохоХорошо
utils.tsразнести: date-utils.ts, string-utils.ts (но лучше специфичнее)
helpers.tsто же самое — обычно мусорка
index.tsок только как public API модуля
User.tsx (React)kebab-case: user-card.tsx

5. Константы

// плохо
const MAX = 100;
const URL = "https://...";

// хорошо
const MAX_RETRIES = 3;
const API_BASE_URL = "https://...";

Процесс

  1. Прочитай {{scope}} один раз с целью "что трудно понять без контекста?"
  2. Список кандидатов на переименование
  3. Для каждого:
    • Текущее имя
    • Что оно действительно представляет (объясни своими словами)
    • Новое имя
  4. Используй IDE refactor → "Rename symbol" (а не Find/Replace)
  5. Тесты должны пройти после
  6. Коммить отдельно от других изменений: refactor: rename X to Y

Анти-паттерны

  • Длинные имена для коротких scope'ов: activeAndValidatedUserAccountForBilling
  • Сокращения которые ничего не значат: btn, fn, el (ок) vs mdpqv (нет)
  • Слова которые не добавляют смысла: Manager, Handler, Helper, Util
  • "Венгерская нотация": strName, intCount — типы и так известны
  • Имя зависит от реализации: saveUserToPostgres → стало MySQL → надо переименовывать

Тест хорошего имени

Если объяснил коду имя и тебе говорят "а почему этого не названо так?" — переименовывай.

К подразделу «Рефакторинг»
Похожие промты