GRASP öğrenmeye çalışıyorum ve bu düşük kuplaj hakkında açıkladı ( burada sayfa 3 ) ve bunu bulduğumda çok şaşırdım:
addTrackBirAlbumsınıfın yöntemini düşünün , iki olası yöntem şunlardır:
addTrack( Track t )ve
addTrack( int no, String title, double duration )Hangi yöntem kuplajı azaltır? İkincisi, Album sınıfını kullanan sınıfın bir Track sınıfı bilmek zorunda olmadığı için. Genel olarak, yöntem parametreleri, java. * Paketlerinden temel türleri (int, char ...) ve sınıfları kullanmalıdır.
Ben buna katlanıyorum; Çeşitli nedenlerden addTrack(Track t)daha iyi olduğuna inanıyorum addTrack(int no, String title, double duration):
Bir yöntemin mümkün olduğu kadar az parametreye sahip olması her zaman daha iyidir (Bob Amca'nın Temiz Koduna göre hiçbiri veya bir, tercihen bazı durumlarda 2 ve özel durumlarda 3; Yeniden düzenlemeye ihtiyaç vardır - bunlar elbette kutsal kurallar değildir) .
Bir
addTrackarabirim yöntemiyse ve gereksinimlerin a'nınTrackdaha fazla bilgiye sahip olması gerekir (örneğin yıl veya tür), arabirimin değiştirilmesi gerekir ve böylece yöntemin başka bir parametreyi desteklemesi gerekir.Kapsülleme kırılmıştır; eğer
addTrackbir arayüzdeyse, o cihazın içini bilmemelidirTrack.Aslında birçok yönden ikinci yolla daha fazla birleşmiştir. Varsayalım
noparametre ihtiyaçlarını değiştirilebilir içinintiçinlongfazla olduğundanMAX_INTparça (veya herhangi bir nedenle); bu durumda hem veTrackhem de yöntemin değiştirilmesi gerekirken, yöntemaddTrack(Track track)yalnızca buTrackyöntemse değişecektir.
4 argümanın hepsi aslında birbiriyle bağlantılıdır ve bazıları diğerlerinin sonuçlarıdır.
Hangi yaklaşım daha iyi?