Лас кодтың жасырын бағасы
Нашар код өзі туралы хабарламайды. Ол баяу еніп кетеді — мұнда жылдам түзету, онда айналу жолы, «кейін рефакторинг жасаймыз» деген уәде ешқашан орындалмайды.
Бұл бес принцип — командамыз жеткізетін әр жобада орындайтын ережелер.
1. Атаулар — бірінші құжаттама
Ең жоғары тиімді нәрсе: нәрселерді дұрыс атау.
Нашар: const d = users.filter(u => u.a && !u.b)
Жақсы: const activeUnverifiedUsers = users.filter(u => u.isActive && !u.isEmailVerified)
Ереже: егер айнымалы немесе функция не жасайтынын түсіндіру үшін пікір қажет болса — атау дұрыс емес.
2. Функциялар бір нәрсе жасайды
handleUser атты функция деректерді тексеріп, ДҚ жаңартып, email жіберіп, оқиғаны тіркейтін болса — бұл функция емес, модуль.
Әр функцияның бір міндеті болуы керек. Бір болу себебі. Бір өзгеру себебі.
Үлкен функцияларды кішірек аталған қадамдарға бөліңіз.
3. Өлі кодты жойыңыз
Түсіндірме блоктар, пайдаланылмаған функциялар, оқылмайтын айнымалылар — бұл өлі код. Ол шатасушылық тудырады.
Git себепсіз жоқ. Ескі тәсілге оралу қажет болса — git log табады. Өлі кодты жойыңыз.
4. Қателіктерді орын алған жерде өңдеңіз
Ең нашар үлгі: жоғарғы деңгейде ерекше жағдайларды ұстап алу және «бірдеңе дұрыс болмады» деп тіркеу.
Қателіктерді туындайтын жерге жақын өңдеңіз:
// Нашар
try {
await sendEmail(user.email, template);
} catch (err) {
logger.error('Email failed');
}
// Жақсы
try {
await sendEmail(user.email, template);
} catch (err) {
logger.error('Failed to send welcome email', {
userId: user.id,
email: user.email,
error: err.message
});
}
5. Мінез-құлыққа тест жазыңыз, іске асырылуға емес
Тесттер кодыңыз не жасайтынын тексеруі керек, оны қалай жасайтынын емес.
Сырттан мінез-құлықты сипаттайтын тесттер жазыңыз:
- «Пайдаланушы жарамсыз email енгізгенде қате хабар көрсетіледі»
- «Төлем сәтті болғанда тапсырыс күйі confirmed болады»
Мұндай тесттер рефакторингтен аман қалады.
Жинақтаушы әсер
Бұл ережелерді ұстанатын код базасы: жаңа инженерлер күндерде өнімді болады. Қателер сағаттарда табылып түзетіледі. Жүйе командамен пропорционалды өспей-ақ өседі.
Келесі жобаңыз осы стандарттармен бірінші күннен бастап жасалсын десеңіз, сөйлесейік.