Mustafa ÖZCAN - Kişisel Web Sitesi

Türkçe İçerikli C# Kodlama Standartları

mustafaozcan - 19.02.2011 13:43:00
Türkçe İçerikli C# Kodlama Standartları

 

C# kodlama standartları konusunda Microsoft tarafından yada geliştiriciler tarafından yayınlanan içerikler İngilizce olarak bulunabiliyordu ancak bildiğim kadarı ile Türkçe olarak derli toplu bir yayın yoktu. Kadir ÇAMOĞLU, Volkan ATASEVER ve diğer gönüllülerin hazırladığı ve TiKS (Türkçe içerikli Kodlama Standartları) ismini verdikleri bu yayın ile bu konuda büyük bir eksiklik te giderilmiş oldu.

 

İçindekiler bölümü aşağıdaki gibidir.

1. Dosya Organizasyonu .................................................................................................... 10
1.1 Klasör Yapısı ....................................................................................................................... 10
1.2 Kaynak Kod Dosyaları ....................................................................................................... 11
2. Biçimlendirme ................................................................................................................... 12
2.1 Sınıf Yapısı .......................................................................................................................... 12
2.2 Girintileme ve Kapsamı Belirleme .................................................................................... 13
2.3 Bosluklar .............................................................................................................................. 14
3. Açıklamalar ......................................................................................................................... 14
3.1 Blok Açıklamalar ................................................................................................................. 14
3.2 Tek Satırlık Açıklamalar ..................................................................................................... 15
3.3 Satır İçi Açıklamalar ........................................................................................................... 16
3.4 Dokümantasyon Amaçlı Açıklamalar ............................................................................... 16
3.5 TODO Açıklamaları ............................................................................................................ 16
4. İsimlendirme Kuralları .................................................................................................. 17
4.1 Büyük/Küçük Harf Kullanımı ............................................................................................. 17
4.2 Pascal/Camel Casing ......................................................................................................... 18
4.3 C# Diline Özel Ayrılmıs Kelimeler .................................................................................... 18
4.4 Büyük/Küçük Harf Hassasiyeti ......................................................................................... 19
4.5 Kısaltmalar ........................................................................................................................... 21
4.6 Kelime Seçimi ...................................................................................................................... 21
4.7 “İsim Alanı” İsimlendirme ................................................................................................... 22
4.8 “Sınıf” İsimlendirme ............................................................................................................ 23
4.9 “Ara Birim” İsimlendirme ..................................................................................................... 23
4.10 “Öznitelik” İsimlendirme ...................................................................................................... 24
4.11 “Numaralandırma” İsimlendirme ........................................................................................ 24
4.12 “Sabit” ve “Salt Okunur” Alan İsimlendirme ..................................................................... 25
4.13 “Statik” Alan İsimlendirme .................................................................................................. 25
4.14 Parametre İsimlendirme ..................................................................................................... 25
4.15 Metot İsimlendirme .............................................................................................................. 26
4.16 Özellik İsimlendirme ............................................................................................................ 26
4.17 Olay İsimlendirme ................................................................................................................ 26
4.18 Değisken İsimlendirme ve İlk Değer Atama .................................................................... 27
4.19 Kontrol İsimlendirme ........................................................................................................... 27
5. Deyimler ............................................................................................................................... 29
5.1 Basit Deyimler ...................................................................................................................... 29
5.2 “Return” Deyimleri ............................................................................................................... 29
5.3 “If, if-else, if else-if else” Deyimleri .................................................................................... 29
5.4 “Switch” Deyimleri ............................................................................................................... 32
5.5 “For / Foreach” Deyimleri ................................................................................................... 34
5.6 “While/do-while” Deyimleri ................................................................................................. 35
5.7 İstisnai Durum Yönetimi...................................................................................................... 35
Kaynaklar ........................................................................................................................................ 38
TiKS (Türkçe içerikli Kodlama Standartları) Proje Ekibi ........................................ 40

 

Proje ekibi aşağıdaki gibidir. 20'ye yakın doküman gözden geçirici bu projede yer almıştır.

Proje Koordinatörü
Kadir Çamoğlu
Editör
Kadir Çamoğlu
Kapak Tasarımı
Hakan Çamoğlu
Yazarlar
Volkan ATASEVER
Merve CEYLAN
Burhan ÇETİNKAYA
Bahtiyar DİLEK
İrfan MEVSİM
Can YAPAN
Hakan YAVUZ
Yücel YILDIRIM

 

Türkçe içerikli C# Kodlama Standartları Sürümünü aşağıdaki linkten indirebilirsiniz.

C# : http://www.mediafire.com/?7umxy0eumpja8


Türkçe içerikli VB Kodlama Standartları Sürümünü de aşağıdaki linkten indirebilirsiniz.

VB : http://www.mediafire.com/?r90segid28a328b

 

Daha fazla bilgi için :

http://www.volkanatasever.com/post.aspx?id=20b7a495-ea52-436f-9cd7-4555fc282e78

Taglar : , ,

Kategoriler : C# | İpucu (Tips & Tricks) | Visual Studio

C# Nullable Tipler İçin Extension Methods ve Helper Method Kullanımı

mustafaozcan - 26.11.2009 02:39:00
C# Nullable Tipler İçin Extension Methods ve Helper Method Kullanımı

Öncelikle Nullable tipler , Extension Methods ve Helper Method kavramlarını açıklayarak başlayalım. Daha sonra da Nullable tipler için kullanılacak örnek sınıflarımıza değinelim.

1 - Nullable Tipler :

C# ta Nullable tipler framework 2.0 ile birlikte gelmiştir. Nullable tipteki bir değişkene hem kendi türünden bir değer hemde null değer atanabilmektedir. Nullable tipler, tip tanımlaması sonuna ? konularak belirtilir. Örneğin: int? , DateTime? , bool? gibi.

Örnek bir class ve property üzerinde çalışalım.

 

public class Test
{

    private int? _sayi;

    public int? Sayi
    {
        get { return _sayi; }
        set { _sayi = value; }
    }

    public Test()
    {
    }

}

 

Bir butonumuz ve bir textbox ımız olduğunu varsayalım. Butona tıkladığımızda yukarıdaki class tan bir nesne türetip textbox tan gelen değeri Sayi property sine atayalım. Genel kullanım tarzı aşağıdaki gibi olacaktır.

Test t = new Test();

if (!string.IsNullOrEmpty(textbox1.Text))
    t.Sayi = Convert.ToInt32(textbox1.Text);
else
    t.Sayi = null;

 

Bu atama işlemini biraz daha kısa yazmak istersek aşağıdaki gibi yazabiliriz :

Test t = new Test();
t.Sayi = string.IsNullOrEmpty(textbox1.Text) ? (int?)null : Convert.ToInt32(textbox1.Text);

 

2 - Extension Methods :

Her atama işleminde örneklerdeki kadar çok kontrol yerine daha kısa yöntemler geliştirmek te mümkündür. Framework 3.5 ile birlikte Extension Methods desteği gelmiştir. Extension Methods desteği ile birlikte framework te var olan tiplere yeni metodlar ekleyebiliriz. Yazacağımız class ve metodlar static olmalıdır. Buradaki en önemli ayrıntı IkiKati metodu parametresi olan string str önündeki this anahtar sözcüğüdür. Bu kelime ile artık string türüne yeni bir metod daha kazandırmış oluyoruz.

Örneğin string bir değişkenin int e çevrilebiliyorsa 2 katını alan metod yazalım.

public static class StringExtensions
{
    public static int? IkiKati(this string str)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i*2;
        return null;
    }
}

Evet sıra geldi bu metodun nasıl kullanılacağına. Biz stirng türü için bir metod yazdığımıza göre kullanım şekli de stringDegisken.IkiKati() biçimindedir.

Örnek olarak str değişkeninin değerini int e çevirerek iki katını Sayi değişkenine atamayı gösterelim.

string str = "3";
int? Sayi = str.IkiKati();

Bu şekilde çok kullandığınız metodları Extension Methods türüne çevirip bir dll haline getirerek bir çok projede kullanabilirsiniz.

 

3 - Helper Method :

Peki uygulamamız Framework 2.0 desteği ile geliştiriliyorsa Extension Methods özelliğini nasıl kullanabiliriz. Bunun cevabı da Helper Method olacaktır. Kullanımı Extension Methods a göre farklı ancak sizin zaten bildiğiniz fonksiyon kullanımından farklı olmadığını göreceksiniz.

Helper Class Örneği:

public static class StringHelper
{
    public static int? IkiKati(string str)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i*2;
        return null;
    }
}

Helper Class Kullanımı :

string str = "3";
int? Sayi = StringHelper.IkiKati(str);

Bu açıklamalardan sonra her iki konu için örnek sınıflarımıza geçebiliriz.

 

4 - Nullable Tipler İçin Extension Methods Sınıfı :

Uygulamalarınız Framework 3.5 ve daha yukarı bir sürüme göre geliştiriliyorsa aşağıdaki sınıfı projenize dahil ederek kullanabilirsiniz. En çok ihtiyaç duyulan Nullable tipler için yazdığım örnek sınıf aşağıdadır.

public static class StringExtensions
{
    public static int? ParseNullableInt32(this string s)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i;
        return null;

    }
    public static long? ParseNullableInt64(this string s)
    {
        long i;
        if (long.TryParse(s, out i)) return i;
        return null;
    }
    public static DateTime? ParseNullableDateTime(this string s)
    {
        DateTime i;
        if (DateTime.TryParse(s, out i)) return i;
        return null;
    }
    public static decimal? ParseNullableDecimal(this string s)
    {
        decimal i;
        if (decimal.TryParse(s, out i)) return i;
        return null;
    }
    public static double? ParseNullableDouble(this string s)
    {
        double i;
        if (double.TryParse(s, out i)) return i;
        return null;
    }
}

Bu metodları kullanarak Nullable türden bir değişkene değer ataması yapabilirsiniz. Eğer atamak istediğiniz değer o türe dönüştürülebiliyorsa değer atanır dönüştürelemez ise null değer atanır.

Örnek : Bir textbox tan gelen veriyi Personel sınıfının ilgili property sine atanması.

Personel p = new Personel();
p.KayitTarihi = txtKayitTarihi.Text.ParseNullableDateTime(); //p.KayitTarihi DateTime? dir.
p.Save();

5 - Nullable Tipler İçin Helper Method Sınıfı :

Projeleriniz Framework 2 desteğine göre geliştiriliyorsa Nullable tipler için aşağıdaki Helper Method sınıfını kullanabilirsiniz. 

public static class StringHelper
{
    public static int? ParseNullableInt32(string s)
    {
        int i;
        if (Int32.TryParse(s, out i)) return i;
        return null;
    }
    public static long? ParseNullableInt64(string s)
    {
        long i;
        if (long.TryParse(s, out i)) return i;
        return null;
    }
    public static DateTime? ParseNullableDateTime(string s)
    {
        DateTime i;
        if (DateTime.TryParse(s, out i)) return i;
        return null;
    }
    public static decimal? ParseNullableDecimal(string s)
    {
        decimal i;
        if (decimal.TryParse(s, out i)) return i;
        return null;
    }
    public static double? ParseNullableDouble(string s)
    {
        double i;
        if (double.TryParse(s, out i)) return i;
        return null;
    }
}

Örnek:

Personel p = new Personel();
p.KayitTarihi = StringHelper.ParseNullableDateTime(txtKayitTarihi.Text); //p.KayitTarihi DateTime? dir
p.Save();

Özellikle katmanlı uygulamalarda veritabanındaki nullable alanlara atama yapmak istediğinizde çok işinize yarayacaktır.

Taglar : ,

Kategoriler : C#

Ineta Next (Diyarbakır, İstanbul, Kayseri, Denizli)

mustafaozcan - 24.11.2009 13:11:00
Ineta Next (Diyarbakır, İstanbul, Kayseri, Denizli)

Gelecek nesil yeni yazılım teknolojileri ile ilgili teknik bilgi paylaşımı çerçevesinde oturumların bulunacağı ayrıca Professional Developer Conference'da ilk defa duyurulacak bazı konuların da yer alacağı Ineta Next aşağıdaki tarihlerde ve yerlerde gerçekleştirilecektir. Şimdilik etkinlik detayları bir sürpriz/sır olarak saklanıyor. Çok yakında tam etkinlik planının duyurulacağı belirtilmektedir. Fakat bu süreçte siz zaman kaybetmeyin ve sınırlı katılım olacağı bu etkinliğe hemen ÜCRETSİZ kayıt olun!

5-6 Aralık / Diyarbakır

12-13 Aralık / İstanbul

19-20 Aralık / Kayseri

26-27 Aralık / Denizli

Kayıt için: http://www.inetatr.org

Taglar : , , ,

Kategoriler : ASP.NET | C# | Etkinlik

FamilyShow 3 Türkçe - Aile Soyağacı Programı

mustafaozcan - 21.08.2009 11:01:00
FamilyShow 3 Türkçe - Aile Soyağacı Programı

Daha önce 2.0 sürümünü Türkçe'ye çevirdiğim ve bazı hatalarını giderdiğim Family Show programının 3.0 İngilizce sürümü aylar önce yayınlandı fakat bu konuya şimdi zaman ayırabildiğim için Türkçe sürümünü bugün yayınlayabiliyorum.

Yeni sürümde en çok istenen özelliklerden olan kayıtlı aile üyeleri arasındaki evliliklerin (akraba evlilikleri) gösterilmesi ve girilen verilerin (bilgiler, resimler, ögeçmişler) tek dosyada kaydedilmesi özellikleri eklenmiştir.

Türkçe ye çevirirken bazı değişiklikler yaptım bunlar aşağıda listelenmektedir.

  • Bütün uygulama arayüzü, gerekli olan class ve enum lar, metinler ve hata mesajları Türkçe ye çevrildi.
  • Menü ve logolar üst tarafa küçültülüp birleştirildi ve paneller arasındaki boşluklar daraltılarak kullanım alanı arttırıldı.
  • GEDCOM formatındaki importlarda Türkçe karakter sorunları düzeltildi.
  • Uygulama ilk çalıştığında örnek aile bilgileri oluşturulması iptal edildi.

Eski Sürümden Yeni Sürüme Güncelleme:

  • FamilyShow 2 Türkçe kullananlar eski aile dosyasını açtıktan sonra GEDCOM menüsünden Dışarı Aktar menüsünü seçip GEDCOM formatında (.ged uzantılı) bir klasöre kaydediniz.
  • Eski uygulamayı kapatınız.
  • FamilyShow 3 Türkçe programını açtığınızda ilk ekranda İçeri Aktar menüsünü seçip biraz önce kaydettiğimiz dosyayı gösteriniz.
  • Bütün bilgiler ekrana gelecektir. Daha sonra kaydet menüsünden yeni uzantısı olan .familx formatında kaydedebilirsiniz. Bu dosyayı uygulama dizinine kaydederseniz uygulamayı taşıdığınızda o da taşınacaktır.

Gereksinimler :

Family Show 3 İndirmek İçin:

Taglar : , , ,

Kategoriler : C# | Programlar

SubSonic 3 Sürümü Yayınlandı

mustafaozcan - 05.07.2009 08:32:00
SubSonic 3 Sürümü Yayınlandı

 

SubSonic 3 sürümü yayınlandı. Framework 3.5 ve linq desteği kullanılan bu sürüm bir çok yeni özelliği de beraberinde getirmektedir.

Özellikle Migrations yada SimpleRepository diye adlandırılan kodlar sayesinde kendi oluşturduğunuz modellerin de veritabanı üzerinde oluşturulması artık çok kolay. Hatırlarsanız eski sürümlerde hep tek yönlü bir code generation olmaktaydı. Yani sadece database den class a, ancak yeni versiyon ile manuel oluşturduğunuz classların db ye oluşturulması çok kolay.

En büyük özelliklerden birisi de artık MVC projelerinde sorunsuz kullanılabilmektedir.

Projenin sitesi yenilenmiş, dökümantasyon daha anlaşılır bir şekilde gruplandırılmış, kaynak kodlar github a taşınmış.

Daha detaylı bilgi için :

Yenilenen Proje sitesi : subsonicproject.com

Yenilenen Dökümanlar

Yenilenen kaynak kod arşivi : http://github.com/subsonic

Taglar : , , , ,

Kategoriler : C# | Veritabanı (Database)

Visual Studio 2010 Beta 1 ve .NET Framework 4 Beta 1

mustafaozcan - 19.05.2009 11:12:00
Visual Studio 2010 Beta 1 ve .NET Framework 4 Beta 1

Visual Studio 2010  Beta 1  ve .NET Framework 4 Beta 1 sürümü yayınlandı. Şu anda sadece MSDN üyeleri indirebiliyor ancak 20 Mayıs Çarşamba günü (Türkiye saati ile 20:00) itibaren herkes tarafından indirilebilir.

Linkler aktifleştiğinde aşağıdaki adreslerden indirebilirsiniz.


Başlıca dikkat çekilen noktalar ise şu şekilde sıralanmış.
  • .Net Framework 4.0
  • Cloud Development - Windows Azure
  • Parallel Development
  • TDD iyileştirmeleri
  • ASP.NET - CSS tasarım değişiklikleri
  • Javascript debugging iyileştirmeleri
  • C++ Compiler değişiklikleri
  • Sharepoint şablonları
  • Yeni proje şablonları
  • Windows 7 - MFC - Ribbon UI, ve WPF değişiklikleri.
  • Application Model değişiklikleri
  • Test Runne
  • C# ta dynamic keyword ü
  • F# artık yükleme paketine dahil

 

İncelemelerden sonra daha detaylı bilgi vermeye çalışacağım.

Ayrıca ASP.NET 4 iyileştirmelerini bu sayfadan okuyabilirsiniz (İngilizce)

Taglar : , , ,

Kategoriler : ASP.NET | C#

SubSonic 2.2 Sürümü Yayınlandı

mustafaozcan - 11.04.2009 08:33:00
SubSonic 2.2 Sürümü Yayınlandı

 

SubSonic 2.2 sürümü yayınlandı. Release Notes dan okuduğum kadarı ile 2.1 den bekleyen birçok bug düzelmiş. Ancak henüz deneme fırsatım olmadı. Denedikten sonra tekrar burada sonuçları yazacağım.

Binary Formatını aşağıdaki adresten indirebilirsiniz (SubStage de dahil):

http://subsonicproject.googlecode.com/files/SubSonic2.2.zip

Kaynak kodlarını da aşağıdaki adresten indirip inceleyebilirsiniz:

http://subsonicproject.googlecode.com/svn/trunk/

Taglar : ,

Kategoriler : ASP.NET | C# | Web

Could not load file or assembly System.Data.SQLite or one of its dependencies

mustafaozcan - 05.03.2009 05:00:00
Could not load file or assembly System.Data.SQLite or one of its dependencies

.Net ve SQLite (System.Data.SQLite) ile web veya windows uygulaması geliştiriyorsanız 64 bit bir işletim sisteminde uygulamanızı test ettiğinizde "Could not load file or assembly 'System.Data.SQLite' or one of its dependencies" şeklinde bir hata alacaksınızdır. Bunun çözüm yolunu daha önce blogda yayınladığım aşağıdaki linkte bulabilirsiniz

http://www.mustafaozcan.net/tr/post/2009/02/28/Microsoft-Jet-OLEDB-4-0-provider-is-not-registered-hatasi-cozumu.aspx

 

Taglar : , , , , , ,

Kategoriler : ASP.NET | C# | İpucu (Tips & Tricks) | Win Forms

Visual Studio 2008 Server Explorer ve Microsoft StyleCop Uyumsuzluğu

mustafaozcan - 14.10.2008 07:15:00
Visual Studio 2008 Server Explorer ve Microsoft StyleCop Uyumsuzluğu

Visual Studio 2008 kullanıyor ve Microsoft un StyleCop eklentisini de yüklediyseniz Visual Studio View menüsünden Server Explorer ı görüntülemek istediğinizde açılmadığını fark edebilirsiniz. Bütün ayarlarınızı eski haline alsanız da sorun düzelmeyecektir. Bunun nedeni StyleCop eklentisidir. Benim tavsiyem Şimdilik bu hata giderilene kadar StyleCop eklentisini kurmayın ya da benim Server Explorer ile işim olmaz diyorsanız kurabilirsiniz.

StyleCop = Microsoft un C# kaynak kodlarını analiz etmek için hazırladığı bir Visual Studio Eklentisi. Geliştirdiğiniz projelerde yazdığınız C# kodlarını inceleyecek size önerilerde bulunuyor. 

Eklenti ile ilgili daha detaylı bilgiyi bu web sitesinden alabilirsiniz.

Taglar : , ,

Kategoriler : C#

resimyok Mustafa ÖZCAN
Yazılım Geliştirici
E-mail Send mail

Reklam

Aylara Göre Yazılar

Online


Online Ziyaretçi : 53

Translate This Page

B l o g - E n g i n e