Yandex Metrica
Clean Code: İsimlendirmeler - Yasin Sunmaz

Yasin Sunmaz

Kodladıkça değişen bir dünya...

Clean Code: İsimlendirmeler

27.04.2022 yasinsunmaz 570 0

Merhabalar Clean Code ile ilgili yazılarıma devam ederken biraz da örneklerin olduğu bir yazı yazmak istedim. İyi ve kötü örnekler üzerinden farkı görüp değerlendirebilirsiniz. Clean Code'a Giriş yazımda isimlendirmeler ile ilgili uyulması gereken kuralları bahsettim. Bu kurallara uyarak doğru isimlendirmeler yapabilirsiniz. Doğru isimlendirmeler ile kodlarınız sizden sonraki geliştiriciler için güzel bir miras olacaktır. :) O yüzden buna kurallara uyarak geliştirmeye gayret gösterelim.

Basit isimlendirme bile olsa anlamlı bir isimlendirme kullanmanız en doğrusudur.

Kötü

int d;

İyi:

int daySinceModification;

Yanıltıcı isimlendirmelerden kaçının.

Kötü

var dataFromDb = db.GetFromService().ToList();

İyi:

var listOfEmployees = _employeeService.GetEmployees().ToList();

Veri tiplerine göre isimlendirmenin başına kısaltma olarak yazmayın. Verinin tipine göre değil anlamına göre isimlendirme kullanın.

Kötü

int iCounter;
string strFullName;
DateTime dModifiedDate;

İyi:

int counter;
string fullName;
DateTime modifiedDate;

Bunun yanı sıra parametrelerde de aynı durum geçerlidir. Parametre isimlendirmelerinde anlamlı şekilde isimlendirme yapmalısınız.

Kötü:

public bool IsShopOpen(string pDay, int pAmount)
{
    // kodlar
}

İyi:

public bool IsShopOpen(string day, int amount)
{
    // kodlar
}

Büyük harfli isimlendirmeler işlevleriniz hakkında bir çok şey söyler. Ama bu kurallar öznel olup sadece sizin ekibiniz ile beraber karar verip kullanılması uygundur. Aksi durumda büyük harfli isimlendirmeler yerine CamelCase isimlendirme daha doğru olacaktır.

Kötü

const int DAYS_IN_WEEK = 7;
const int daysInMonth = 30;

var songs = new List { 'Back In Black', 'Stairway to Heaven', 'Hey Jude' };
var Artists = new List { 'ACDC', 'Led Zeppelin', 'The Beatles' };

bool EraseDatabase() {}
bool Restore_database() {}

class animal {}
class Alpaca {}

İyi:

const int DaysInWeek = 7;
const int DaysInMonth = 30;

var songs = new List { 'Back In Black', 'Stairway to Heaven', 'Hey Jude' };
var artists = new List { 'ACDC', 'Led Zeppelin', 'The Beatles' };

bool EraseDatabase() {}
bool RestoreDatabase() {}

class Animal {}
class Alpaca {}

Telaffuzu zor olan isimlendirmeler geliştiricinin anlamasını zorlaştıracak ve ek araştırma yapmasına sebep olacaktır. Bunun yerine açıkça belirtmelidir.

Kötü:

public class Employee
{
    public Datetime sWorkDate { get; set; } // s harfinin anlamını farklı şeyler olabilir
    public Datetime modTime { get; set; } // aynı şekilde mod neyin kısaltması ya da mod ile ne alakası var?
}

İyi:

public class Employee
{
    public Datetime StartWorkingDate { get; set; }
    public Datetime ModificationTime { get; set; }
}

CamelCase isimlendirme kullanın.

Kötü:

var employeephone;

public double CalculateSalary(int workingdays, int workinghours)
{
    // kodlar
}

İyi:

var employeePhone;

public double CalculateSalary(int workingDays, int workingHours)
{
    // kodlar
}

Kodunuzu okuyan kişiler de programcıdır. Bir şeyleri doğru adlandırmak, herkesin aynı şeyleri anlamasına yardımcı olacaktır. Herkese bir değişkenin veya fonksiyonun ne işe yaradığını açıklamak için zaman harcamak istemez.

İyi:

public class SingleObject
{
    // SingleObject nesnesi yarat
    private static SingleObject _instance = new SingleObject();

    // Özel bir sınıf yap
    private SingleObject() {}

    // Sadece mevcut tek nesneyi al
    public static SingleObject GetInstance()
    {
        return _instance;
    }

    public string ShowMessage()
    {
        return "Hello World!";
    }
}

public static void main(String[] args)
{
    var singletonObject = SingleObject.GetInstance();

    // Mesajı göster
    singletonObject.ShowMessage();
}

Genel olarak isimlendirmeler ile ilgili örnekleri inceledik. Bu ve bunun gibi isimlendirmeler yaparken bunlara dikkat etmelisiniz.

Clean Code'a Giriş adlı yazımı da okumanızı tavsiye ederim.

Diğer Prensipler:

Clean Code: KISS Prensibi

Clean Code: DRY Prensibi

Clean Code: YAGNI Prensibi

Clean Code: Least Astonishment Prensibi

Kaynak:

https://github.com/thangchung/clean-code-dotnet#naming

Umarım faydalı olmuştur. İyi çalışmalar dilerim.

  • Yorum yapabilmek için giriş yapmalısınız. Giriş yapmak için tıklayınız.

Diğer Yazılar

Clean Code: High Cohesion Low Coupling

17.05.2022 yasinsunmaz 846 0

Clean Code içinde bahsedeceğimiz bir diğer konu ise "High Cohesion Low Coupling" yani "Yüksek Birliktelik ve Düşük Bağımlılık"'tır. &O...

Clean Code: Least Astonishment Prensibi

21.04.2022 yasinsunmaz 431 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip Principle of Least Astonishment'dir. Principle of Least Astonishment En Az Şaşkınlık Prensibi olara...

Clean Code: YAGNI Prensibi

20.04.2022 yasinsunmaz 1077 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip YAGNI(You Ain’t Gonna Need It)'dir. Bu prensip genel anlamda vurguladığı şey: İhtiy...

Clean Code: DRY Prensibi

19.04.2022 yasinsunmaz 897 0

Clean Code ve SOLID konuları ile birlikte bilmemiz gereken bir diğer prensip DRY(Don’t Repeat Yourself)'dir. Bu prensib genel anlamda vurguladığı şey: Kendini tekrar...

RedisConnectionException Hatası ve Çözümü: AbortOnConnectFail=false

31.07.2023 yasinsunmaz 782 0

Redis, popüler bir açık kaynaklı veri yapısı sunucusudur ve günümüzde birçok uygulama tarafından kullanılmaktadır. Ancak, bu tür veri tabanla...

ASP.NET Core Web API'de Parametre Bağlama Yöntemleri: FromQuery, FromBody ve FromRoute

12.07.2023 yasinsunmaz 1264 0

ASP.NET Core web API projeleri, istemcilerden gelen verileri API metotlarıyla etkileşimde bulunmak için kullanılır. Bu verileri doğru bir şekilde almak ve işlemek içi...

Deployment Stratejileri (Blue Green, Rolling Update/Rollback) Nedir?

23.06.2023 yasinsunmaz 638 0

Yazılım geliştirme sürecinde, uygulamaları güncellemek ve yeni sürümleri piyasaya sürmek önemli bir adımdır. Ancak, kullanıcıların kesintisiz hizmet a...

SonarQube Kurulumu: Adım Adım Kılavuz

18.06.2023 yasinsunmaz 1252 0

SonarQube, açık kaynaklı bir statik kod analizi platformudur ve geliştiricilere kod kalitesini, güvenliğini ve performansını iyileştirmeleri için yardımcı olur. ...

Active Directory LDAP İle Kullanıcı Kimlik Doğrulama .NET

05.12.2022 yasinsunmaz 2462 0

Active Directory LDAP ile kullanıcıyı belirli bir filtre üzerinde arama veya kullanıcının kimliğini doğrulama işlemleri yapabilmekteyiz. Bu LDAP protokolünde DirectorySer...

SOLID Yazılım Prensipleri

26.11.2022 yasinsunmaz 833 0

SOLID prensipleri yazılım geliştirmede başlarda anlayıp uygulaması zor olsa da buna uyarak kod geliştirmenin faydasını zamanla görebilirsiniz. Yazdığınız kodlarda sonradan yap...

Regex, Regular Expressions Genel Kullanımı

03.08.2022 yasinsunmaz 2016 0

Bir çok yazılım dilinde bazı kontroller için Regex ifadeler ihtiyaç duyabiliyoruz. Bunların en başında e-posta, telefon ve web site geliyor. Bunların doğruluğu...

Visual Studio'da Aynı Anda Birden Çok Proje Çalıştırma

21.05.2022 yasinsunmaz 3096 0

Katmanlı mimari projelerimizde ya da bir web sitenin kullanıcı arayüzü ve admin dediğimiz yönetici ekranları aynı uygulama içerisinde geliştirebiliyoruz. Admi...