1. Refactoring’e inanın!
İlk işlevi yapan algoritmayı oluşturuduktan sonra, aynı algoritmayı
daha az kod ile nasıl yazabileceğinizi düşünün ve tekrar kodunuzu revize
edin. Ortaya çıkan kod’a tekrar bakın ve kod’u daha ne kadar
kısaltabilirim diye düşünün!
2. Refactoring araçlarını kullanın
Refactoring’de size yardımcı olabilecek bir çok araç mevcut
ReSharper, CodeRush, Assist X gibi yazılımlar kaliteli ve düzenli kod
yazmanız için sizi zorlar ve kod görgünüzü arttırır (nasıl şeyse!).
Belirli notasyonları ve global kurallarıda uygulamayı hep hatırlatarak
daha global kod yazmanızı sağlayabiliyorlar.
3. Regex
Özellikle string’lerde yapacağınız replace, parse, matching
işlemlerinde Regex sınıfını tercih edin. Böylece öngörmediğiniz karakter
setleri ile karşılaştığınızda method kararlılıkla çalışır. Regex’in bir
diğer avantajıda Compiling ve Caching mekanizmalarının olmasıdır. Büyük
string’lerle çalışırken Static Methodları (Regex.IsMatch) ve�
RegexOptions.Compiled özelliklerinden yararlanın.
4. Boxing – Unboxing
Boxing işlemleri her zaman pahalıdır. Tasarımınızı yaparken bu
durumlarıda göz önüne alın ve nesnelerinizi ona göre tasarlayın. Ne
kadar az boxing işlemi, o kadar çok performans demektir.
5. "Early Adapter" olun
.Net 4.0 çıkmışken, .Net 3.5 ile projeye başlamak pek akıl karı
değildir. .Net Framework bize gösterdi ki her sürüm bir öncekiden iyi
özelliklerle ve arttırılmış performansla geliyor, bu nedenle
framework’ün en son özelliklerini ve sürümlerini kullanmaktan
çekinmeyin.
6. "Data Access Layer" için çok zaman harcamayın
Artık teker, teker sql sorguları yazıp gelen veriyi nesnelere atama
devri kapandı sayılır. Özellikle Microsoft’un Linq to SQL’i çıkardıktan
sonra ORM araçları daha yaygın hale geldi. Data Access’e artık o kadar
kafa yormanıza gerek yok.
Linq to SQL, Entity Framework, NHibernate emrinizde.
7. "as" operatorünü yabana atmayın
Tür dönüşümlerini geleneksel olarak değilde "as" keyword’ü ile hem
kod’un okunmasında, hem kod’un yazılmasında hemde runtime’da ki
performansındaki faydalarından yararlanırsınız. Ek olarak tür dönüştürme
gerçekleşmediği zaman hata vermez size sadece null döndürür.
Örnek:
object obj = new AcayipTur();
AcayipTur aTur = obj as AcayipTur;
if(aTur != null)
// devam…
8. Readonly imzası
Algoritmanın içinde sabit bir değişken olacaksa gelende "const" ile
imzalanır, const yerinde "readonly" kullanın. Hem static yapabilirsiniz,
hemde bazı durumlarda const’tan daha güvenilirdir.
9. StringBuilder kullanmayanı dövüyorlar.
Her türlü string işlemlerinde StringBuilder class’ından faydalanın
özellikle uzun metinlerdeki performansı ile sizi iyi bir programcı
olarak gösterecektir.
10. Biraz kıl olun, checked ve unchecked kullanın.
Kritik bazı hesaplamalar yapacaksanız tip uyumluluğu ve boxing
işlemlerinde kodunuzu daha güvenli hale getirmeniz şart. "checked"
anahtar kelimesini kullandığınızda tüm tür dönüşümlerini kontrol eder ve
OverFlow exception’ının fırlatılmasını sağlar. Sizde bunu yakalayıp
kritik uygulamanızda bir şeylerin yanlış gittiğini anlarsınız.
11. Condition’ları sevmeyin
if-then-else, switch() bloklarını ne kadar çok kullanırsanız o kadar
çok başınız dertte demektir. Unutmayın ki kullandığınız csharp dili
tamamen Object Orient bir dildir nimetlerinden yararlanın.
Bu olayla ilglii Cihat ALTUNTAŞ’ın çok güzel bir örneği var : http://www.cihataltuntas.com/?p=201
12. Struct’ı bilmeniz yetmez kullanmanız gerekir.
Daha önce burda yazmıştım.
Struct ile türlerinizi gruplayabilir ve veriye erişmende performans elde
edebilrisiniz.
13. Değişkenlere ve Method’lara Anlamlı İsimler Verin
Yeri geldiği zaman artislik olsun diye şu özdeyişimi söylerim : Kod
bir kere yazılır, On kere okunur. (Tabi burdaki "Kod bir kere yazılır"
cümlesi okumayla, yazılma arasındaki farklı göstermek için mubağlalı
aktarılmıştır)
Gerekirse uzun uzun isimler verin, Bundan 6 ay sonra projeye tekrar
baktığınızda hiç yabancılık çekmeyecek kadar çok değişken isimlerini ve
methodlarını anlamlı kılın. Konu ile ilgil olarak "Fluent Interface" ‘i
inceleyebilirsiniz.
14. Source Control
Her zaman kaynak kod yönetiminiz olsun. SVN veya Git‘i tercih
edebilirsiniz. Eğer imkanınız varsa hosted version’larını tercih edin,
böylece kaynak kodlarınız asla kaybolmaz ve internet erişimi olan
heryerden ulaşabilirsiniz.
15. .Net Reflector (http://www.red-gate.com/products/reflector/)
Derlenmiş .Net Assembly’lerini DisAssembly eden yani kodlarını
gösteren çok yararlı bir araçtır. .Net Framework’ü anlamanıza,
beğeniğiniz programları incelemenize yarar, böylece neyin nasıl olduğunu
öğrenmiş olursunuz.
Reflector’ün alternatifi olarak Özcan DEĞİRMENCİ ‘nin geliştirdiği Fox Decompiler‘i
kullanabilirsiniz.
16. Design Patterns (http://www.dofactory.com/patterns/patterns.aspx)
Gang of Four‘un sizin için kafa yorup geliştirdiği yapılardan
haberdar olun. Ezberlemeye gerek yok, sadece ismini ve ne işe yaradığını
bilmeniz kafi yeri geldiği zaman bakar, uygularsınız.
17. OSS (Open-Source Software)
Açık kaynaklı projeler oluşturup, dünya ile paylaşın, belki hobi
olarak başladığınız proje sizin esas işiniz olur! (Apache Web Server
bunun güzel bir örneğidir)
18. Interface ve Abstract
OOP’ni olmazsa olmazlarından, programcının hayatını kolaylaştıran bu
iki kavramı iyi kullanmak gerekiyor. İkiside aynı şeyi kendi tarzlarına
göre yaparlar ve programlarımızın daha yönetilebilir olmasını
sağlarlar.
19. IoC , Dependency injection
IoC (Inversion Of Control), DI (Dependency injection) gibi
yaklaşımlardan haberiniz olsun, Bu gibi yaklaşımlar OOP üzerinde sihir
etkisi yaparak hayatınızı kolaylaştırıp sizi ay’ın üzerine
çıkartıtorlar.
Bu yaklaşımları Windsor ve Microsoft
Unity 2.0
container’larını kullanabilirsiniz.
20. Agile, Scrum
Çevik yazılım geliştirme yaşam döngülerinden haberdar olun ve
projelerinizde uygulamaya çalışın. Önceleri yarım yamalak olur daha
sonra taşlar yerine oturdukça size hız kazandırır, belli standart’larla
hareket etmenizi sağlar ve yine programcının mutlu olmasını sağlar.