Clean Code Yazma Sanatı ( C# , Java )

Katılım
30 Ağu 2020
Mesajlar
407
Beğeniler
4
Konum
istanbul
Öncelikle merhabalar, bir süre evde geçireceğimiz zaman içerisin de yazılara daha çok önem vermeye başladım. Ekstra olarak eğitim kategorisinde bir youtube kanalı açtım. Burada Android, Design, Web Programlama ve Büyük şirketlerin daha önce sorduğu ve ( hackerrank-leetcode gibi sitelerde yayımlanan) soruları çözüyoruz. Kanal yeni olduğu için eksikleri olabilir. ( Eğitimler de mic olucak). Youtube Kanalının linkini bırakıyorum destek olmak isterseniz beklerim.
Link : Dev Sheriff

Hadi yazımıza geçelim :)

Image for post

Image for post

Temiz ve etkili kod yazmanın en önemli ve temel kurallarından bir tanesi isimlendirme kurallarıdır. İsimlendirme kuralı kodun temiz bir şekilde okunmasını sağlar.

İsimlendirme kuralının en başında değinilmesi gereken yazım şekli aşağıdaki gibidir.

Image for post

Image for post

Bu şekil de bir isimlendirme yapan bir yazılımcının iki farklı nedeni olabilir.
1-) O an çok acelesi var.
2-) Ya da alışkanlıkları sonucu bunu yapıyordur.

Bunun en büyük etkisini ilerleyen zamanlarda belli olur. Bu s değişkenini bir metod içerisinde bir den fazla kullandığımızda s değişkeninin yaptığı işlevi ve neyi simgelediğini karıştırılabilir. Yani kolay bir şekilde programcıdan istenilen yapılabilecekken, zor yol tercih edilmiş olunur. Sonuç olarak, tersine mühendislik olayını ne kadar kısaltabilirsek bizim için o kadar iyi olur.

Modern dilleri incelediğimizde adlandırma işlemi yaparken açık bir şekilde bu işin yapıldığını görebiliriz. Bir çok programcı kısaltma yapmanın daha iyi olduğunu düşünebilir. Ama bu diğer programcılar ve literatüre göre hatalı bir kod yazımıdır. Açık bir şekilde uzun adlandırma yapımı clean code sanatının en önemli temelidir. Bir diğer önemli nokta ise ingilizce diline uygun bir şekilde isimlendirme yapmaktır. Türkçe kod malesef yazamayız, kodlarınız uluslararası dil ile yazılması gerekmektedir.

İngilizce dilini esas alarak kodlamanın önemini şöyle anlatabilirim, mesela uygulama için bir test yazdınız bütün sistemi çalıştırmadan metod isimleri sadece get ile başlayanları çalıştırabilirsiniz. İngilizce de get vb kelimeler veritabanından veri çekme gibi yerlerde kullanılır ve çoğu zaman ortakdır. Ama türkçe de böyle bir şey yok :( . Ama ben türkçe kullanmak istiyorum diyenler için ise ufak bir tüyo düşünebiliriz. Listele…, VeriCek…, gibi kelimeleri isimlendirme yaptığınız fonksiyonların önüne koyabilirsiniz.( Yani fiili başa koyabilirsiniz)

Ek olarak yazım şekli bir proje de çalışan programcılar arasında ortak olmalıdır. Pascal case yada camel case seçildiyse ona uyulmalıdır. C# ve Java cılar arasında ki tartışmalardan biri de Java programlama dilini kullananların Pascal Case’in yanlış olduğunu düşünmesidir. Ama C# programlama dili fonksiyon yazımında Pascal Case’i kullanmayı tavsiye ediyor. Java da ise fonksiyonlar Camel Case yazılıyor.

Bu kurallara uymak bizler için bir zorunluluk olmamalı, bu kuralların bizleri nasıl koruduğunu öğrendiğimiz de kullanmak için zorunlu hissetmekten kurtulacağız.

Aşağıda bulunan tablo bize aslında her şeyi açıklar niteliktedir.

Plural = Çoğul
Prefix = Ön ek
Suffix = Son ek
Abbreviation= Kısaltma
Underscores = Alt Çizgiler

Image for post

Image for post

1. Sınıf adları ve fonksiyon adları için PascalCasing yöntemini kullanın:
public class ClientActivity
{
public void ClearStatistics()
{
//...
}
public void CalculateStatistics()
{
//...
}
}
2. Fonksiyon parametleri ve yerel değişkenler için camelCasing komutunu kullanın:
public class UserLog
{
public void Add(LogEvent logEvent)
{
int itemCount = logEvent.Items.Count;
// ...
}
}
3. Tanımlama işlemlerinde Macar notasyonu veya başka bir tür tanımlama kullanmayın. ( Macar Notasyonu = Değişkenin tipini tanımlama işleminde kısaltılmış bir şekilde yazılmasıdır strTemp -> string Temp )

// Doğru Kullanım
int counter;
string name;
// Sakıncalı Kullanım
int iCounter;
string strName;
4. Sabitler veya salt okunur değişkenler için Screaming Caps kullanmayın:

// Doğru Kullanım
public const string ShippingType = "DropShip";
// Sakıncalı Kullanım
public const string SHIPPINGTYPE = "DropShip";
6. Kısaltmalar kullanmaktan kaçının. İstisnalar: Id, Xml, Ftp, Uri gibi ad olarak yaygın olarak kullanılan kısaltmalardır.

// Doğru Kullanım
UserGroup userGroup;
Assignment employeeAssignment;
// Sakıncalı Kullanım
UserGroup usrGrp;
Assignment empAssignment;
// Istısnalar
CustomerId customerId;
XmlDocument xmlDocument;
FtpHelper ftpHelper;
UriPart uriPart;
7. PascalCasing’i 3 veya daha fazla karakterden oluşan kısaltmalar için kullanın (2 karakter her ikisi de büyük harftir):

HtmlHelper htmlHelper;
FtpTransfer ftpTransfer;
UIControl uiControl;
8. Değişken isimlerin de alt çizgi kullanmayın. İstisna: Özel alanlara alt çizgi ekleyebilirsiniz:

// Doğru Kullanım
public DateTime clientAppointment;
public TimeSpan timeLeft;
// Sakıncalı Kullanım
public DateTime client_Appointment;
public TimeSpan time_Left;
// İstisnalar( Sınıf İçin)
private DateTime _registrationDate;
9. Bir sınıfı adlandırmak için isim veya isim öbekleri kullanın.

public class Employee
{
}
public class BusinessLocation
{
}
public class DocumentCollection
{
}
10. I harfiyle interfaceleri belirtin . Interface adları isim (ifadeler) veya sıfattır.

public interface IShape
{
}
public interface IShapeCollection
{
}
public interface IGroupable
{
}
 
Üst Alt