Kod Standartları
Bu yazıda, kodlama yaparken kullanılan bazı standartlardan bahsedeceğim. Sürdürülebilir ve geliştirilebilir bir yazılım mimarisinde kodlama standartlarına uymak bir yazılımcı için vazgeçilmez bir kural olmalıdır. Şirketlerin kendi insiyatifi ile geliştirdiği bazı standartlar olmakla birlikte, dünya çapında kabul edilmiş kod standartları da bulunmaktadır. Uygulama geliştiricilerin günümüzdeki öneminin ne kadar fazla olduğu bilinen bir gerçek olmaya başladı. Bu gerçeği göz önüne alan şirketler artık bünyelerinde yazılım ekipleri bulundurmaktadır. Zamanla ekipte değişiklikler olması da karşılaşılan durumlar arasındadır. Burada dikkat edilmesi gereken gelen kişinin işe adaptasyon süresini kısaltmak ve şirketin bu değişimi minimum bir zararla atlatmasını sağlamaktır. Kod standartlarının şirketlere verdiği avantaj bu değişimle ya da ekip büyütüldüğünde ortaya çıkmaktadır. Aynı şekilde bir uygulama geliştiricinin de bu standartları bilmesi ve uygulaması onunda yeni projelere destek vermesi noktasından maksimum bir avantaj oluşturmaktadır.
İlginizi Çekebilir: Büyük Veri ve Geleceği
Kod standartları için konuşan insanların aynı dilde iletişime geçmesini örnek gösterebiliriz. Farklı ana dile sahip inanların aynı dili konuşarak bir projeyi yürütmesi ile farklı dili konuşup aynı projeyi yürütmeye çalıştıklarını karşılaştırdığımızda hangisinin daha verimli olacağını söylemeye gerek yoktur.
Projelere sonuç odaklı yaklaşıp gelişme veya güncelleştirme evresini dikkat etmeden ilerlemek, belki projeyi başarılı bir şekilde bitirebilir, ancak bu projenin gelişiminde veya güncelleştirmesinde yapılacak bir istekte size normalinden çok fazla geriye götürebilir. Belki de aynı işi yapan birden fazla projeyi yeniden tasarlamaya çalışmanıza neden olacaktır.
Birçok standart bulunmaktadır.
- Naming Standard (İsimlendirme Standardı)
- Class Standard (Sınıf Standardı)
- Method Standard (Metot Standardı)
- Member Standard (Değişken Standardı)
- Namespace Standard (Kütüphane Standardı)
bunlardan bazılarıdır.
STANDARTLAR
A. İsimlendirme Standartları
Birçok isim standardı bulunmaktadır. Pascal Case, Camel Case, Upper Case, Hungarian vb…
1) Pascal Casing
Tanımlayıcıdaki ilk harf ve sonraki her bir birleştirilmiş kelimenin ilk harfi büyük harf kullanılır. Üç veya daha fazla karakterin tanımlayıcıları için Pascal kılıfını kullanabilirsiniz.[1]
BackColor; AppDomain; ErrorLevel; RedValue;
2) Camel Case
Bir tanımlayıcının ilk harfi küçük harflerle ve daha sonra birleştirilmiş kelimenin ilk harfi büyük harfle yazılır. [1]
backColor; appDomain; errorLevel; redValue;
3) Upper Case
Tanımlayıcıdaki tüm harfler büyük harfle yazılmıştır. Bu kuralı yalnızca iki veya daha az harften oluşan tanımlayıcılar için kullanın. [1]
System.IO; System.Web.UI;
4) Hungarian
Pascal standardına ek olarak tanımlayıcının başına tip ön takısı gelmektedir. [1]
bool bStatus; int iYear; string strName;
Sınıf Standartları
Bir sınıfın veya arayüzün tek bir amacı olmalıdır. Başka bir sınıfa özel değil birden fazla uygulamayı destekleyecek seviyede olmalıdır. Birbirlerine bağlanması gereken sınıflarda arayüzler kullanılmalıdır. Sadece statik olarak eleman içeren sınıflar static olarak tanımlanmalıdır.
Sınıf içeriğine özel olarak yazılmış olan değişkenlerinizi sınıf dışından gözükecek şekilde tanımlamayınız. Sınıflar arası karşılıklı bağımlılığa izin vermeyin. Bunun yerine arayüzler kullanarak birbirlerine bağlayınız. Dış kaynaklara erişim yapılacaksa (IO,WebService, Sql) IDisposable arayüzü implemente edilmelidir. [3]
İlginizi Çekebilir: Linux Komutları
Metot Standartları
Metotlar 7 parametreyi aşmamalıdır. Çok fazla parametre alan metot karmaşık ve sürdürülebilirliği azdır. Metodu kendini açıklayan birden çok ve küçük parçalara ayırın. Çok fazla parametre alan metotlarda alınan parametreleri bir obje olarak içeriye alın.
Olumsuz tanımlamalardan kaçının. Mesela HasNoRowValue yerine HasRowValue kullanın.
Switch-Case yapısında case‘ler arasında çok fazla kod bulundurulmamalıdır. Bunlar ayrı bir metot ile yazılmalıdır.
Kodlama yapılırken hardcode ifadeler kullanılmaktan kaçınılmalıdır. Kullanılan sabitler ayrı olarak tanımlanmalıdır.
REFERANSLAR
[1] https://msdn.microsoft.com/en-us/library/xzf533w0(v=vs.71).aspx[2] http://www.dofactory.com/reference/csharp-coding-standards
[3] http://csharpguidelines.codeplex.com/releases/view/46280
Yazılım Mühendisi
Aktif Mühendislik