- Hiçbir şey yapmayan yöntem veya işlev çağrıları.
Mutlaka kötü değil. Temel sınıftaki yöntemler genellikle alt sınıflar için geçersiz kılma noktaları olarak adlandırılan boş yöntemler olarak adlandırılır. Örnek: Cocoa Touch'ın UIView'ı, -didAddSubview:
varsayılan sürümde hiçbir şey yapmadığı belgelenen bir yönteme sahiptir . UIView'un -addSubview:
yöntemi -didAddSubview:
hiçbir şey yapmamasına rağmen çağırmak zorundadır, çünkü alt sınıflar bir şeyi yapmak için uygulayabilir. Hiçbir şey yapmayan yöntemler ve bunların sebepleri elbette belgelenmelidir.
Boş ya da işe yaramaz bir işlev / yöntem, tarihsel nedenlerden dolayı açıkça varsa, eksize edilmelidir. Emin değilseniz, kaynak kod havuzunuzdaki kodun önceki sürümlerine bakın.
- Gereksiz kontroller ayrı bir sınıf dosyasında, nesne veya yöntemde yapılır.
Bazı bağlamlar olmadan tamam olup olmadığını söylemek zor. Kontroller aynı nedenden dolayı açıkça yapılırsa, sorumlulukların net bir şekilde ayrılmayacağı ve özellikle her iki kontrol de aynı önlemlerin alınmasına yol açtığında bazı yeniden düzenlemelerin yapılması gerektiği anlamına gelebilir. Her iki kontrolden kaynaklanan eylem aynı değilse, o zaman durum aynı olsa bile iki kontrole muhtemelen farklı sebepler yapılıyordur ve bu muhtemelen tamamdır.
- if deyimi her zaman doğru olarak değerlendirilir.
Şunlar arasında büyük bir fark var:
if (1) {
// ...
}
ve:
if (foo() == true) {
// ...
}
foo()
her zaman geri dönmek için nerede olur true
.
İlk vaka, insanlar hata ayıklarken çok olur. if (0) {...
Bir hatayı izole etmeye çalışırken bir kod yığınını geçici olarak kaldırmak için bir kullanımı kolaydır ve daha sonra bu kodu geri yüklemek 0
üzere değiştirilir 1
. if
Elbette, bitirdiğinizde kaldırılması gerektiğini, ancak bu adımı unutmak veya çeşitli yerlerde yaptık eğer bir ya da iki kaçırmak kolaydır. (Bu şartlamaları, daha sonra arayabileceğiniz bir yorumla tanımlamak iyi bir fikirdir.) Tek zararı, gelecekte neden olabileceği karışıklıktır; derleyici derleme zamanında koşulun değerini belirlerse, tamamen kaldırır.
İkinci durum kabul edilebilir olabilir. Temsil edilen koşulun foo()
koddaki birkaç yerden test edilmesi gerekiyorsa, onu ayrı bir işleve veya yönteme dahil etmek, foo()
her zaman şu anda doğru olsa bile, yapılacak en doğru şeydir . foo()
Sonunda geri dönüşü düşünülebilecek olursa false
, bu koşulu bir yöntem veya işlevde yalıtmak, kodun bu koşula dayandığı tüm yerleri tanımlamanın bir yoludur. Ancak , bunu yapmak, foo() == false
durumun test edilmemesi ve daha sonra sorunlara yol açması riskini doğurur; Çözüm, false
vakayı açıkça sınayan birim testleri eklediğinizden emin olmaktır .
- Dönen ve hiçbir şey yapmayan konular.
Bu, tarihin bir eseri ve kod incelemesi sırasında veya yazılımın periyodik profili ile tanımlanabilecek bir şey gibi görünüyor. Ben varsayalım olabilir kasten yaratılabilir ama zor bir zaman aslında bilerek yapacağını kimse hayal var.
if (false) {...}
bloklar kodu yorumlamak için harika! </sarcasm>