Bir fonksiyon kullanılmıyorsa ölü demektir. Kullanılmayan bir fonksiyonu barındırmaksa kodu şişirmekten ve kalabalık yapmaktan başka bir işe yaramaz. Kodu şişiren her fonksiyon, bizim için çeşitli zamanlarda ekstra yük anlamına gelir:

  1. Eğer bir bug yakalamaya çalışıyorsak, kontrol etmemiz gereken bir fazla fonksiyon anlamına gelir.
  2. Eğer bir sınıfı (class) daha iyi hâle getirmek için yeniden yazıyorsak (refactor), değiştirmemiz gereken bir fazla fonksiyon anlamına gelir.
  3. Yapmamız gereken herhangi bir şey olmasa dahi, bakımını sağlamamız gereken bir fazla fonksiyon var demektir.

Sadece bir fonksiyon; ne zararı var, öyle değil mi? Değil.

Birincisi, ölü fonksiyonlar birer birer artar. Bunların icabına zamanında bakmazsak (bkz. Kırık Pencereler Teorisi), ortalık çöplüğe döner.

İkincisi ise, bir fonksiyon için harcanan her dakikayı, başka ve daha yararlı bir kod parçası için harcayabileceğimizi düşünün. Her dakikanın bize belirli bir maliyeti var; akıllıca kullanmamız bizim olduğu kadar çalıştığımız projenin ya da ürünün de yararına.

Örnek

Aşağıdaki örneği ele alalım:

<?php

class Book // Kitap
{
   public function doSomething(): void
   {
      // Bir şeyler yap
      $this->updateTitle("Kürk Mantolu Madonna");

      // Yazarı bilgilendirme; çünkü Sabahattin Ali hayatta değil.
   }

   private function updateTitle(string $title): void
   {
      // Başlığı güncelle
   }

   private function notifyAuthor(): void
   {
      // Yazarı bilgilendir
   }
}

Pekala, sırf ölü fonksiyonlara örnek verebilmek için böyle bir senaryo yarattım. 🙂

İlk olarak, Book sınıfında tanımladığımız iki tane private (gizli) fonksiyon var. Bu tarz fonksiyonlar kendi sınıfları dışından erişilemediği için, yukarıdaki örnekte hangi fonksiyonun kullanılıp hangisinin kullanılmadığını anlayabiliyoruz.

Senaryonun ikinci önemli noktası ise, yazar olarak sadece Sabahattin Ali’yi kullanmış olmam. Gerçek bir projede elbette tek bir yazardan daha fazlasını idare etmemiz gerekecektir. Fakat örneğimizin işe yarar olması için, şimdilik başka yazarımız olmadığını varsayalım.

Gördüğünüz üzere, Book sınıfında üç adet fonksiyon var. Gizli olmayan (public) fonksiyon diğer bir fonksiyon olan updateTitle‘ı kullanıyor. Fakat üçüncü fonksiyonumuz olan notifyAuthor kullanılmıyor.

Temizlik zamanı

Ortada kullanmadığımız bir fonksiyon var. Bu fonksiyonu gönül rahatlığıyla silebiliriz:

<?php

class Book // Kitap
{
   public function doSomething(): void
   {
      // Bir şeyler yap
      $this->updateTitle("Kürk Mantolu Madonna");
   }

   private function updateTitle(string $title): void
   {
      // Başlığı güncelle
   }
}

Kodumuz kısaldı. Book sınıfını çok daha rahat bir şekilde okuyabiliyoruz.

Peki ya daha sonra projemize daha fazla yazar eklemeye karar verirsek ve bu yazarlardan bazılarını bilgilendirmemiz gerekirse; o zaman ne olacak?

Her ne kadar fonksiyonu silmiş olsak da, modern bir versiyon kontrol sistemi (mesela git) kullandığımız için, versiyonlamayı kullanarak bu fonksiyona ulaşabilmemiz mümkün.

Bir versiyon kontrol sistemi kullanmıyor musunuz? Kullanmalısınız!

Yorum Gönderin

Bir Cevap Yazın

%d blogcu bunu beğendi: