Kod yozish oson, toza kod yozish — san'at. Robert C. Martin'ning "Clean Code" kitobi dasturchilar bibliyadir. Bu maqolada Clean Code ning eng muhim tamoyillarini amaliy misollar bilan ko'rib chiqamiz.

1. Nomlash — Eng muhim ko'nikma

// Yomon ❌
$d = 86400;
$arr = getList();
function proc($x) { ... }

// Yaxshi ✅
$secondsInDay = 86400;
$activeUsers = getActiveUsers();
function calculateMonthlyRevenue($orders) { ... }

O'zgaruvchi va funksiya nomlari ularning maqsadini tushuntirishi kerak. Agar izoh yozish kerak bo'lsa — nom yomon tanlangan.

2. Funksiyalar: Kichik va bitta vazifali

// Yomon ❌ — funksiya juda ko'p narsa qilyapti
function processUser($data) {
    // validatsiya
    // bazaga yozish
    // email yuborish
    // log yozish
}

// Yaxshi ✅ — har bir funksiya bitta vazifa
function validateUserData($data): array { ... }
function saveUser($validData): User { ... }
function sendWelcomeEmail(User $user): void { ... }
function logUserCreation(User $user): void { ... }

3. SOLID tamoyillari

  • S — Single Responsibility: Har bir klass bitta vazifa
  • O — Open/Closed: Kengaytirish uchun ochiq, o'zgartirish uchun yopiq
  • L — Liskov: Subklass ota-klassni to'liq almashtira olishi kerak
  • I — Interface Segregation: Kichik va aniq interfeyslar
  • D — Dependency Inversion: Abstraksiyalarga bog'lanish

4. Izohlar: Kamroq — yaxshiroq

// Yomon ❌ — keraksiz izoh
$i++; // i ni 1 ga oshirish

// Yaxshi ✅ — nima uchun ekanligini tushuntirish
// Rate limit: 1 soatda 100 ta so'rov (DDoS himoyasi)
$maxRequests = 100;

5. Boy Scouts Rule

"Kodni topganingizdan toza holda qoldiring" — har safar faylga tegganingizda, biror narsani yaxshilang.

6. DRY (Don't Repeat Yourself)

Bir xil kod ikki joyda yozilsa — bu refactoring uchun signal. Umumiy logikani funksiya yoki klassga chiqaring.

7. Error Handling

// Yomon ❌
function getUser($id) {
    $user = $db->find($id);
    if (!$user) return null; // muammo: null check unutilishi mumkin
}

// Yaxshi ✅
function getUser($id): User {
    $user = $db->find($id);
    if (!$user) {
        throw new UserNotFoundException("Foydalanuvchi topilmadi: {$id}");
    }
    return $user;
}

Xulosa

Toza kod yozish — bu tajriba bilan keladigan ko'nikma. Har kuni biroz yaxshiroq kod yozishga harakat qiling. Kod review qiling, refactoring qiling va doim o'rganing. Siz yozgan kodni 6 oy keyin o'zingiz o'qiysiz — uni tushunarli qiling.