Nesneye yönelik programlamanın en önemli özelliğinin karmaşıklık yönetimi olduğunu öne sürüyorum .
İnsan beyni bir seferde sadece çok fazla kavram tutabilir - 7 +/- 2 bağımsız öğeyi hatırlamanın sıkça bahsedilen sınırı akla gelir.
İşyerinde 600kloc'luk bir sistem üzerinde çalışırken, her şeyi aynı anda kafamda tutamıyorum. Bunu yapmak zorunda olsaydım, çok daha küçük sistemler üzerinde çalışmakla sınırlı olurdum .
Neyse ki, zorunda değilim. Bu projede kullandığımız çeşitli tasarım desenleri ve diğer yapılar, aynı anda tüm sistemle uğraşmak zorunda olmadığım anlamına geliyor - daha geniş uygulamalara sığdıklarını bilerek bireysel parçaları alıp üzerinde çalışabiliyorum. iyi tanımlanmış.
Tüm önemli OO kavramları karmaşıklığı yönetmenin yollarını sunar.
Kapsülleme - bu hizmetlerin nasıl uygulandığından endişelenmeden bana çeşitli hizmetler sağlayan harici bir API ile ilgilenmeme izin verin.
Soyutlama - temel özelliklere odaklanmama ve ilgisiz olanları görmezden gelmeme izin verin.
Kompozisyon - Yeni kombinasyonlarda oluşturulmuş bileşenleri tekrar kullanmama izin verin
Çok biçimlilik - farklı nesnelerin farklı şekillerde nasıl sağlayabileceği konusunda endişelenmeden bir hizmet istememe izin verin.
Kalıtım - bir arayüzü veya uygulamayı yeniden kullanmama izin verin, yalnızca daha önce olanlardan farklı parçalar sağlayın.
Tek Sorumluluk İlkesi - her bir nesnenin amacını açık ve özlü tutmaya izin verir, bu nedenle akıl yürütmek kolaydır
Liskov İkame İlkesi - garip bağımlılıklar getirerek birbirleri için tuzaklar bırakmayalım
Açık / Kapalı Prensibi - mevcut kodu ihlal etmemizi gerektirmeyen şekillerde genişletmeye ve değiştirmeye izin verelim
Bağımlılık Enjeksiyonu - bileşimi bir sonraki seviyeye alalım ve bileşenleri daha sonra bir araya getirelim.
Arayüz odaklı geliştirme - soyutlamayı bir sonraki seviyeye taşıyalım ve sadece soyutlamaya bağlı olalım, asla somut bir uygulamaya dayanmayalım.