Kitap – Clean Code

25 Oca
Clean Code
Clean Code

Kitaplar kategorisinin bu yazısında Clean Code isimli kitabı konu ediyorum. Robert Cecil Martin imzalı bu kitap, Prentice Hall yayınlarından çıkmıştır.

Yaklaşık 430 sayfalık bir kitaptır. Dili İngilizce olup gayet akıcı ve anlaşılırdır.

Clean Code, yazılım geliştiricilere temiz kod yazma konusunda iyi bir rehberdir. Yazılım geliştirme deneyimi 40 yılı aşkın olan bir yazar tarafından kaleme alınmıştır. Bu bağlamda, sırf kod örnekleri ile kalmayıp tecrübe aktarımı ile de süslenmiş bir eserdir.

Temiz kod yazmak, bilgisayarlar tarafından kodun düzgün çalıştırılmasını veya anlaşılmasını değil, kodumuzu okuyan diğer geliştiriciler tarafından kodun doğru şekilde anlaşılmasını amaçlamaktadır. Temiz kod, projelerin zamanla yönetilebilir olmaktan çıkmasını engellemektedir. Dolaylı olarak maliyetleri de düşürdüğü görülmektedir.

Örnek kodlar Java programlama dili ile yazılmıştır. Örnekleri anlamak için Java, C, C# gibi programlama dillerini bilenler de örnekleri anlama noktasında çekmeyeceğini düşünüyorum. Örnekler gayet anlaşılır şekilde açıklanmıştır. Nelerin yapılıp yapılmaması konusunda birçok örnek verilmiştir.

Tek başına program yazanların kendine özgü kod yazım biçimleri veya geliştirdikleri kişisel yöntemler olabilir. Bu kitabı önemsemeyebilirler. Ancak kurumsal bazda proje geliştirenlerin aynı standartta, okunabilir ve yönetilebilir kod yazmaları, projenin hayatını devam ettirebilmesi için şarttır. Kurumsal geliştiriciler için iyi bir kaynak olabileceği kanısındayım.

Kitabı amazon.com’dan satın aldım. Kitaba diğer yurt dışı alışveriş siteleri üzerinden ulaşmak da mümkündür. Şu anda bu tarz kitaplara ülkemizde satılmamaktadır. Temennimiz bu tarz kitapların ülkemizde de satılmaya başlamasıdır.

Eclipse Ortamından TFS ile Çalışmak

9 Oca

Büyük ölçekli kurumlarda geliştirilen projelerde birden fazla programlama dili ile geliştirme yapılabilmektedir. Bu yüzden birbirinden farklı çalışma ortamları gerektiren bir durum ortaya çıkmaktadır. Farklı ortamlarda çalışılsa bile proje kaynakları aynı noktada toplamak gerekebilir. Örneğin Microsoft ürünleri ile geliştirme yapan bir şirketin, Java ile ilgili bir projeye de yer vermesi gerektiği durumlara çözüm sunulabilmelidir.

Microsoft tarafından geliştirilen uygulama yaşam döngüsü (ALM) çözümü olan TFS (Team Foundation Server) Microsoft ürünleri dışındaki platformlara da hizmet sunabilmektedir. Visual Studio üzerinden bağlanarak geliştirme yapabildiğimiz gibi Eclipse üzerinden de TFS projesi oluşturup yönetebiliriz.

TFS Cross-Platform

Eclipse üzerinden TFS bağlantısı sağlayabilmek için öncelikle Eclipse için TFS plug-in eklentisini yüklememiz gerekir. Eklentiyi yükledikten sonra TFS bağlantısını sağlamak için üst menüden Window->Show View-> Other seçeneği seçilerek açılan pencerede Team Foundation Server içerisindeki Team Explorer seçilir.

Show View
Show View

(TFS Plug-in yüklenmeden bu seçenek görünmeyecektir.) Bu menü seçildiğinde açılan pencere aşağıdaki gibi olacaktır.

Team Project
Team Project

TFS üzerindeki bir projeye bağlantı sağlandıktan sonra mevcut projede bir kaynak varsa bu kaynağı Eclipse üzerine çekip çalışmaya başlayabiliriz. Eğer önceden çalışılmış bir proje kaynağı yoksa kendimiz bir proje oluşturup bu projeyi TFS üzerinde paylaşabiliriz.

Eclipse üzerinde bir proje oluşturup bu projeyi TFS üzerinde paylaşarak ilerleyelim. File-> New -> Project seçeneği ile bir Java projesi oluşturalım. Oluşturduğumuz yeni projeyi TFS üzerinde paylaşmak için Package Explorer penceresinden projeye sağ tıklayıp Team->Share Project seçeneğini seçelim.

Eclipse Share Project
Eclipse Share Project

Proje paylaşım süreci tamamlandığında Eclipse üzerinde Team Explorer adında yeni bir pencere açılacaktır.

Eclipse Team Explorer
Eclipse Team Explorer

Java projesi üzerinde gerekli değişiklikler yapıldıktan sonra, örneğin yeni sınıf eklemesi gibi değişikliklerden sonra Team Explorer penceresindeki Check In  düğmesini tıklayarak proje dosyalarını TFS üzerine gönderebiliriz. Örneğin bir sınıf oluşturup Check In işlemini gerçekleştirdiğimde TFS üzerindeki değişikliği göstermek istiyorum.

Eclipse Code
Eclipse Java Code

Bu kodu Check In işleminden sonra TFS üzerinde şu şekilde görüntüleyebiliriz.

TFS Java Code
TFS Java Code

Artık istediğimiz noktadan kodlarımıza erişim sağlamamız mümkün. TFS üzerinde gerekli ayarlamaları yaparak projemize istediğimiz takım arkadaşımızı ekleyebiliriz.

Bir Metodun Single Responsibility Principle Bakımından İncelenmesi

4 Oca

Bu yazımızda SOLID prensiplerinden ilki olan Single Respoinsibility Principle(Tek Sorumluluk İlkesi) üzerinde duracağız. Daha önceki yazılarımdan birinde bu prensibi giriş seviyesinde inceleme şansı bulmuştuk. Bu yazıda biraz daha farklı bir yöntemle prensibe yaklaşmak istedim. Bir örnek kod üzerinde yapılmış ihlalleri ortaya koyup, bu soruna SRP ile çözüm bularak ilerlemeye çalışacağız.

public class StringCalculator
{
    public int Add(string number)
    {
       if (number.Length==0)
       {
           return 0;
       }
       return int.Parse(number);
   }
}

Bu sınıfa ait Add() metoduna baktığımızda metodun, Single Responsibility Principle bakımından bazı problemleri olduğu görüyoruz. Bu metodun çok fazla bilgiye sahip olduğu ortada. Metodun sahip olduğu bilgiler:

  • Ne zaman “0” döndüreceğini biliyor.
  • Döndürülecek default değerin “0” olduğunu biliyor.
  • Sayıların dönüştürme(parse) detaylarını biliyor.
 public class StringCalculator
 {
    private const int DefaultValue = 0;

    public int Add(string number)
    {
        if (isNumberEmpty(number))
        {
           return DefaultValue;
        }
        return parseSingleNumber(number);
    }

    private static bool isNumberEmpty(string number)
    {
        return number.Length == 0;
    }

    private static int parseSingleNumber(string number)
    {
       return int.Parse(number);
    }
}

Add() metodunun bilmemesi gereken durumları metodun dışına çıkardık. DefaultValue değeri değişeceği zaman veya number parametresinin boş(empty) olduğu durum kontrolünün değişeceği zaman sadece ilgili private metoda bakmamız yeterli olacaktır.

Bu durumda Add() metodunun, sadece algoritmayı bildiğini görebiliriz. Uygulama detaylarına dair hiçbir şey ile ilgilenmiyor. Yani metodun tek sorumluluğu sadece algoritmayı takip etmektir.

Metodalarımıza baktığımızda onları kitap gibi okuyabilmeliyiz. Ne yaptığını ve niyetini anlayabilmeliyiz. Bu şekilde çalışırsak gereksiz yorum satırlarıyla kod açıklaması yapmak zorunda kalmayız.

Bir başka ipucunda görüşmek dileğiyle.