Kural
Kullanım adlandırılmış argümanları açıklık anlaşılırlık
Adlandırılmış argümanlar kullanımı kodun kendini açıklayıcı
ve önler parametre sırasını hatalarını önlemek.
Kullan adlandırılmış argümanları kullanın fonksiyonlar içinde daha
funktiyonlar 2-3'ten parametre veya boolean bayrakları.
Desteklenen diller: Python, PHPGiriş
Birden fazla parametreye sahip fonksiyonlar, çağrıldıkları yerlere bakıldığında anlaşılması zor hale gelir. Okuma sendEmail('user@example.com', true, false, 30) ne olduğunu anlamak için fonksiyon imzasını araştırmak gerekir doğru, falseve 30 anlamına gelir. Adlandırılmış argümanlar, her bir parametrenin amacını çağrı noktasında açıkça belirtmek suretiyle bu sorunu çözer. Ayrıca, fonksiyon imzaları değiştiğinde parametrelerin sırasının değişmesinden kaynaklanan hataları da önler.
Neden önemli?
Kodun bakım kolaylığı: Adlı argümanlar, sabit referans kontrolü gerektirmeden çağrı noktasında amacın ne olduğunu açıklar. Şunu gördüğünüzde sendEmail(to: $email, retry: true, async: false, timeout: 30), her bir değerin neyi kontrol ettiğini tam olarak anlarsınız. Bu, kod incelemesi sırasında karışıklığı ortadan kaldırır ve konumsal argümanları zihninizde parametre adlarıyla eşleştirmek zorunda kalmadığınız için hata ayıklamayı hızlandırır.
Güvenlikle ilgili hususlar: Güvenlik açısından kritik işlevlerdeki parametre sırası hataları, güvenlik açıklarına yol açabilir. Şunların yerlerinin değiştirilmesi: $kullanıcıadı ve $password Parametreler ya da karma şifrenin girilmesi gereken yere yanlışlıkla düz metin şifrenin girilmesi gibi durumlar, konumsal argümanlar kullanıldığında herhangi bir hata mesajı vermeden başarısızlıkla sonuçlanır. Adlandırılmış argümanlar ise hangi değerin nereye ait olduğunu açıkça belirtmenizi zorunlu kılar ve bu tür tehlikeli hataları önler.
Yeniden yapılandırma güvenliği: Mevcut işlevlere isteğe bağlı parametreler eklemek, bunları sonuna eklemediğiniz sürece konumsal argüman içeren tüm çağrı noktalarını bozar. Adlandırılmış argümanlar, parametre adları tutarlı kaldığı sürece mevcut kodu bozmadan parametre eklemenize, sıralarını değiştirmenize veya parametreleri değiştirmenize olanak tanır. Bu, API’leri daha istikrarlı hale getirir ve geliştirme sürecini daha az riskli kılar.
Kod örnekleri
❌ Uygun değil:
function createUser($email, $password, $role, $verified, $sendEmail, $retryCount) {
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
$user = User::create([
'email' => $email,
'password' => $hashedPassword,
'role' => $role,
'verified' => $verified
]);
if ($sendEmail) {
sendWelcomeEmail($user->email, $retryCount);
}
return $user;
}
// Unclear what each parameter means
createUser('user@example.com', 'secret123', 'admin', true, false, 3);
Neden yanlış: Çağrı kaynağı, neyin doğru olduğuna dair hiçbir bağlam sunmamaktadır, false, ve 3. seçenek ise fonksiyon imzasına sürekli başvurmayı gerektirir. Değiştirme $role ve $password veya $doğrulanmış ve $sendEmail sessizce hata verecek ve bu da potansiyel olarak güvenlik sorunlarına yol açabilecektir.
✅ Uygunluk:
function createUser(
string $email,
string $password,
string $role = 'user',
bool $verified = false,
bool $sendEmail = true,
int $retryCount = 3
) {
$hashedPassword = password_hash($password, PASSWORD_BCRYPT);
$user = User::create([
'email' => $email,
'password' => $hashedPassword,
'role' => $role,
'verified' => $verified
]);
if ($sendEmail) {
sendWelcomeEmail($user->email, $retryCount);
}
return $user;
}
// Self-documenting call site
createUser(
email: 'user@example.com',
password: 'secret123',
role: 'admin',
verified: true,
sendEmail: false,
retryCount: 3
);
Bunun önemi: Her parametrenin amacı çağrı noktasında açıkça belirtilir, bu da kodun kendi kendini açıklamasını sağlar. Her argümanı açıkça adlandırdığınız için parametre sırası hataları ortaya çıkmaz ve yeni isteğe bağlı parametreler eklemek mevcut kodu bozmaz.
Sonuç
2-3'ten fazla parametreye sahip işlevler, boole bayrakları veya arka arkaya gelen benzer türler için adlandırılmış argümanlar kullanın. Çağırma noktasında ortaya çıkan bu hafif ayrıntı, netlik, güvenlik ve bakım kolaylığı açısından kendini amorti eder. Konumsal argümanları, parametre sırasının açık olduğu ve değişme olasılığının düşük olduğu basit işlevler için saklayın.

