- Bir yazılımcı olarak componentdeki değişim nedenlerini belirlemeli ve bunların her birini tek bir bileşene indirmeliyiz.
1- IF Statement
Sorun : İF Statementlar metodun değişmesi için birden fazla nedenin olduğunun açık bir işaretidir. Bu durum Single Responsibility Principleyi ihlal eder.
Çözüm : if ve else branch logiclerini ayrı bir metod yada sınıfa çıkartmalıyız.
2- Swtich Statement
3- Monster Method
Bir sınıfın içerisinde birden fazla işin yapılması
income getIncome(Employe e){
income income = employeRepository.getIncome(e.id);
StateAuthorityApi.Send(income, e.fullName);
PaySlip.paySlip = new PaySlip();
EmailService.Send(e.email, paySlip)
. . .
. . .
return income ;
}
Yukarıdaki kodda bir metod içersinde birden fazla işlem yapılmaktadır. Bu getIncome metodunun içeriği yönetilebilir sınıflara ve metodlara ayrılmalıdır.
4- God Class
Paket :Birlikte release edilen yapılar aynı pakette olmalıdır.
Class : Sadece bir şeyi soyutlamalı ve sadece o şeyle ilgili veri ve davranışa sahip olmalıdır.
Metod : Sınıfın soyutladığı şeyle ilgili tekrar kullanılabilecek bölünmez tek bir iş yapmalıdır.
Blok : Metod seviyesine çıkamamış dolayısıyla da tekrar kullanımı söz konusu olmayan ama ya hep ya hiç şeklinde çalışan bir grup cümle olmalıdır.
Cümle(Statement) : Bir bloğun yada metodun parçası olarak bir işin tek bir adımını rahat anlaşılır bir şekilde yerine getirmelidir. Bir satır da sadece bir cümle, bir cümlede sadece bir adımı yerine getirmelidir.
Metod, Tekrar kullanımın en temel öğesidir.
- Tekrar kullanılma ihtimali olan her blok yada cümle vb. kod parçası ne kdar kısa olursa olsun ayrı bir metod olmalıdır. Aksi takdirde aynı kod parçası copy-paste ile farklı yerlere dağılır. Tekrar kullanılması gereken hatta ihtimali olan kod parçaları refactoring sürecinde metod haline getirilmelidir.
- Metodlar 10-15 satırı geçmemli ve max parametre sayısı 3 olmalıdır.
NOT: Bir kodun içinde davranış İF- ELSE ile değişiyorsa her farklı if-else branchini bir başka polymorfik nesneye atayın, Öyleki bunlar aynı tipin sub nesneleri olsun.
Hiç yorum yok:
Yorum Gönder