Birkaç hafta sonra bu forumda okumaya başladım, ilk mesajımı yapmanın tam zamanı olduğunu düşündüm.Kod 212, Kompozisyon ve yetkilendirme tamamlandı
Şu anda Code Complete'i okudum. Ben son kez bu yana 15 yıl olduğunu düşünüyorum ve hala kod yazabilirim buluyorum ;-)
Neyse, sayfa 138'de Kod tamamlandı, bu kodlama dehşet örneğini bulabilirsiniz. (Bazı kodları kaldırdım)
class Emplyee {
public:
FullName GetName() const;
Address GetAddress() const;
PhoneNumber GetWorkPhone() const;
...
bool IsZipCodeValid(Address address);
...
private:
...
}
Steve'in kötü olduğunu düşündüğü şey, işlevlerin gevşek bir şekilde bağlantılı olmasıdır. Ya da
Tamam ben tamamen ona katılıyorum "çalışanlar ve posta kodlarını, telefon numarası veya iş sınıflandırmaları kontrol rutinleri arasında hiçbir mantıksal bağ yok" yazıyor vardır. Belki de aşağıdaki örnek gibi bir şey daha iyidir.
class ZipCode
{
public:
bool IsValid() const;
...
}
class Address {
public:
ZipCode GetZipCode() const;
...
}
class Employee {
public:
Address GetAddress() const;
...
}
Zip geçerli olup olmadığını denetlerken böyle bir şey yapmanız gerekir.
Ve bu Law of Demeter ile ilgili değil.
Üç noktadan ikisini çıkarmak isterseniz, bu şekilde temsilci ve birkaç sarıcı işlevini kullanmanız gerekir.
class ZipCode
{
public:
bool IsValid();
}
class Address {
public:
ZipCode GetZipCode() const;
bool IsZipCodeValid() {return GetZipCode()->IsValid());
}
class Employee {
public:
FullName GetName() const;
Address GetAddress() const;
bool IsZipCodeValid() {return GetAddress()->IsZipCodeValid());
PhoneNumber GetWorkPhone() const;
}
employee.IsZipCodeValid();
Ama sonra tekrar mantıksal bir bağlantıya sahip olmayan yordamlarınız var.
Şahsen bu yazının üç örneğinin de kötü olduğunu düşünüyorum. Düşünmediğim başka bir yolu var mı?
Ben programcılar bir çok kodu tamamlandı sevdiğini biliyorum, ama dürüstçe ben yapmadım. Çok sıkıcı bir okumaydı. – JonH
Bu, okuduğunuz zamana bağlı olarak değişir. Eğer bir junior geliştiricisiyseniz, iyi bir okumadır.Deneyimli bir geliştiriciyseniz, kitapta yazılanların sıra dışı bir şey olmaksızın mantıklı olduğunu düşünüyorum. –
@JonH Katılıyorum - en iyi kitabı aslında birkaç kişinin okumuş olduğu "Hızlı Gelişim" dir - bu harika. –