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: İsimlendirmeler
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: 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.