İyi belgelenmiş kodun önemini anlıyorum. Ancak, kendi kendini belgeleyen kodun önemini de biliyorum . Belirli bir işlevi görsel olarak okumak ne kadar kolay olursa yazılım bakımı sırasında o kadar hızlı ilerleyebiliriz.
Bununla birlikte, büyük işlevleri diğer küçük işlevlere ayırmayı seviyorum . Ancak bunu, bir sınıfın yalnızca bir ortak yönteme hizmet etmek için beşinden yukarıya sahip olabileceği bir noktaya yapıyorum. Şimdi beş özel yöntemi beş kamuoyu ile çarpın ve muhtemelen sadece bir kez bu kamuoyu tarafından aranacak olan yirmi beş gizli yöntemi elde edin.
Tabii ki, bu kamu yöntemlerini okumak artık daha kolay, ama yardım edemem ama çok fazla işleve sahip olmanın kötü bir uygulama olduğunu düşünüyorum.
[Düzenle]
İnsanlar bana neden çok fazla işleve sahip olmanın kötü bir uygulama olduğunu düşündüğümü soruyorlar.
Basit cevap: içgüdüsel bir his.
Benim inancım, bir süreliğine herhangi bir saatlerce süren yazılım mühendisliği tecrübesiyle desteklenmiyor. Sadece bana bir "yazar bloğunu" veren bir belirsizlik, ancak bir programcı için.
Geçmişte sadece kişisel projeleri programlıyorum. Kısa süre önce ekip tabanlı projelere geçtim. Şimdi, başkalarının kodumu okumasını ve anlamasını sağlamak istiyorum.
Okunabilirliği neyin artıracağından emin değildim. Bir yandan, büyük bir işlevi diğer isimlerle anlaşılır isimlerle ayırmayı düşünüyordum. Ama bunun sadece gereksiz olduğunu söyleyen bir yanım daha vardı.
Bu yüzden, doğru yolu seçmek için kendimi aydınlatmasını istiyorum.
[Düzenle]
Aşağıda, ben nasıl iki sürümü dahil olabilir benim sorunu çözmek. İlki bunu çözer değil kodun büyük parçalar ayıran. İkincisi ise yaptığı ayrı şeyler.
İlk versiyon:
public static int Main()
{
// Displays the menu.
Console.WriteLine("Pick your option");
Console.Writeline("[1] Input and display a polynomial");
Console.WriteLine("[2] Add two polynomials");
Console.WriteLine("[3] Subtract two polynomials");
Console.WriteLine("[4] Differentiate two polynomials");
Console.WriteLine("[0] Quit");
}
İkinci versiyon:
public static int Main()
{
DisplayMenu();
}
private static void DisplayMenu()
{
Console.WriteLine("Pick your option");
Console.Writeline("[1] Input and display a polynomial");
Console.WriteLine("[2] Add two polynomials");
Console.WriteLine("[3] Subtract two polynomials");
Console.WriteLine("[4] Differentiate two polynomials");
Console.WriteLine("[0] Quit");
}
Yukarıdaki örneklerde, ikincisi programın tüm çalışma zamanı boyunca yalnızca bir kez kullanılacak bir işlevi çağırır.
Not: Yukarıdaki kod genelleştirilmiştir, ancak sorunumla aynı niteliktedir.
Şimdi, işte sorum: hangisi? İlki mi yoksa ikincisini mi seçerim?