İkinci varyant görünümü beni şaşırtıyor. Sadece imzama baktığımda, alanın zaten beeing geçersiz olarak bilinip bilinmediğini merak ediyorum? Yoksa validatingField
gerçekten geçersiz olup olmadığını öğrenmek için ilk önce (denildiği gibi ) doğrulanacak mı? Yani bu sadece gereksiz bilgi değil, fazladan bilgi biraz yanıltıcı görünüyor. Bu tür "açıklık" daha net değil, tam tersi.
Aslında, ilk fonksiyonunu gördüğümde, beni de şaşırttı. Kendi fonksiyonumun neden sadece bir alan aldığını sordum ama sonra onu kullanmıyor ve içinde başka bir tane arıyor invalidFields
? Bir alan aramak, sadece bir alan adı verildiğinde çok daha mantıklı görünmektedir, şöyle:
addInvalidField (fieldname, message) {
const foundField = this.invalidFields.find(value => {
return value.name === fieldname
})
const errors = foundField.errors
if (!errors.some(error => error.name === message)) {
errors.push({ name: message, message })
}
}
Ancak, sanırım Bob Martin muhtemelen bir adım daha ileri gidecek ve kodu daha açık bir şekilde - daha fazla netlik için - farklı bir yönde yapacaktır. "Temiz Kod" kitabının satırları boyunca tipik bir yeniden düzenleme muhtemelen şöyle görünecektir:
addInvalidField (fieldname, message) {
const foundField = findInvalidField(fieldName)
addMessageForInvalidField(foundField,message)
}
üç ek fonksiyon ile
findInvalidField(fieldname){
return this.invalidFields.find(value => { return value.name === fieldname })
}
addMessageForInvalidField(field,message){
const errors = field.errors
if (!doesErrorsContain(message)) {
errors.push({ name: message, message })
}
}
doesErrorsContain(message){
return errors.some(error => error.name === message)
}
Tek sorumluluk prensibi ile bu kadar ileri gitmenin işe yarayıp yaramadığı tartışmalıdır. Aslında bazı artıları ve eksileri vardır. Benim kişisel görüşüm, orijinal kodun çoğu üretim kodu için "yeterince temiz" olması, ancak yeniden düzenlenmiş kodun daha iyi olmasıdır.
İlk varyanta bir şeyler eklemek zorunda olduğumu bildiğimde, daha fazla büyüyecekti, önceden bu daha küçük işlevlere bölüyordum, bu yüzden kod bir karışıklık olmaya başlamayacaktı.