Ben ne olduğunu anlamak KATI başarmak ve modülerlik önemlidir ve onun hedefleri açıkça faydalıdır durumlarda düzenli kullanmak gerekiyordu. Ancak, iki şey benim kod tabanımda tutarlı bir şekilde uygulamamı engelliyor:
Erken soyutlamadan kaçınmak istiyorum. Tecrübelerime göre somut kullanım senaryoları olmadan soyutlama çizgileri çizmek (şimdiki veya öngörülebilir gelecekte var olan türler ) yanlış yerlere çekilmelerine neden olmaktadır. Bu tür bir kodu değiştirmeye çalıştığımda, soyutlama çizgileri yardım etmekten çok yol alıyor. Bu nedenle, nerede yararlı olacağına dair iyi bir fikrim olana kadar soyutlama çizgileri çizmemeye yanlıyorum.
Eğer kodumu daha ayrıntılı, anlaşılması zor, vb. Yaparsa ve herhangi bir kopyalamayı ortadan kaldırmazsa, kendi iyiliği için artan modülerliği haklı çıkarmakta zorlanıyorum. Akış basit ve doğrusal olduğundan basit, sıkı bir şekilde birleştirilmiş prosedür veya Tanrı nesne kodunun anlaşılması bazen çok iyi faktörlü mantı kodundan daha kolaydır. Ayrıca yazmak çok daha kolay.
Öte yandan, bu zihniyet genellikle Tanrı'nın nesnelerine yol açar. Genelde bunları muhafazakar bir şekilde yeniden yansıtıyorum, yalnızca net desenler ortaya çıktığında net soyutlama çizgileri ekliyorum. Eğer herhangi bir şey varsa, Tanrı'nın nesnelerinde yanlış olan ve açıkça daha fazla modülerliğe ihtiyacınız yoksa sıkıca birleştirilmiş kod nedir, önemli bir çoğaltmaya sahip değilsiniz ve kod okunabilir mi?
EDIT: Bireysel SOLID ilkelerine gelince, Liskov Sübstitüsyonunun IMHO'nun sağduyuyu biçimlendirdiğini ve soyutlamalar yapılmadığı için her yerde uygulanması gerektiğini vurgulamak istedim. Ayrıca, her sınıfın belirli bir soyutlama düzeyinde tek bir sorumluluğu bulunmalıdır, ancak uygulama ayrıntılarının tümü büyük bir 2.000 satır sınıfında toplanmasıyla çok yüksek olabilir. Temel olarak, soyutlamalarınız, soyutlamayı seçtiğiniz yeri anlamalıdır. Modülerliğin açıkça yararlı olmadığı durumlarda sorduğum ilkeler açık-kapalı, arayüz ayrımı ve özellikle bağımlılık inversiyonu çünkü bunlar sadece soyutlamalar anlamında değil, modülerlikle ilgili.