Kaliteli Yazılım Geliştirmek ve Kodlama Standartları

Bu yazımda nasıl daha okunabilir ve performanslı kodlama yapılır hakkında tecrübelerimi ve araştırmalarımı paylaşacağım, yeni bilgiler öğrendikçe de bu yazıyı güncelleyeceğim. Eksik gördüğünüz bir kısım varsa veya yeni maddeler eklemek isteyen arkadaşlar olursa lütfen yorum olarak gönderiniz.
1 -) İnterfaceleri isimlendirirken I harfi ile başlayabilir. Örneğin ISekil gibi.
2 -) İnterfaceden implement edilen classların isimlerinin sonunda Impl olmalıdır. Örneğin UcgenImpl gibi
3 -) Herzaman olmamakla birlikte aşağıdaki örnekteki gibi durumlarda if/else yerine switch/case yapısı kullanmak kodumuzun daha performanslı çalışmasını sağlayacaktır.

if (entry.State == EntityState.Added)
{
audit.NewData = newValues.ToString();
}

else if (entry.State == EntityState.Deleted)
{
audit.OldData = oldValues.ToString();
}

else if (entry.State == EntityState.Modified)
{
audit.OldData = oldValues.ToString();
audit.NewData = newValues.ToString();
}

switch (entry.State)
{
case EntityState.Added:
audit.NewData = newValues.ToString();
break;
case EntityState.Deleted:
audit.OldData = oldValues.ToString();
break;
case EntityState.Modified:
audit.OldData = oldValues.ToString();
audit.NewData = newValues.ToString();
break;
default:
break;
}

4 -) Collection kullanımı için Array en hızlı, List orta, ArrayList en yavaşıdır.
5 -) For ve Foreach döngüleri için kullanılan veri tipi array ise foreach çok az farkla daha hızlıdır, list kullanımı için for döngüsü daha hızlıdır, arraylist için ise for döngüsünün hızı zaman zaman 2 kata kadar daha hızlıdır.
6 -) User İnterface kontrollerin isimleri Button için btn, Label için lbl, Combobox için cmb, Table için tbl, Checkbox için chk, Grid için grd ile başlamalıdır. Örneğin btnKaydet, cmbOgrenim, lblAd gibi[/box]
7 -) Kodlama yapılırken comment eklenmelidir. Tek satır commentlemek için // ifadesi birden fazla satır için ise /* buaraya comment yazılacak */ şeklinde comment yazılmalıdır.
8 -) Değişken, metod ve class isimleri anlaşılır olmalıdır. Uzun olmasının çok önemi yoktur. Kodun okunabilir olması için int a=0; gibi değişken tanımlamalar yerine long tcKimlikNo; şeklinde tanımlanmalıdır.
9 -) Yüklü sorgu yapan ya da uzun süreli transactionı bulunan veritabanı işlemleri için stored procedured, function , view kullanılmalıdır. Bu yapıların kullanılmasını kodun performansını artıracaktır.
10 -) Kodun okunabilir olması için kodu regionlarla bölebiliriz.
11 -) UML Class Diagram, System Sequence Diagram, State Machine Diagram çizerek projeyi daha net görebiliriz.
12 -) Yazılan her kod bloku için try – catch yapısı kullanılabilir.
13 -) Gereksiz yere değişken kullanılmamalıdır.
14 -) Grid kullanılan uygulamalarda db paging kullanılmalıdır.
15 -) Eğer web uygulaması geliştiriyorsak css, js kodlarını html içine yazmak yerine ayrı birer dosyaya yazıp yazılan sayfamıza import edebiliriz.
16 -) Design pattern lardan yararlanabiliriz.
17 -) Junit, NUnit gibi test case toollarını kullanabiliriz.
18 -) Solution yapısında düzenli bir klasörleme yapısı kullanarak takım çalışmasına daha yatkın projeler üretilebilir, örneğin style dosyaları bir klasör altında, javascript klasörleri bir klasör altında toplanabilir.
19 -) Object oriented dillerde, class isimleri kesinlikle büyük harfle, fonksiyon isimleri kesinlikle küçük harfle başlamalıdır. Birden çok kelime içeren fonksiyon isimleri için, ilk kelimenin baş harfi küçük yazıldıktan sonra, diğer başlangıç harfleri büyük yazılabilir. Örneğin: addMeInDataBase();
20 -) Try-Catch blokları içerisine spesifik düzenlenecek exception fonksiyonları için, fonksiyonun anlamını ortaya koyan kelimelerden sonra, Exception ekinin bulunması, kodları okunabilir yapar. Örneğin: DosyaAcmaException();
21 -) Bir dosya içerisinde çok fazla satır kod bulundurulmamalı (örn: 2000 satır class olmaz) mümkün olduğu ölçüde bölünmeli
22 -) Util Tools gibi küçük işlemleri kontrolleri yapabilecek fonksiyonları içerisinde toplayan classlar oluşturulabilir.
23 -) Yapılacak her iş O iş için tasarlanmış teknolojiyle geliştirilmeli(Örn: C#/Java ile client validation yapılmaz bunun için javascript var)
24 -) Yapılacak uygulama mümkün olduğunca parçalanmalı her parça arasında belirlenmiş protokoller doğrultusunda haberleşme olmalı her parça bir birinden bağımsız çalışabilmeli(Örn: Katmanlı mimari)
25 -) Algoritma hazırlanırken olabilecek en kısa ve sade olacak şekilde yapılmalı. Bunu yaparken daha karışık hal almamasına dikkat edilmeli.
26 -) Kullanılan dilin sağladığı kolaylıklar tespit edilmeye çalışılmalı ve kullanılmalı (Visual Studio : #region #endregion / C# : extend metod )
27 -)Javada Kod Standartları

« »