Doğru ya da yanlış, şu anda kodumu olabildiğince sağlam kılmaya çalışmam gerektiğine, şu anda herhangi bir kullanımın olmayacağını bildiğim yedekli kod / kontroller eklemek anlamına gelse de inancım var. Çizginin aşağısında x yıl olabilir.
Örneğin, şu anda bu kod parçasına sahip bir mobil uygulama üzerinde çalışıyorum:
public static CalendarRow AssignAppointmentToRow(Appointment app, List<CalendarRow> rows)
{
//1. Is rows equal to null? - This will be the case if this is the first appointment.
if (rows == null) {
rows = new List<CalendarRow> ();
}
//2. Is rows empty? - This will be the case if this is the first appointment / some other unknown reason.
if(rows.Count == 0)
{
rows.Add (new CalendarRow (0));
rows [0].Appointments.Add (app);
}
//blah...
}
Özellikle ikinci bölüme baktığımda, birinci bölüm doğruysa ikinci bölümün de doğru olacağını biliyorum. İkinci bölümün neden if
gereksiz olduğu ve ikinci bölümün gereksiz olduğunu gösteren ikinci bölümün neden doğru olduğu konusunda hiçbir sebep düşünemiyorum .
Ancak, gelecekte bu ikinci if
ifadenin gerçekte gerekli olduğu ve bilinen bir nedenden dolayı bir durum olabilir.
Bazı insanlar buna başlangıçta bakabilir ve gelecekte akılda kalmayı planladığımı düşünebilir, ki bu kesinlikle iyi bir şey. Ama bu tür bir kodun benden "saklı" böcekler çıkardığı birkaç örneği biliyorum. Yani fonksiyonun aslında ne zaman yapması gerektiğini neden xyz
yaptığını anlamak daha uzun abc
sürdü def
.
Öte yandan, bu tür bir kodun yeni davranışlarla kodu geliştirmeyi çok, daha kolay hale getirdiği çok sayıda örnek olmuştur, çünkü geri dönüp ilgili tüm kontrollerin yapıldığından emin olmak zorunda değilim.
Bu tür bir kod için genel kurallar kuralları var mı? (Bunun iyi veya kötü uygulama olarak kabul edilip edilmeyeceğini de duymak isterim?)
Not: Bu, bu soruya benzer olarak düşünülebilir , ancak o sorunun aksine, son tarih olmadığını varsayarak bir cevap istiyorum.
TLDR: Gelecekte potansiyel olarak daha sağlam hale getirmek için fazladan kod eklemeye kadar devam etmeli miyim?
if(rows.Count == 0)
Asla olmayacağını biliyorsanız , o zaman ne zaman bir istisna yaratabilir ve varsayımınızın neden yanlış olduğunu kontrol edebilirsiniz.
rows
hiç boş olmasın ? Bir koleksiyonun boş olması için en azından .NET'te hiçbir zaman iyi bir neden yoktur. Boş , kesin ama boş değil . Boşsa bir istisna atardım rows
, çünkü arayan tarafın mantığında bir atlamalı olduğu anlamına gelir.