SlideShare a Scribd company logo
1 of 40
Download to read offline
Visual Basic.NET Kodlama Standartları


Versiyon Geçmişi

Tarih           Ver    Açıklama            Yazar(lar)   Gözden
                                                        Geçiren(ler)
10.02.2011      1.0    Belge oluşturuldu   -            -




ii
10.02.2011 v1.0


Künye




                           Proje Koordinatörü
                             Kadir Çamoğlu


                                Editör
                            Volkan Atasever


                            Kapak Tasarımı
                            Hakan Çamoğlu


                                Yazarlar
        Volkan ATASEVER                          İrfan MEVSİM
          Merve CEYLAN                            Can YAPAN
         Kadir ÇAMOĞLU                          Hakan YAVUZ
        Burhan ÇETİNKAYA                        Yücel YILDIRIM
          Bahtiyar DİLEK


                           Gözden Geçirenler

        Bahri Altan                             Kemal İkizoğlu
    Atagün Sarıbayraktar                         Erman Demirer
      Soykan Özçelik                              Haluk Aksoy
       Mesut Güneş                                İbrahim Atay




                                                                         iii
Đçindekiler
Önsöz ......................................................................................................................................... 4
     Amaç ........................................................................................................................................ 5
     Kapsam ................................................................................................................................... 5
     Kullanım Şartları ................................................................................................................... 5
     Kullanım Önerisi ................................................................................................................... 5
     Önemli Açıklama .................................................................................................................. 5
     Geri Bildirim........................................................................................................................... 5

1.          Dosya Organizasyonu ............................................................................................ 6
     1.1        Klasör Yapısı ............................................................................................................... 6
     1.2        Kaynak Kod Dosyaları ............................................................................................... 7

2.          Biçimlendirme ........................................................................................................... 8
     2.1        Sınıf Yapısı .................................................................................................................. 8
     2.2        Girintileme ve Kapsamı Belirleme .......................................................................... 10
     2.3        Boşluklar .................................................................................................................... 10

3.          Açıklamalar .............................................................................................................. 11
     3.1        Blok Açıklamalar ....................................................................................................... 11
     3.2        Tek Satırlık Açıklamalar........................................................................................... 12
     3.3        Satır İçi Açıklamalar ................................................................................................. 12
     3.4        Dokümantasyon Amaçlı Açıklamalar..................................................................... 13
     3.5        TODO : Açıklamalar ................................................................................................. 13

4.          Đsimlendirme Kuralları ........................................................................................ 14
     4.1        Büyük/Küçük Harf Kullanımı ................................................................................... 14
     4.2        Pascal/Camel Casing............................................................................................... 14
     4.3        Visual Basic.NET Diline Özel Ayrılmış Kelimeler ................................................ 15
     4.4        Büyük/Küçük Harf Hassasiyeti ............................................................................... 16
     4.5        Kısaltmalar ................................................................................................................. 17
     4.6        Kelime Seçimi ........................................................................................................... 18
     4.7        “İsim Alanı” İsimlendirme ......................................................................................... 19
     4.8        “Sınıf” İsimlendirme .................................................................................................. 20
     4.9        “Ara Birim” İsimlendirme .......................................................................................... 20
     4.10       “Öznitelik” İsimlendirme ........................................................................................... 21
     4.11       “Numaralandırma” İsimlendirme............................................................................. 21
Visual Basic.NET Kodlama Standartları


     4.12      “Sabit” ve “Salt Okunur” Alan İsimlendirme .......................................................... 22
     4.13      “Statik” Alan İsimlendirme ....................................................................................... 22
     4.14      Parametre İsimlendirme........................................................................................... 22
     4.15      Metot İsimlendirme ................................................................................................... 23
     4.16      Özellik İsimlendirme ................................................................................................. 23
     4.17      Olay İsimlendirme ..................................................................................................... 23
     4.18      Değişken İsimlendirme ve İlk Değer Atama.......................................................... 24
     4.19      Kontrol İsimlendirme................................................................................................. 24

5.          Deyimler...................................................................................................................... 26
     5.1       Basit Deyimler ........................................................................................................... 26
     5.2       “Return” Deyimleri..................................................................................................... 26
     5.3       “If, if-else, if else-if else” Deyimleri ......................................................................... 27
     5.4       “Select” Deyimleri ..................................................................................................... 29
     5.5       “For / Foreach” Deyimleri......................................................................................... 30
     5.6       “While/do-while” Deyimleri....................................................................................... 31
     5.7       İstisnai Durum Yönetimi ........................................................................................... 32




2
10.02.2011 v1.0


Terimler

Terim           Türkçe           Açıklama
Namespace       İsim alanı
Class           Sınıf
Interface       Ara birim
Attribute       Öz nitelik
Enumeration     Numaralandırma
Property        Özellik
Event           Olay
Constant        Sabit
Readonly        Salt okunur
Pascal Casing   -                İsimler BÜYÜK harfle başlar. İsmi oluşturan ifade
                                 birden fazla kelimeden oluşuyorsa, kelimelerin ilk
                                 harfleri BÜYÜK harflerle yazılır. (OgrenciKaydet,
                                 UcretHesapla, RaporYazdir)
Camel Casing    -                İsimler küçük harfle başlar. İsmi oluşturan ifade
                                 birden fazla kelimeden oluşuyorsa, isimdeki ilk
                                 kelime küçük harfle başlar. Sonraki kelimeler
                                 BÜYÜK harfle başlar. (yeniOgrenciKaydet,
                                 ucretHesapla, raporYazdir)




                                                                                      3
Visual Basic.NET Kodlama Standartları


Önsöz
Özlü bir söz vardı yıllar önce okuduğum: “Bilgisayarların okuyacağı kodu yazmak kolay, önemli
olan insanların okuyabileceği kodu yazmak.” diyordu. İlk başta çok havalı gelen bu deyişi
sonrasında biraz düşünmek istedim.
Yazdığımız kodu bilgisayarın okuması yeterli değil mi? Zaten bilgisayar çalıştırmıyor mu onu?
Tamam işte, bilgisayar çalıştırıyorsa her şey yolunda demektir değil mi? Bazen. Altı ay önce
yazdığınız bir kodu tekrar açıp değiştirmek ihtiyacı hissettiğinizde kodlara bakıp hiç “Yahu ne
yapmışım ben? İyi kod yazmışım valla” dediğiniz oldu mu? Eminim olmuştur. Sonuçta hepimiz
geçtik bu yollardan. İster eski projelerinizdeki kodları hatırlayamayan ve kodu okuyamayan siz
olsun, ister bir projede beraber çalıştığınız arkadaşlarınız olsun tüm bu senaryolar eninde
sonunda yazdığınız kodların bir insan tarafından da okunması gerekeceğine dair ipuçları
veriyor.
Ekranınızdaki bu PDF veya belki de çıktısını aldığınız bu doküman size bu yolda yardımcı olma
amacı taşıyor. Tabi ki siz de kendi tekniklerinizi ve kod yazım kurallarınızı oluşturabilir ve
uygulayabilirsiniz fakat bir kısım genel geçer, artık gelenekselleşmiş kurallara uymanın da farklı
faydaları olacaktır. Tavsiyem, eğer tek başınıza kod yazıyorsanız en azından ileriye dönük hem
kişisel hem de proje bazında bir yatırım olarak bu kurallara uymaya çalışın. Şaka değil, böylece
dünya hepimiz için (yazılım geliştiriciler) daha güzel bir yer olabilir. Eğer bir ekiple kod
yazıyorsanız önce şirketinizde böyle bir doküman olup olmadığını öğrenin. Varsa ne kadar
uygulandığını araştırın, gerekiyorsa revizyonlar önerin. Böyle bir doküman yoksa şirketinizde
hemen bu dokümanı basıp herkese dağıtın. Yazılan bir kodun insanlar tarafından
okunabilirliğinin uzun vadede kurumlara ciddi karlar getireceğini de yöneticinizle paylaşmanızda
fayda olacaktır.
Artık top sizde! Bir sonraki adımı atıp insan dostu kodlar yazmak elinizde. Benim son olarak
yapmak gereken bir şey daha var; bu dokümanın oluşturulmasında, hazırlanmasında ve belki
de size ulaşmasında birçok dostun, kardeşimizin emeği var. Hepsine daha iyi bir yazılım
dünyasına katkıları için sonsuz teşekkür ediyorum. Emeğinize sağlık!


                                                                 Daron Yöndem
                                                                 Microsoft Regional Director
                                                                 INETA MEA Vice President




4
10.02.2011 v1.0


Giriş
Amaç
        Bu dokümanı geliştirmekteki amacımız, VB.NET programlama diliyle geliştirilecek
        projelerde kullanılmak üzere, kodlama standartları için fikir verecek bir “örnek”
        oluşturmaktır.
Kapsam
        Bu doküman, VB.NET Kodlama Standartları belgesinin ilk sürümüdür. Bu nedenle
        isimlendirme, biçimlendirme ve temel kodlama yapıları gibi en temel konulara
        değinilmiştir.
Kullanım Şartları
        Bu doküman bir grup çalışmasının ürünüdür. Belgenin sahipleri teknik olarak künyede
        yazılı olan (gözden geçirenler hariç) isimlerdir. Belgeyi, kaynak belirtmek koşuluyla
        tamamen ya da kısmen kullanabilirsiniz. Kopyalayabilir, çoğaltabilir ve dağıtabilirsiniz.
Kullanım Önerisi
        Bu belgeyi geliştireceğiniz projelerde olduğu gibi kullanmanız mümkün olabileceği gibi,
        kendi standartlarınızı oluşturmak için temel almak üzere de kullanabilirsiniz. Özellikle
        daha önceden edindiğiniz yazılım geliştirme alışkanlıklarınız varsa, bunları
        dokümandakilerle karşılaştırarak uygun gördüğünüzü tercih edebilirsiniz.
Önemli Açıklama
        Bu dokümanda belirtilen hiçbir kodlama standardı, ulusal ya da uluslararası genel bir
        standardı ifade etmez. Bu dokümanda açıklanan standartlar, içeriği geliştirenlerin ve
        proje koordinatörünün tecrübeleriyle oluşturdukları, kendi projelerinde uyguladıkları
        kodlama yaklaşımlarıdır. Bu dokümanda yazılanları VB.NET programlama dilinin, ilişkili
        teknolojilerin ya da yazılım mühendisliğinin temel kuralları olarak görmeyin. Dokümanı
        geliştirenlerin hiçbir şekilde en doğru ve en iyi yazılım kodlama standardını oluşturmak
        gibi bir iddiası yoktur. Buradaki amaç bir öneri ve/veya örnek oluşturmaktır.
Geri Bildirim
        Bu proje gönüllük esasına dayalı olarak, geniş bir katılımcı kitlesiyle hazırlanmıştır. Bu
        dokümanın olgunlaşması ve daha kaliteli hale gelmesi için, dokümanı inceleyen,
        kullanan herkesin geri bildirimi bizim için çok değerli olacaktır. Lütfen dokümanla ilgili
        hataları, önerilerinizi ve her türlü geri bildiriminizi aşağıdaki web ve eposta adresleri
        üzerinden bizimle paylaşın.



Eposta: tiksprojesi@gmail.com
http://tiksprojesi.blogspot.com/
http://www.facebook.com/#!/group.php?gid=29006737231
http://www.chip.com.tr/blog/kadircamoglu/




                                                                                                     5
Visual Basic.NET Kodlama Standartları


      1. Dosya Organizasyonu
      1.1 Klasör Yapısı
           Kullanım amaçlarına yönelik olarak, kaynak kodlarını bir arada tutacak şekilde klasör
           yapısı oluşturun. Klasörün amacına yönelik isimlendirme yapın. Böylelikle hangi
           dosyanın nerede olduğu kolayca bulunabilir.

            İYİ:




6
10.02.2011 v1.0


 KÖTÜ:




1.2 Kaynak Kod Dosyaları
   Kaynak kod dosyalarını, klasör yapısına uygun olarak amaçlarına uygun yerde
   oluşturun.

    İYİ:




                                                                                   7
Visual Basic.NET Kodlama Standartları


           KÖTÜ:




      2. Biçimlendirme
      2.1 Sınıf Yapısı
      Sınıfların isimlendirilmesinde “Pascal Casing” kullanın.
      İsimlendirmede, ismin sonuna Class veya Sınıf kelimesi eklemeyin.
      Sınıf Erişim belirteçlerini (private, public, internal) mutlaka belirtin.
      Her sınıf için mutlaka en az bir yapıcı metot (Constructor) oluşturun.
      Parçalı (partial) sınıflar kullandığınızda, her bir parça içerisinde, diğer parçaların yerini
      belirtin.
      Yapıcı metodumuzun içinde parametrelerinizi eşleştirirken mutlaka “Me” ekini kullanın.

      İYİ:
        Public Class HastaIlac
           '<summary>Hastanın kullandığı ilaç Bilgisi</summary>
              Public Sub New(ByVal ilacBarkod As String, _
                    ByVal ilacAdi As   String)

                End Sub

         End Class


      KÖTÜ
        Public Class HastaIslemleriSinifi

              Public Sub New()

            End Sub
         End Class




8
10.02.2011 v1.0


Sınıfları oluştururken girintileri doğru şekilde uygulamaya dikkat edin.

İYİ:
  Public Class HastaIlac

     Private ilacAdi As String
     Public Property IlacAd() As String
         Get
             Return IlacAdi
         End Get
         Set(ByVal value As String)
             ilacAdi = value
         End Set
     End Property


     Private ilacBarkod As String
     Public Property IlacBarkodu() As String
         Get
             Return ilacBarkod
         End Get
         Set(ByVal value As String)
             ilacBarkod = value
         End Set
     End Property

     '<summary>Hastanın kullandığı ilaç Bilgisi</summary>
     Public Sub New(ByVal ilacBarkod As String,
                          ByVal ilacAdi As   String)
         Me.IlacAd = ilacAdi
         Me.IlacBarkodu = IlacBarkodu
     End Sub

 End Class

KÖTÜ:
 Public Class HastaIlac
    Private ilacAdi As String
    Public Property IlacAd() As String
         Get
             Return ilacAdi
         End Get
         Set(ByVal value As String)
             ilacAdi = value
         End Set     End Property
    Private ilacBarkod As String
    Public Property IlacBarkodu() As String
         Get
             Return ilacBarkod
         End Get
         Set(ByVal value As String)
             ilacBarkod = value
         End Set     End Property
         '<summary>Hastanın kullandığı ilaç Bilgisi</summary>
      Public Sub New(ByVal ilacBarkod As String,
                          ByVal ilacAdi As String)
         IlacAd = ilacAdi
         IlacBarkodu = IlacBarkodu End Sub

 End Class

                                                                                        9
Visual Basic.NET Kodlama Standartları


      2.2 Girintileme ve Kapsamı Belirleme
      Girinti kullanırken dikkatli olun. Girinti (sekme/tab) ve boşlukları uygun şekilde kullanın.
      Kod ya da açıklama yazarken boşluk kullanmayın. İsim alanı, sınıf, metot, koşul, döngü,
      istisnai durum yönetimi bloklarının her biri için ayrıca girintileme yapın.

      İYİ:
        Public Class HastaIslemleri 'Hasta Kayıt işlemleri

            Public Sub New() 'Yapıcı Metodumuz...

            End Sub

            'Hasta kayıt edilir
            Public Sub HastaKayit(ByVal tcKimlikNo As String)

            End Sub

        End Class

      KÖTÜ:
       Public Class HastaIslemleri 'Hasta Kayıt işlemleri

            Public Sub New() 'Yapıcı Metodumuz...

            End Sub

            Public Sub HastaKayit(ByVal tcKimlikNo As String)

            End Sub End Class

        End Class



      2.3 Boşluklar
      Visual Studio birçok durumda boşluk durumlarını sizin için hallediyor... Ancak fonksiyonlar
      ve sublar arasındaki boşlukları sizin düzenlemeniz gerekiyor.

      İYİ:
        Private Function YasHesapla(_
           ByVal dogumGunu As DateTime) As Integer
           ' ...
        End Function

        Private Function YasHesapla(_
           ByVal dogumGunu As DateTime, _
           ByVal hesaplanacakTarih As DateTime) As Integer
           ' ...
        End Function




10
10.02.2011 v1.0


KÖTÜ:
 Private Function YasHesapla(_
    ByVal dogumGunu As DateTime) As Integer
    ' ...
 End Function

 Private Function YasHesapla(_
    ByVal dogumGunu As DateTime, _
    ByVal hesaplanacakTarih As DateTime) As Integer
    ' ...
 End Function



3. Açıklamalar

3.1 Blok Açıklamalar
   Blok açıklamalarını, fonksiyon, modül veya proje gibi kodların başında, daha sonraki
   kullanımlarda gerekli olabilecek açıklamaları girmek için kullanın. Açıklamaları, çok
   detaya inmeden genel hatlarıyla kod bloğunun kullanımını ve gerekli olabilecek diğer
   bilgileri kullanarak oluşturun.

   İYİ:
          ' Satış fiyatı hesaplaması 25.10.2011 Đrfan Mevsim
          '
          ' Fonksiyon birim fiyatı ve KDV orani olarak gönderilen
          ' bilgilerin satış fiyatını geri döndürür.
          '
          ' Örnek Kullanım
          ' Dim SatisFiyati as Double = SatisHesapla(1000,18)
          '
          ' Dönüş Değeri --> 1018.0 (double)
          '
          Private Function SatisHesapla _
                                  (ByVal BirimFiyat As Integer, _
                                   ByVal KdvOrani As Integer) _
                                                     As Double
              Return BirimFiyat + KdvOrani%
          End Function

   KÖTÜ:
      ' Satış fiyatı hesaplaması (yetersiz açıklama)
      Private Function SatisHesapla _
                              (ByVal BirimFiyat As Integer, _
                               ByVal KdvOrani As Integer) _
                                                As Double
          Return BirimFiyat + KdvOrani%
      End Function




                                                                                     11
Visual Basic.NET Kodlama Standartları


           KÖTÜ:
              Private Function SatisHesapla _
                                      (ByVal BirimFiyat As Integer, _
                                            ByVal KdvOrani As Integer) _
                                            As Double
                  ' Dönüş Değeri --> 1018.0 (yanlış ve yetersiz açıklama)
                  Return BirimFiyat + KdvOrani%
              End Function



      3.2 Tek Satırlık Açıklamalar
           Tek satırlık açıklamaları alt kısımdaki kod bloğunu açıklar nitelikte, belirli işlemlerin
           gerçekleştiği kod bloklarının başına yazın.

           İYİ:
                  ' Satış fiyatı hesaplaması
                  Dim BirimFiyat As Integer = 1000
                  Dim KdvOrani As Integer = 18
                  Dim Miktar As Integer = 3
                  Dim SatisFiyati As Double
                                    = (Miktar * BirimFiyat) + KdvOrani%

           KÖTÜ:
              ' Birim fiyat tanımlaması
              Dim BirimFiyat As Integer = 1000
              Dim KdvOrani As Integer = 18
              Dim Miktar As Integer = 3
              Dim SatisFiyati As Double
                                = (Miktar * BirimFiyat) + KdvOrani%


      3.3 Satır İçi Açıklamalar
           Satır içi açıklamaları, sadece bulunduğu satırdaki ifadeyi açıklamak ve o satıra ait
           olan bilgileri girmek için kullanın.

           İYİ:
                  Dim KullaniciAdi As String = "Ahmet" ' Kullanıcının Adı
                  Dim KullaniciSoyadi As String
                               = "Kozdağ" ' Kullanıcının Soyadı
                  Dim KullaniciSicil As String
                               = "D201056" ' Kullanıcının Sicil No

           KÖTÜ:
              Dim KullaniciAdi As String = "Ahmet" ' Kullanıcı Bilgileri
              Dim KullaniciSoyadi As String = "Kozdağ"
              Dim KullaniciSicil As String = "D201056"




12
10.02.2011 v1.0


   KÖTÜ:
      Dim KullaniciAdi As String = "Ahmet" ' Kullanıcı Bilgileri
      Dim KullaniciSoyadi As String
                          = "Kozdağ" ' Kullanıcı Bilgileri
      Dim KullaniciSicil As String
                          = "D201056" ' Kullanıcı Bilgileri



3.4 Dokümantasyon Amaçlı Açıklamalar
   Dokümantasyon amaçlı açıklamaları; yazdığınız herhangi bir sınıf ya da fonksiyonun
   açıklamasını yapmak amacıyla kullanın. Açıklama yaptığınız metoda uygun olarak
   özet (summary), parametre ve dönüş değerleri için açıklamalar yazın.

   İYİ:
          '/ <summary>
          '/ Basit bir Fonksiyon.</summary>
          '/ <param name="yazi">
          '/ Gelen yaziyi txtMetin.text 'e eşitler</param>
          Public Sub MetinYaz(ByVal yazi As String)
                txtMetin.Text = yazi
          End Sub



3.5 TODO : Açıklamalar
   TODO: açıklamalarını projenin herhangi bir anında aklınıza gelen ama daha sonra
   yapılması gereken işlemler için kullanın. Böylece projenin hangi aşamasında hangi
   değişikleri yapmanız gerektiğini Build etmeden önce TODO: kelimesini projenizde
   arayarak rahatlıkla hatırlayabilirsiniz.

   İYİ:
      ' TODO: Hesaplamadan önce KDV oranlarının güncelliğini
   kontrolet
      Dim SatisFiyati As Double
                    = (Miktar * BirimFiyat) + KdvOrani%

   KÖTÜ:
      ' TODO: Satış fiyatı hesaplanması
      Dim SatisFiyati As Double
                    = (Miktar * BirimFiyat) + KdvOrani%




                                                                                   13
Visual Basic.NET Kodlama Standartları


      4. Đsimlendirme Kuralları
      4.1 Büyük/Küçük Harf Kullanımı
           Özellik ve değişken gibi öğeleri isimlendirirken kelimelerin ilk harflerini küçük diğer
           harflerini büyük kullanın. Sınıf ve metotlarda ise ilk harfleri büyük kullanın.

           İYİ:
                  Dim toplamaYap As Integer
                  …
                  Dim cikarmaYap As String
                  …
                  Public Property ToplamaIslemi(ByVal ilkSayi As Integer,
                                                ByVal ikinciSayi As Integer)
                                                As Integer
                  …
                  Class Kisiler

           KÖTÜ:
               Dim TOPLAMAYAP As Integer
               …
               Dim CIKARMAyap As String
               …
               Public Property toplamaisleMI(ByVal ilkSAYI As Integer,
                                             ByVal ikinciSAYI As Integer)
                                             As Integer
               …
               Class KISILER


      4.2 Pascal/Camel Casing
           İsimlendirme yaparken Pascal/Camel isimlendirmeyi doğru yapmak için aşağıdaki
           tabloyu kullanın. Metotlarda, alanlarda (field) ve özelliklerde (properties) public,
           private, internal da olsa Pascal Casing kullanın.

           Proje dosyası                   Pascal Casing       HastaTakibi.vbproj
           Kaynak dosyası                  Pascal Casing       HTLogo.jpg
           Sınıf (class)                   Pascal Casing       Kisi
           Yapı (struct)                   Pascal Casing       KisiListeBilgisi
           Arabirim (interface)            Pascal Casing       IKisiselBilgiler
           Metot                           Pascal Casing       KisiEkle
           Özellik (Property)              Pascal Casing       Adi, Soyadi
           Alan (public field)             Pascal Casing       TCKimlikNo
           Alan (diğer Field)              Camel Casing        dogumTarihi
           Numaralandırma (Enum)           Pascal Casing       KayitDurumu
           Delegate (public)               Pascal Casing       KayitSilindi
           Delegate (diğer)                Camel Casing        kayitIsleniyor
           Değişken                        Camel Casing        vergiNumarasi
           Parametre                       Camel Casing        ad, soyad, yas
           Olay (event)                    Camel_Casing        btnKaydet_Click




14
10.02.2011 v1.0


4.3 Visual Basic.NET Diline Özel Ayrılmış Kelimeler
   Aşağıdaki kelimeler Visual Basic.NET programlama diline özeldir. Bu kelimeleri
   farklı büyük/küçük harf kombinasyonlarında da olsa kullanmayın.


   AddHandler          DirectCast           Module                Shadows

   AddressOf           Do                   MustInherit           Shared
   Alias               Double               MustOverride          Short

   And                 Each                 MyBase                Single
   AndAlso             Else                 MyClass               Static

   As                  ElseIf               Namespace             Step

   Boolean             End                  Narrowing             Stop

   ByRef               EndIf                New                   String
   Byte                Enum                 Next                  Structure
   ByVal               Erase                Not                   Sub

   Call                Error                Nothing               SyncLock

   Case                Event                NotInheritable        Then

   Catch               Exit                 NotOverridable        Throw

   CBool               FALSE                Object                To

   CByte               Finally              Of                    TRUE
   CChar               For                  On                    Try

   CDate               Friend               Operator              TryCast
   CDec                Function             Option                TypeOf

   CDbl                Get                  Optional              Variant

   Char                GetType              Or                    Wend
   CInt                Global               OrElse                UInteger

   Class               GoSub                Overloads             ULong
   CLng                GoTo                 Overridable           UShort

   CObj                Handles              Overrides             Using
   Const               If                   ParamArray            When

   Continue            Implements           Partial               While
   CSByte              Imports              Private               Widening

   CShort              In                   Property              With
   CSng                Inherits             Protected             WithEvents
   CStr                Integer              Public                WriteOnly

   CType               Interface            RaiseEvent            Xor

   CUInt               Is                   ReadOnly              #Const


                                                                                     15
Visual Basic.NET Kodlama Standartları


          CULng                   IsNot               ReDim                  #Else

          CUShort                 Let                 REM                    #ElseIf
          Date                    Lib                 RemoveHandler          #End

          Decimal                 Like                Resume                 #If

          Declare                 Long                Return
          Default                 Loop                SByte

          Delegate                Me                  Select
          Dim                     Mod                 Set


      4.4 Büyük/Küçük Harf Hassasiyeti
           Türkçe karakterler farklı algılandığından kodlama içerisinde Türkçe karakterler
           kullanmayın. Küçük i ve bu karakteri büyük yazarken I kullanın. Ç yerine c, ş yerine
           s, ğ yerine g, ü yerine u, ö yerine o tercih edin.

           İYİ:
                  Dim kacisVeIlk As Integer
                  Dim ogrenmeVeEgitim As String

           KÖTÜ:
               Dim KaçışveĐlk As Integer
               Dim ÖğrenmeVeEğitim As String

           Fonksiyonlarda parametre kullanırken, verilen tek karakterli isimleri büyük veya
           küçük versiyonlarını yazarak kullanmayın.

           İYİ:
                  Public Property ToplamaIslemi(ByVal istenenSayi As Integer,
                                                ByVal verilenSayi As Integer)
                                                As Integer

           KÖTÜ:
               Public Property ToplamaIslemi(ByVal b As Integer,
                                             ByVal B As Integer)
                                             As Integer

           Aynı isimli fakat harflerinin büyüklüğü küçüklüğü farklı değişkenler tanımlamayın.

           İYİ:
                  Dim denemeSayisi As Integer
                  Dim eldeSayisi As Integer

           KÖTÜ:
               Dim deneme As Integer
               Dim DENEME As Integer




16
10.02.2011 v1.0


   Farklı büyük/küçük harf hassasiyetlerinde, aynı isimli metotlar yazmayın.

   İYİ:
           Private Sub ToplamaHesabi()
           End Sub
           Private Sub CikarmaHesabi()
           End Sub

   KÖTÜ:
       Private Sub hesapla()
       End Sub
       Private Sub Hesapla()
       End Sub


4.5 Kısaltmalar
   Sınıf, özellik, metot, değişken gibi öğelere isim verirken çok zorunlu olmadıkça
   kısaltma kullanmayın.

   İYİ:
           Dim kullaniciAdi As Integer
           Dim yetkiliMi As Boolean
            …
           Private Sub KullaniciKaydet()

   KÖTÜ:
       Dim kulAdi As Integer
       Dim ytklMi As Boolean
       …
       Private Sub KullKyd()

   Eğer aynı isme sahip aynı türden iki veya daha fazla öğe kullanılacaksa bunları
   numaralandırmayı tercih edin.

    İYİ:
           Dim ogrenci1 As Integer
           Dim ogrenci2 As Integer

   KÖTÜ:
       Dim ogrenciilk As Integer
       Dim ogrenciiki As Integer




                                                                                      17
Visual Basic.NET Kodlama Standartları


      4.6 Kelime Seçimi
           Kolay okunabilir, tanımlayıcı isimleri seçin.

           İYİ:
               Private _urunAdi As String
               Public Property UrunAdi() As String
                  Get
                       Return _urunAdi
                  End Get
                  Set(ByVal value As String)
                        _urunAdi = value
                  End Set
               End Property

           KÖTÜ:
             Private _adiUrun As Integer
             Public Property AdiUrun() As Integer
                 Get
                           Return _adiUrun
                 End Get
                 Set(ByVal value As Integer)
                       _adiUrun = value
                 End Set
             End Property

           Tanımlayıcı isimlerinizi kısa tutmak için onları anlamsızlaştırmayın.

           İYİ:
               Private _kullaniciAdi As String
               Public Property KullaniciAdi() As String
                  Get
                       Return _kullaniciAdi
                  End Get
                  Set(ByVal value As String)
                       _kullaniciAdi = value
                  End Set
               End Property

           KÖTÜ:
             Private _kAdi As String
             Public Property kAdi() As String
                 Get
                      Return _kAdi
                 End Get
                 Set(ByVal value As String)
                      _kAdi = value
                 End Set
             End Property




18
10.02.2011 v1.0


   Tanımlayıcılarınızı isimlendirirken hiçbir zaman tire “-”, alttan tire “_” veya alfa-
   numerik olmayan karakterler “!@#$%^&*()” kullanmayın.


   İYİ:
       Private _dogumTarih As Date
       Public Property DogumTarihi() As Date
          Get
               Return _dogumTarih
          End Get
          Set(ByVal value As Date)
               _dogumTarih = value
          End Set
       End Property

   KÖTÜ:
     Private _dogumTarih As DateTime
     Public Property Dogum-Tarihi() As DateTime
         Get
              Return _dogumTarih
         End Get
         Set(ByVal value As DateTime)
              _dogumTarih = value
         End Set
     End Property



   Tanımlayıcılarınızı hiçbir zaman Macar Notasyonu - Hungarian Notation- ile
   isimlendirmeyin.

   KÖTÜ:
     Dim    u32Identifier As Integer
     Dim    bBusy As Boolean
     Dim    chInitial As Char
     Dim    dbPi As Double
     Dim    rgStudents As String() = New String(4) {}
     Dim    hwndForm As Form1


4.7 “İsim Alanı” İsimlendirme
   İsim alanı adlandırırken, “Pascal Casing” tipi isimlendirme kullanın. Büyük harfle
   başlayıp her bir kelimenin ilk harfini büyük harf kullanarak isim verin. Kelimeler
   arasında “_” veya “-” benzeri ayraçlar kullanmayın. İsim alanı adlandırırken,
   proje/assembly adı ile aynı adı kullanın. Kullandığınız dizinlerin adlarını, isim alanı
   adlarında da kullanın.

   İYİ:
          KodlamaStandartlari.vbproj
          namespace KodlamaStandartlari

          KodlamaStandartlari.Models.dll
          namespace KodlamaStandartlari.Models

          KodlamaStandartlari.vbproj projesinde Models dizini
          namespace KodlamaStandartlari.Models



                                                                                             19
Visual Basic.NET Kodlama Standartları


           KÖTÜ:
               KodlamaStandartlari.vbproj
               namespace Kodlama

                  KodlamaStandartlari.Models.dll
                  namespace KodlamaStandartlari.Modeller

                  KodlamaStandartlari.vbproj projesinde Models dizini
                  namespace KodlamaStandartlari.Modeller


      4.8 “Sınıf” İsimlendirme
           Sınıflara ad verirken, Pascal tipi isimlendirme kullanın. Büyük harfle başlayıp her bir
           kelimenin ilk harfini büyük harf kullanarak isim verin. Kelimeler arasında “_” veya “-”
           benzeri ayraçlar kullanmayın. Sınıflara ad verirken, isim veya isim öbeği kullanın.
           Sınıflara adlarında, “Sınıf”, “Class” veya “C” gibi ifadeler kullanmayın.

           İYİ:
                  Public Class Araba
                  …
                  Internal Class Ucurtma
                  …
                  Private Class UcakMotoru

           KÖTÜ:
               Public Class Yap
               …
               Internal Class ClassUcurtma
               …
               Internal Class CucurtmaSinifi
               …
               Private Class UcakmotoruClass


      4.9 “Ara Birim” İsimlendirme
           Ara birimlerinizi uygulayacağınız sınıfların isimleriyle birlikte başlarına “I” harfi
           getirerek yazın. Ara biriminizi isimlendirirken her iki kelimenin ilk harfleri büyük
           olacak şekilde isimlendirin.(PascalCasing)

           İYİ:
               Public Class Takip
                  Implements ITakip
                  Public Interface ITakip
                      Sub StokTakip(ByVal urunAdet As Integer)
                  End Interface
                  Public Sub StokTakip1(ByVal urunAdet As Integer)
                Implements       ITakip.StokTakip
                      Me.urunAdet = urunAdet.ToString()
                  End Sub
               End Class




20
10.02.2011 v1.0


   KÖTÜ:
     Public Class Takip
        Implements StokInterface
        Public Interface StokInterface
            Sub StokTakip(ByVal urunAdet As Integer)
         End Interface
         Public Sub StokTakip1(ByVal urunAdet As Integer)
       Implements     ITakip.StokTakip
             Me.urunAdet = urunAdet.ToString()
         End Sub
     End Class


4.10    “Öznitelik” İsimlendirme
   Kendi geliştirdiğiniz “öznitelik” sınıflarınızı isimlendirirken, sınıf isminizin sonunda
   “Attribute” kelimesini getirin.

   İYİ:
       <AttributeUsage(AttributeTargets.Class)> _
       Public Class AttributeTakip
       …
       End Class

   KÖTÜ:
     <AttributeUsage(AttributeTargets.Class)> _
     Public Class Takip
     …
     End Class

4.11    “Numaralandırma” İsimlendirme
   Numaralandırmalarınızı isimlendirirken “Pascal Casing” isimlendirme kuralını dikkate
   alın. Numaralandırma isimlerinizin sonuna “enum” yazmayın. Numaralandırmalarınız
   için tekil isimler seçin.

   İYİ:
       Enum OnemDerecesi
         Yuksek = 3
         Orta = 2
         Dusuk = 1
       End Enum

   KÖTÜ:
     Enum OnemDereceleriEnum
         Yuksek = 3
         Orta = 2
         Dusuk = 1
     End Enum




                                                                                              21
Visual Basic.NET Kodlama Standartları


      4.12 “Sabit” ve “Salt Okunur” Alan İsimlendirme
           “Sabit” ve “Salt Okunur” alanlar isimlendirilirken; isim, isim tamlaması ve (çok
           uzunsa) anlamlı kısaltmaları; her kelimenin ilk harfi büyük olacak şekilde kullanın.
           (PascalCasing)

           İYİ:
                    Public Const AySayisi As Integer = 12
                    Public Const HaftaSayisi As Integer = 52
                    Public ReadOnly GunSayisi As Integer = 365


           KÖTÜ:
               Public Const Ay_Sayisi As Integer = 12
               Public Const haftasayisi As Integer = 52
               Public ReadOnly _Gun_Sayisi As Integer = 365




      4.13          “Statik” Alan İsimlendirme
           “Statik” alanlar isimlendirilirken; isim, isim tamlaması ve (çok uzunsa) anlamlı
           kısaltmaları; her kelimenin ilk harfi büyük olacak şekilde kullanın. (PascalCasing)
            İYİ:
                 Public Shared Fiyat As Integer
                 Public Shared ToplamSaat As Integer

           KÖTÜ:
               Public Shared fyt As Integer
               Public Shared fiyat As Integer
               Public Shared toplam_saat As Integer


      4.14          Parametre İsimlendirme
           Parametre isimlendirilirken; içeriğine göre anlamlı olarak, isim, isim tamlaması ve
           (çok uzunsa) anlamlı kısaltmaları; birinci kelimenin ilk harfi küçük bunu takip eden
           kelimelerin baş harfleri büyük olacak şekilde kullanın. (Camel Casing)

             İYİ:
                    Private Sub KullaniciKaydet(kullaniciAdi As String, _
                                                           parola As String)
                    End Sub



           KÖTÜ:
               Private Sub KullaniciKaydet(kul_adi As String, _
                                                         prl As String)
               End Sub




22
10.02.2011 v1.0


4.15      Metot İsimlendirme
   Metotlarınızı isimlendirirken “Pascal” isimlendirme kuralını kullanın.(Pascal Casing)
   Metot parametreleriniz için “Camel” isimlendirme kuralını kullanın.(Camel Casing)
   Metotlarınızı fiille veya fiil cümleleriyle isimlendirin.

   İYİ:
          Public Function Topla(ByVal birinciSayi As Integer,
                                ByVal ikinciSayi As Integer) As
                            Integer
                Return birinciSayi + ikinciSayi
          End Function


   KÖTÜ:
       Public Function Toplama (ByVal BirinciSayi As Integer,
                                ByVal IkinciSayi As Integer) As
                         Integer
             Return BirinciSayi + IkinciSayi
       End Function

4.16      Özellik İsimlendirme
   Özelliklerinizi isimlendirirken Pascal isimlendirme kuralını kullanın.(Pascal Casing)
   Özelliklerinizi isim ve isim tamlamalarıyla isimlendirin. Özelliklerinizin tiplerine uygun
   isimlendirme yapın. Özelliklerinizi isimlendirirken başlarına Get veya Set getirmekten
   sakının.

   İYİ:
          Public IsimSoyisim As Integer
          Public OdemeTarihi As Date
          'OnemDerecesi Enum bir tipe sahiptir.
          Public OnemDerecesi As OnemDerecesi

       KÖTÜ:
          Public Getisim As String
          Public OdemeTarihiniAl As Date
          Public SetOnemDerecesi As OnemDerecesi



4.17      Olay İsimlendirme
   Olay(Event) işleyici isimlendirmede “on” ifadesini kullanmayın.

   İYİ:
          Event EventHandler As ciftikla

   KÖTÜ:
       Event EventHandler As ONciftikla




                                                                                           23
Visual Basic.NET Kodlama Standartları


           Tek bir “event” isimlendiriyorsanız geçmiş zamanda fiiller kullanın.

           İYİ:
                  Event EventHandler As mesajYollandi
                  Event EventHandler As ciftTiklandi

           KÖTÜ:
               Event EventHandler As mesajYolla
               Event EventHandler As ciftTikla



      4.18        Değişken İsimlendirme ve İlk Değer Atama
           Vereceğimiz isimler Türkçe olmalıdır. Tanımlama yaparken kullanacağımız isimlerde
           ,kısaltma yapılacaksa da anlamlarını kaybetmemelerine dikkat edilmelidir.

           İYİ:
                  Class ResimBoyutlandirici
                        Dim resimyolu As String = "c:"
                        Dim cozunurluk As String = "1024x768"
                  End Class

           KÖTÜ:
               Class WindowsFormsApplication1
                     Dim resimyolu As String = "c:"
                     Dim cozunurluk As String = "1024x768"
               End Class



      4.19        Kontrol İsimlendirme
           Kontrol İsimlendirirken, kontrollerin önüne, ilgili kontrolü belirtecek bir kısaltma
           kullanın.

           İYİ:
                  Private Sub btnBaslat_Click(ByVal sender As System.Object,
                                                 ByVal e As System.EventArgs)
                  End Sub

                  Private Sub lblAciklama_Click(ByVal sender As _
                                                      System.Object,
                                                 ByVal e As System.EventArgs)
                  End Sub

           KÖTÜ:
               Private Sub Baslat_Click(ByVal sender As System.Object,
                                             ByVal e As System.EventArgs)
               End Sub

                  Private Sub Aciklama_Click(ByVal sender As System.Object,
                                                ByVal e As System.EventArgs)
                  End Sub




24
10.02.2011 v1.0


Kontrol isimlendirme için aşağıdaki tabloyu kullanın.

     Kontrol                                  Kısaltması
     Checkbox                                 chk
     RadioButton                              rdb
     Label                                    lbl
     Textbox                                  txt
     DataGrid                                 dtg
     Button                                   btn
     ImageButton                              İmb
     Image                                    img
     PlaceHolder                              phd
     Table                                    tbl
     CheckBoxList                             cbl
     RadioButtonList                          rbl
     Radio(Option)Button                      opt
     Hyperlink                                lnk
     DropDownList                             ddl
     ListBox                                  lst
     DataList                                 dtl
     Repeater                                 rpt
     Panel                                    pnl
     Validators                               val
     ComboBox                                 cmb
     DropDownList                             ddl
     GridView                                 gvw
     hScrollBar                               hsc
     vScrollBar                               vsc
     Picture                                  pic
     Container                                ctr
     DataColumn                               dcol
     DataGridDateTimePickerColumn             dgdtpc
     DataGridTableStyle                       dgts
     DataGridTextBoxColumn                    dgtbc
     DataReader                               drd
     DataRow                                  drw
     DataSet                                  dset
     DataTable                                dtable
     GroupBox                                 gbx
     HashTable                                htbl
     ImageList                                iml
     Integer                                  int
     Literal                                  ltr
     MarshallByRefObject                      rmt
     Mainmenu                                 mm
     MenuItem                                 mi
     MD5                                      md5
     MDI-Frame                                frame
     MDI-Sheet                                sheet
     NumericUpDown                            nud
     PictureBox                               pbx
     RadioButton                              rbtn
     StatusBar                                stb
     TabControl                               tabctrl
     TabPage                                  tabpage
     ToolBar                                  tbr
     ToolBarButton                            tbb


                                                                       25
Visual Basic.NET Kodlama Standartları


      5. Deyimler
      5.1 Basit Deyimler
           Basit deyimleri yazarken her bir satıra sadece bir deyim yazın. Deyimleri açık ve
           okunur şekilde kodlayın.

           İYİ:
                  Dim sayi1 As Integer = 5
                  Dim sayi2 As Integer = 5
                  Dim toplam As Integer = sayi1 + sayi2

           KÖTÜ:
               Dim sayi2 As Integer = 5,sayi2 As Integer = 5
               Dim toplam As Integer = sayi1 + sayi2


      5.2 “Return” Deyimleri
           Fonksiyonlardan değer döndürürken her bir koşul için ayrı ayrı değer döndürmeyin.
           Koşulları kontrol ettikten sonra fonksiyonunun sonunda tek bir “return” deyimi
           kullanın.

           İYİ:
              Public Function MusteriAdiGetir() As String
                'MusteriAdi Getir Fonksiyonu Tanımlama

                  Dim musteriAd As String = ""
                    'musteriAd string değişkeni tanımlama ve atama
                  Dim musteriNo As Integer = 1
                    'musteriNo eğişkeni tanımlama ve atama

                  If (musteriNo = 1) Then
                    musteriAd = "Yücel Yıldırım"
                  Else
                    musteriAd = "Müşteri Bulunamadı"
                  End If

                  Return (musteriAd)
                  End Function

           KÖTÜ:
               Public Function MusteriAdiGetir() As String
              'MusteriAdi Getir Fonksiyonu Tanımlama

                  Dim musteriAd As String = ""
                  'musteriAd string değişkeni tanımlama ve atama
                  Dim musteriNo As Integer = 1
                  'musteriNo değişkeni tanımlama ve atama

                  If (musteriNo = 1) Then
                    Return "Yücel Yıldırım"
                  Else
                    Return "Müşteri Bulunamadı"
                  End If

                  End Function




26
10.02.2011 v1.0


5.3 “If, if-else, if else-if else” Deyimleri
    Hemen hemen her programlama dilinde olan deyimlerdir. Bir şart belirtilerek
    programın ona göre davranmasını sağlar. Bu yüzden bu deyimlerin standartlara göre
    yazılması oldukça önemlidir.

    Öncelikle genel olarak “if” deyimindeki yanlışlıkları ve olması gerekenleri gösterelim.

    Koşul deyiminiz tek satırlık ise end if kullanmayın.

    iYi:
           If ("1" = "1") Then MessageBox.Show("1 eşittir 1")

    KÖTÜ:
        If ("1"="1") Then
           MessageBox.Show("1 eşittir 1")
        End If


    Karmaşık koşulları “if” bloğu içine yazmayın. Bu tip koşulları blok öncesinde kontrol
    ederek sonucu değişkenlere yükleyerek “if” koşuluna yazın.

    İYİ:
       enYuksekNotMu = (notum > enYuksekNot)
       oncekiEnYuksekNotMu = (notum = enYuksekNot)
       gecerliNotmu = (notum < maksimumNot)
         If ((enYuksekNotmu And Not oncekiEnyuksekNotmu) _
                           And gecerlinotmu) Then
               …
         End If


    KÖTÜ:
      If (((notum > enYuksekNot) And (notum <> enYuksekNot)) And
                                           (notum < maksimumNot))
                                     Then
        End If


    Veri tipi bool olan değişkenleri direkt olarak kullanın. “=” ya da “not” ile tekrar işleme
    sokmayın.

    İYİ:
           If (donenDeger) Then
           End If
           If (Not donenDeger2) Then
           End If

    KÖTÜ:
        If (donenDeger = true) Then
        End If
        If (donenDeger2 = false) Then
        End If




                                                                                             27
Visual Basic.NET Kodlama Standartları


           Koşul yapılarında gereksiz yere koşulun tersini “if” ile kullanmayın. Bunun yerine else
           kullanın.

           İYİ:
                  If (donenDeger) Then
                        MessageBox.Show("True Döndü")
                  Else
                        MessageBox.Show("False Döndü")
                  End If

           KÖTÜ:
               If (donenDeger) Then
                     MessageBox.Show("True Döndü")
               End If
               If (Not donenDeger2) Then
                     MessageBox.Show("False Döndü")
               End If

           İç içe “if” blokları yerine mümkünse “else if” yapısı kullanın.

           İYİ:
                    If (ilkDeger > ikinciDeger) Then
                         MessageBox.Show("1. değer büyük")
                    ElseIf (ilkDeger < ikinciDeger) Then
                         MessageBox.Show("2. değer büyük")
                    Else
                         MessageBox.Show("2 side eşit")
                           End If


           KÖTÜ:
                    If (ilkDeger = ikinciDeger) Then
                         MessageBox.Show("2 side eşit")
                    Else
                         If (ilkDeger > ikinciDeger) Then
                              MessageBox.Show("1. değer büyük")
                         Else
                              MessageBox.Show("2. değer büyük")
                         End If
                  End If




28
10.02.2011 v1.0


5.4 “Select” Deyimleri
   Sıralı koşul durumlarının değerlendirilmesine gerek olmayan, belirli bir değere göre
   belirli bir işlemin yapılması gereken durumlarda “Select” kullanın. Select deyiminde
   mümkün olduğunca listeleme (enum) kullanın.

   İYİ:
          public enum CompressionFormat
                Zip,
                Gzip,
                Rar
          end enum

          Public Sub Compress(ByVal CompressionFormat As format)
              Select Case format
                  Case CompressionFormat.Zip
                      CompressWithZip()
                      Exit Select
                  Case CompressionFormat.Gzip
                      CompressWithGzip()
                      Exit Select
                  Case CompressionFormat.Rar
                      CompressWithRar()
                      Exit Select
                  Case Else
                      CompressWithZip()
                      Exit Select
              End Select
            End Sub

   KÖTÜ:
       public enum CompressionFormat
             Zip,
             Gzip,
             Rar
       end enum

          Public Sub Compress(ByVal CompressionFormat As format)
              If Format = CompressionFormat.Zip Then
                   CompressWithZip()
              ElseIf Format = CompressionFormat.Gzip Then
                   CompressWithGzip()
              ElseIf Format = CompressionFormat.Rar Then
                   CompressWithRar()
              Else
                   CompressWithZip()
              End If
          End Sub




                                                                                          29
Visual Basic.NET Kodlama Standartları


           Mutlaka "Case Else" ile beklenmeyen verileri kontrol edin.

           İYİ:
                  Public Enum CompressionFormat
                      ..
                  End Enum

                  Public Sub Compress(ByVal CompressionFormat As format)
                      Select Case format
                           Case CompressionFormat.Zip
                               CompressWithZip()
                               Exit Select
                           Case Else
                               CompressWithZip()
                               Exit Select
                       End Select
                   End Sub

           KÖTÜ:
               Public Sub Compress(ByVal CompressionFormat As format)
                   Select Case format
                       Case CompressionFormat.Zip
                           CompressWithZip()
                           Exit Select
                       Case CompressionFormat.Gzip
                           CompressWithGzip()
                           Exit Select
                       Case CompressionFormat.Rar
                           CompressWithRar()
                           Exit Select
                   End Select
               End Sub



      5.5 “For / Foreach” Deyimleri
           Bu iki döngü tipinde, döngü değişkenini aksi gerekmedikçe döngü içinde tanımlayın.

           İYİ:
                  Dim test() As String = {"bir", "iki", "üç"}
                  For i As Integer = 0 To test.Length - 1
                          MessageBox.Show(test(i))
                  Next

           KÖTÜ:
               Dim i As Integer
               Dim test() As String = {"bir", "iki", "üç"}
               For i = 0 To test.Length - 1
                     MessageBox.Show(test(i))
               Next

           İYİ:
                  Dim test As String = "bir,iki,uc"
                  For Each item As String In test.Split(",")
                       MessageBox.Show(item)
                  Next


30
10.02.2011 v1.0


      KÖTÜ:
          Dim test As String = "bir,iki,uc"
          Dim item As String
          For Each item In test.Split(",")
               MessageBox.Show(item)
          Next




5.6 “While/do-while” Deyimleri
While döngüsü ve do-while döngüsünün formu aşağıda ki gibidir;

İYİ:
 While koşul
       ' ...
 End While

 Do
       ' ...
 Loop While koşul



KÖTÜ:
 While True
    If Not koşul Then
            Exit While
           ' ...
    End If
End While

Do
' ...
    If Not koşul Then
           Exit Do
    End If
 Loop While True




                                                                             31
Visual Basic.NET Kodlama Standartları


      5.7 İstisnai Durum Yönetimi
      Throw-catch-finally bloğunun yapısı aşağıdaki gibidir.
      Asla boş bir catch bloğu tanımlamayın.
      Throw-catch pahalı bir işlemdir. Bunu akış denetimi için kullanmayın.
      Değerlendirmeyeceğiniz istisnai durumu yakalamayın.
      Catch bloğu içinde try-catch kullanmaktan kaçının.
      İstisnai durum yakalanmasını en çok yakalanma olasılığı olandan en azına doğru
      sıralayın.
      Finally bloğunda try için ayrılan kaynağı salıverin.

      İYİ:
        Try
           ' Đstisnai durum oluşma ihtimali olan kod
        Catch ex As Exception
           ' Oluşan durumu rapor et.
           Throw
        Finally
           ' try bloğu içinde kullanılan kaynağın salıverilmesi.
        End Try



      KÖTÜ:
       Try
           ' Đstisnai durum oluşma ihtimali olan kod
       Catch
           Throw
       Finally
           ' try bloğu içinde kullanılan kaynağın salıverilmesi.
       End Try



      Oluşan istisnai durumu tekrarlamaktansa iletmeyi tercih edin.

      İYİ:
        …
        Catch ex As Exception
           ' Oluşan durumu rapor et.
           Throw



      KÖTÜ:
       …
       Catch ex As Exception
           ' Oluşan durumu rapor et.
           Throw ex




32
10.02.2011 v1.0


İstisnai durumlardan kaçınmak için önce kontrol etmeyi tercih edin.

İYİ:
  If connection.State <> ConnectionState.Closed Then
     connection.Close();
  End If

KÖTÜ:
 Try
     connection.Close();
 Catch ex As Exception
          ' Oluşan durumu rapor et.
 End Try

Catch bloğu içinden farklı bir exception fırlattığınızda mutlaka innerException özelliğine
oluşan istisnai durumu ekleyin. Bu şekilde Call Stack zincirini bozmamış olursunuz.

İYİ:
  Try
     ' Đstisnai durum oluşma ihtimali olan kod
 Catch ex As Exception
     ' Oluşan durumu rapor et.
     Throw New Exception( "istisnai durum açıklaması", ex )
 End Try



KÖTÜ:
 Try
     ' Đstisnai durum oluşma ihtimali olan kod
 Catch ex As Exception
     ' Oluşan durumu rapor et.
     Throw New Exception( "istisnai durum açıklaması" )
 End Try




                                                                                             33
Visual Basic.NET Kodlama Standartları




Đndeks

                                A
                                                                                                      M
Ara birim--------------------------------------------------- 3, 20
                                                                      Metot -------------------------------------------------- 1, 14, 23

                                B
                                                                                                      O
Blok açıklama ------------------------------------------------ 11
Boşluklar --------------------------------------------------- 1, 10   Olay -------------------------------------------------2, 3, 14, 23


                                D                                                                     Ö
Dokümantasyon ----------------------------------------- 1, 13         Özellik-----------------------------------------------2, 3, 14, 23


                                F                                                                     P
For ----------------------------------------------------- 2, 15, 30   Parametre -------------------------------------------- 1, 14, 22
Foreach ---------------------------------------------------- 2, 30
                                                                                                      R
                                G                                     Return --------------------- 2, 9, 11, 12, 16, 18, 19, 23, 26
Girintileme ------------------------------------------------ 1, 10
                                                                                                      S
                                İ                                     Sabit ----------------------------------------------------- 1, 3, 22
İsim alanı --------------------------------------------- 3, 10, 19    Salt okunur ---------------------------------------------------- 3
İstisnai durum ------------------------------------------ 31, 32      Sınıf -------------------------------------1, 3, 8, 14, 17, 20, 35
                                                                      Statik --------------------------------------------------------1, 22
                                                                      Switch -------------------------------------------------------2, 28
                                K
Kısaltmalar ------------------------------------------------ 1, 17                                    T
                                                                      Tek satırlık açıklama ---------------------------------------- 12




34
10.02.2011 v1.0


TiKS (Türkçe içerikli Kodlama Standartları) Proje Ekibi


                    Kadir ÇAMOĞLU
                    Kadir ÇAMOĞLU, 1974 İstanbul doğumludur. 1995 yılından itibaren profesyonel
                    olarak yazılım projelerinde görev alan ÇAMOĞLU, 1993 yılından sonra eğitim
                    sektöründe de yer almıştır. Microsoft’un yazılım üzerine birçok sertifikasına sahip
                    olan ÇAMOĞLU’nun Pusula, Alfa ve Kodlab yayınevlerinden çıkan on adet kitabı
                    bulunmaktadır. Bilgisayar mühendisliği doktora öğrencisi olan ÇAMOĞLU,
                    BilgeAdam Kurumsal ‘da yazılım ve veri tabanı danışmanı olarak çalışmaktadır.

Volkan ATASEVER
Yazılım Dünyasına BASIC ve C/C++ dili üstünde uygulamalar geliştirerek adım
atan Volkan daha sonra C# ve VB.NET, Java dilleri ile uygulamalar geliştirmiştir.
Haziran 2010 tarihinde ise Bilgisayar Mühendisliği kıyafetini giymiştir. Ineta
topluluklarında uzun zaman yazarlık ve editörlük yaptıktan sonra
DeveloperMania.Net sitesinin topluluk lideri olmuştur. INETA User Group Lead
olarak çeşitli çalışmalar yapmaktadır. Yazılım Uzmanlığı ve Danışmanlığı
yapmaktadır. Microsoft'un Akademik sitesi MSAkademik.Net de VB.NET
editörlüğü yapmıştır. Konuşmacı olarak çeşitli üniversite ve eğitim merkezinde
seminer vermektedir. Microsoft'un Türkiye’de sadece 18 kişiye verdiği Sharepoint
Server sertifikasını almıştır. Mobil uygulamalar, ASP.NET, MOSS 2007, SQL
Server ve Windows geliştirmeleri içeren projelerde görev almaktadır. Bilgisayar ve
teknoloji dergilerinde yazarlık yapmaktadır. Şu anda PCWorld dergisinde
yazmaktadır. Ulusal Akademik Konferanslarda akademik bildiri ve makale yazarak
bilime katkıda bulunmaktadır. Bilgisayar Mühendisi olarak çalışmalarını
sürdürmektedir.

                    Merve CEYLAN
                    2001 yılında lisede programlama eğitimi almaya başlayan Merve Ceylan, 2007
                    yılında Marmara üniversitesi Teknik eğitim fakültesi - bilgisayar teknolojileri ve
                    programlama bölümünü bitirmiştir. Halen eğitimine devam etmekte olup işletme
                    bölümü öğrencisidir.
                    Üniversiteye devam ederken TÜBİTAK’ta 2 yıl genel muhasebe projesinde
                    yazılım uzmanı olarak çalışmıştır. Şuan 3 yıldır devam etmekte olduğu Maltepe
                    Üniversitesi öğrenci işleri otomasyonu projesinde proje sorumlusu olarak görev
                    almaktadır. Bu yıllar içinde farklı şirketlerin el terminalli restoran otomasyonu ve
                    pazar araştırması projelerinde de çalışmıştır.


Burhan ÇETİNKAYA
2005 senesinde yazılım dünyasına lisede Veri tabanı Programcılığı Bölümüne
başlayarak giriş yapmıştır. 2007 senesinde Türkiye çapında gerçekleşen bir
yazılım geliştirme yarışmasında Türkiye ikinciliğiyle gümüş madalya kazandı.
Birçok orta çapta Windows - Based Client ve Enterprise uygulamalarda proje
yöneticisi ve yazılım uzmanı olarak görev aldı. Şuan 1. Sınıf öğrencisi olarak
Yeditepe Üniversitesi – Bilgisayar ve Öğretim Teknolojileri Öğretmenliği eğitimime
devam etmektedir.




                                                                                                 35
Visual Basic.NET Kodlama Standartları


                     Bahtiyar DİLEK
                     1984 Amasya doğumlu olan Bahtiyar DİLEK, 16 yaşından beri programlamayla
                     uğraşmaktadır. 2008 yılında Bilimer Bilişim Akademisinden aldığı eğitimle MCPD
                     olmuştur. Sharepoint Developer sertifikası olan Bahtiyar, halen Bilgisayar
                     Mühendisliği öğrencilerine danışmanlık yapmaktadır.




İrfan MEVSİM
1982 Tekirdağ doğumlu olan İrfan Mevsim, Marmara Üniversitesi Bilgisayar ve
Kontrol Öğretmenliği 2005 mezunu. 1998 yılından bu yana gelen amatör
programlamanın üzerine 2007 yılında Türkiye’nin en büyük beyaz eşya
üreticilerinden birinde profesyonel anlamda programlayama başladı. Burada
geçen 3 yılın ardından şu anda işletme içinde ihtiyaç duyulan tüm otomasyon ile
entegre, mobil ve SAP bağlantılı sistemler üzerine uygulama geliştirebilir
durumda.


                     Can YAPAN
                     2006 yılında Bulgaristan Varna Teknik Üniversitesinde, Bilgisayar Sistemleri ve
                     Teknolojileri bölümünde eğitimine başlamıştır. Eğitimi sırasında C# dili ve .Net
                     teknolojileri ile ilgilenmiş ve birkaç projede yer almıştır. Halen freelancer yazılım
                     geliştirip eğitimine devam ediyor.

Hakan YAVUZ
2006 senesinde Asp ile Web programcılığına başladım. Ardından Visual Basic 6.0
ile devam edip daha sonrasında tekrar web programlama ile devam etme kararı
alıp php ve client tabanlı dilleri öğrenmeye başladım (javascript,ajax) daha sonra
.net in gelişmesi ve yaygınlaşması ile beraber c#.net ve vb.net ile devam
etmekteyim. Fakat ağırlığım web programlama üstünde.


                     Yücel YILDIRIM
                     Yücel YILDIRIM, 1981 Sivas doğumludur.2005 yılı Marmara Üni. Bilgisayar
                     Mühendisliği mezunu olup, beş yılı aşkındır yazılım dünyasında aktif olarak rol
                     almaktadır. Şu an bir bankanın bilgi işlem bölümünde çalışmaktadır.




36

More Related Content

What's hot

Doğru akım ve alternatif akım devreleri
Doğru akım ve alternatif akım devreleriDoğru akım ve alternatif akım devreleri
Doğru akım ve alternatif akım devreleriErol Dizdar
 
Zaxcom Nomad kullanım kılavuzu
Zaxcom Nomad kullanım kılavuzuZaxcom Nomad kullanım kılavuzu
Zaxcom Nomad kullanım kılavuzuRadikal Ltd.
 
Flashplatform optimizing content türkçe
Flashplatform optimizing content türkçeFlashplatform optimizing content türkçe
Flashplatform optimizing content türkçedeniz armutlu
 
Geometrik Cizimler
Geometrik CizimlerGeometrik Cizimler
Geometrik Cizimlerguest2bbcb3
 
Adobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçeAdobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçedeniz armutlu
 
Teknik resim ve çizim teknolojileri 520 tc0005 (1)
Teknik resim ve çizim teknolojileri 520 tc0005 (1)Teknik resim ve çizim teknolojileri 520 tc0005 (1)
Teknik resim ve çizim teknolojileri 520 tc0005 (1)Iklimlendirme Sogutma
 
Ljm1130 m1210 use-trww
Ljm1130 m1210 use-trwwLjm1130 m1210 use-trww
Ljm1130 m1210 use-trwwVpVpP
 
Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)Iklimlendirme Sogutma
 
Teknik resim ve çizim teknolojileri 520 tc0029 (2)
Teknik resim ve çizim teknolojileri 520 tc0029 (2)Teknik resim ve çizim teknolojileri 520 tc0029 (2)
Teknik resim ve çizim teknolojileri 520 tc0029 (2)Iklimlendirme Sogutma
 

What's hot (16)

Doğru akım ve alternatif akım devreleri
Doğru akım ve alternatif akım devreleriDoğru akım ve alternatif akım devreleri
Doğru akım ve alternatif akım devreleri
 
Zaxcom Nomad kullanım kılavuzu
Zaxcom Nomad kullanım kılavuzuZaxcom Nomad kullanım kılavuzu
Zaxcom Nomad kullanım kılavuzu
 
Indesign cs5 help part 0001
Indesign cs5 help part 0001Indesign cs5 help part 0001
Indesign cs5 help part 0001
 
Flashplatform optimizing content türkçe
Flashplatform optimizing content türkçeFlashplatform optimizing content türkçe
Flashplatform optimizing content türkçe
 
Sunu hazırlama
Sunu hazırlamaSunu hazırlama
Sunu hazırlama
 
Geometrik Cizimler
Geometrik CizimlerGeometrik Cizimler
Geometrik Cizimler
 
Havalandırma sistemleri 522 ee0202
Havalandırma sistemleri 522 ee0202Havalandırma sistemleri 522 ee0202
Havalandırma sistemleri 522 ee0202
 
Adobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçeAdobe Flash as3 actionscript 3 ile programlama türkçe
Adobe Flash as3 actionscript 3 ile programlama türkçe
 
Metotlar
MetotlarMetotlar
Metotlar
 
SAP PP İçindekiler
SAP PP İçindekilerSAP PP İçindekiler
SAP PP İçindekiler
 
Teknik resim ve çizim teknolojileri 520 tc0005 (1)
Teknik resim ve çizim teknolojileri 520 tc0005 (1)Teknik resim ve çizim teknolojileri 520 tc0005 (1)
Teknik resim ve çizim teknolojileri 520 tc0005 (1)
 
481 bb0091
481 bb0091481 bb0091
481 bb0091
 
Ljm1130 m1210 use-trww
Ljm1130 m1210 use-trwwLjm1130 m1210 use-trww
Ljm1130 m1210 use-trww
 
Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)Teknik resim ve çizim teknolojileri 520 tc0005 (2)
Teknik resim ve çizim teknolojileri 520 tc0005 (2)
 
Flash cs5 help
Flash cs5 helpFlash cs5 help
Flash cs5 help
 
Teknik resim ve çizim teknolojileri 520 tc0029 (2)
Teknik resim ve çizim teknolojileri 520 tc0029 (2)Teknik resim ve çizim teknolojileri 520 tc0029 (2)
Teknik resim ve çizim teknolojileri 520 tc0029 (2)
 

Viewers also liked

Semih Arslan'ın Volkan Atasever ile Röportajı
Semih Arslan'ın Volkan Atasever ile RöportajıSemih Arslan'ın Volkan Atasever ile Röportajı
Semih Arslan'ın Volkan Atasever ile RöportajıVolkan Atasever
 
T3 Dergisi Haziran 2013 yazım
T3 Dergisi Haziran 2013 yazımT3 Dergisi Haziran 2013 yazım
T3 Dergisi Haziran 2013 yazımVolkan Atasever
 
Deseos de-navidad-y-ano-nuevo-com
Deseos de-navidad-y-ano-nuevo-comDeseos de-navidad-y-ano-nuevo-com
Deseos de-navidad-y-ano-nuevo-comCirce la Bruja
 
Resumo de redação oficial
Resumo de redação oficialResumo de redação oficial
Resumo de redação oficialfelipe luccas
 

Viewers also liked (6)

Kariyer Günleri
Kariyer GünleriKariyer Günleri
Kariyer Günleri
 
Semih Arslan'ın Volkan Atasever ile Röportajı
Semih Arslan'ın Volkan Atasever ile RöportajıSemih Arslan'ın Volkan Atasever ile Röportajı
Semih Arslan'ın Volkan Atasever ile Röportajı
 
Teknolojinin Geleceği
Teknolojinin GeleceğiTeknolojinin Geleceği
Teknolojinin Geleceği
 
T3 Dergisi Haziran 2013 yazım
T3 Dergisi Haziran 2013 yazımT3 Dergisi Haziran 2013 yazım
T3 Dergisi Haziran 2013 yazım
 
Deseos de-navidad-y-ano-nuevo-com
Deseos de-navidad-y-ano-nuevo-comDeseos de-navidad-y-ano-nuevo-com
Deseos de-navidad-y-ano-nuevo-com
 
Resumo de redação oficial
Resumo de redação oficialResumo de redação oficial
Resumo de redação oficial
 

Similar to Ti ks vb v1.0

Similar to Ti ks vb v1.0 (15)

Tiks cs v1.0
Tiks cs v1.0Tiks cs v1.0
Tiks cs v1.0
 
BTT. Modül 9. Yazıcılar
BTT. Modül 9. YazıcılarBTT. Modül 9. Yazıcılar
BTT. Modül 9. Yazıcılar
 
BTT.Modül 9. Yazicilar
BTT.Modül 9. YazicilarBTT.Modül 9. Yazicilar
BTT.Modül 9. Yazicilar
 
Resimlerle web araçları hazırlama
Resimlerle web araçları hazırlamaResimlerle web araçları hazırlama
Resimlerle web araçları hazırlama
 
Web Dynpro
Web DynproWeb Dynpro
Web Dynpro
 
Bulut Bilişim El Kitabı
Bulut Bilişim El KitabıBulut Bilişim El Kitabı
Bulut Bilişim El Kitabı
 
Mat3 sevgi-ok
Mat3 sevgi-okMat3 sevgi-ok
Mat3 sevgi-ok
 
Word '07
Word '07Word '07
Word '07
 
Trt staj 2
Trt staj 2Trt staj 2
Trt staj 2
 
En Case SüRüM
En Case SüRüMEn Case SüRüM
En Case SüRüM
 
7-Post(İlk Açılış)
7-Post(İlk Açılış)7-Post(İlk Açılış)
7-Post(İlk Açılış)
 
Bgnet
BgnetBgnet
Bgnet
 
Otomotiv motor mekanigi
Otomotiv motor mekanigi Otomotiv motor mekanigi
Otomotiv motor mekanigi
 
9-Yazıcılar
9-Yazıcılar9-Yazıcılar
9-Yazıcılar
 
İstanbul İmar Yonetmeliği
İstanbul İmar Yonetmeliğiİstanbul İmar Yonetmeliği
İstanbul İmar Yonetmeliği
 

More from Volkan Atasever (12)

Bitsector 3
Bitsector 3Bitsector 3
Bitsector 3
 
Bitsector 2
Bitsector 2Bitsector 2
Bitsector 2
 
Bitsector Sayı 01
Bitsector Sayı 01Bitsector Sayı 01
Bitsector Sayı 01
 
2010 07
2010 072010 07
2010 07
 
2010 06
2010 062010 06
2010 06
 
2010 05
2010 052010 05
2010 05
 
2010 04
2010 042010 04
2010 04
 
2010 03
2010 032010 03
2010 03
 
2010 02
2010 022010 02
2010 02
 
2010 01
2010 012010 01
2010 01
 
Aralık 2009 PCWorld Yazım
Aralık 2009 PCWorld YazımAralık 2009 PCWorld Yazım
Aralık 2009 PCWorld Yazım
 
Csharp 3.0
Csharp 3.0Csharp 3.0
Csharp 3.0
 

Ti ks vb v1.0

  • 1.
  • 2. Visual Basic.NET Kodlama Standartları Versiyon Geçmişi Tarih Ver Açıklama Yazar(lar) Gözden Geçiren(ler) 10.02.2011 1.0 Belge oluşturuldu - - ii
  • 3. 10.02.2011 v1.0 Künye Proje Koordinatörü Kadir Çamoğlu Editör Volkan Atasever Kapak Tasarımı Hakan Çamoğlu Yazarlar Volkan ATASEVER İrfan MEVSİM Merve CEYLAN Can YAPAN Kadir ÇAMOĞLU Hakan YAVUZ Burhan ÇETİNKAYA Yücel YILDIRIM Bahtiyar DİLEK Gözden Geçirenler Bahri Altan Kemal İkizoğlu Atagün Sarıbayraktar Erman Demirer Soykan Özçelik Haluk Aksoy Mesut Güneş İbrahim Atay iii
  • 4.
  • 5. Đçindekiler Önsöz ......................................................................................................................................... 4 Amaç ........................................................................................................................................ 5 Kapsam ................................................................................................................................... 5 Kullanım Şartları ................................................................................................................... 5 Kullanım Önerisi ................................................................................................................... 5 Önemli Açıklama .................................................................................................................. 5 Geri Bildirim........................................................................................................................... 5 1. Dosya Organizasyonu ............................................................................................ 6 1.1 Klasör Yapısı ............................................................................................................... 6 1.2 Kaynak Kod Dosyaları ............................................................................................... 7 2. Biçimlendirme ........................................................................................................... 8 2.1 Sınıf Yapısı .................................................................................................................. 8 2.2 Girintileme ve Kapsamı Belirleme .......................................................................... 10 2.3 Boşluklar .................................................................................................................... 10 3. Açıklamalar .............................................................................................................. 11 3.1 Blok Açıklamalar ....................................................................................................... 11 3.2 Tek Satırlık Açıklamalar........................................................................................... 12 3.3 Satır İçi Açıklamalar ................................................................................................. 12 3.4 Dokümantasyon Amaçlı Açıklamalar..................................................................... 13 3.5 TODO : Açıklamalar ................................................................................................. 13 4. Đsimlendirme Kuralları ........................................................................................ 14 4.1 Büyük/Küçük Harf Kullanımı ................................................................................... 14 4.2 Pascal/Camel Casing............................................................................................... 14 4.3 Visual Basic.NET Diline Özel Ayrılmış Kelimeler ................................................ 15 4.4 Büyük/Küçük Harf Hassasiyeti ............................................................................... 16 4.5 Kısaltmalar ................................................................................................................. 17 4.6 Kelime Seçimi ........................................................................................................... 18 4.7 “İsim Alanı” İsimlendirme ......................................................................................... 19 4.8 “Sınıf” İsimlendirme .................................................................................................. 20 4.9 “Ara Birim” İsimlendirme .......................................................................................... 20 4.10 “Öznitelik” İsimlendirme ........................................................................................... 21 4.11 “Numaralandırma” İsimlendirme............................................................................. 21
  • 6. Visual Basic.NET Kodlama Standartları 4.12 “Sabit” ve “Salt Okunur” Alan İsimlendirme .......................................................... 22 4.13 “Statik” Alan İsimlendirme ....................................................................................... 22 4.14 Parametre İsimlendirme........................................................................................... 22 4.15 Metot İsimlendirme ................................................................................................... 23 4.16 Özellik İsimlendirme ................................................................................................. 23 4.17 Olay İsimlendirme ..................................................................................................... 23 4.18 Değişken İsimlendirme ve İlk Değer Atama.......................................................... 24 4.19 Kontrol İsimlendirme................................................................................................. 24 5. Deyimler...................................................................................................................... 26 5.1 Basit Deyimler ........................................................................................................... 26 5.2 “Return” Deyimleri..................................................................................................... 26 5.3 “If, if-else, if else-if else” Deyimleri ......................................................................... 27 5.4 “Select” Deyimleri ..................................................................................................... 29 5.5 “For / Foreach” Deyimleri......................................................................................... 30 5.6 “While/do-while” Deyimleri....................................................................................... 31 5.7 İstisnai Durum Yönetimi ........................................................................................... 32 2
  • 7. 10.02.2011 v1.0 Terimler Terim Türkçe Açıklama Namespace İsim alanı Class Sınıf Interface Ara birim Attribute Öz nitelik Enumeration Numaralandırma Property Özellik Event Olay Constant Sabit Readonly Salt okunur Pascal Casing - İsimler BÜYÜK harfle başlar. İsmi oluşturan ifade birden fazla kelimeden oluşuyorsa, kelimelerin ilk harfleri BÜYÜK harflerle yazılır. (OgrenciKaydet, UcretHesapla, RaporYazdir) Camel Casing - İsimler küçük harfle başlar. İsmi oluşturan ifade birden fazla kelimeden oluşuyorsa, isimdeki ilk kelime küçük harfle başlar. Sonraki kelimeler BÜYÜK harfle başlar. (yeniOgrenciKaydet, ucretHesapla, raporYazdir) 3
  • 8. Visual Basic.NET Kodlama Standartları Önsöz Özlü bir söz vardı yıllar önce okuduğum: “Bilgisayarların okuyacağı kodu yazmak kolay, önemli olan insanların okuyabileceği kodu yazmak.” diyordu. İlk başta çok havalı gelen bu deyişi sonrasında biraz düşünmek istedim. Yazdığımız kodu bilgisayarın okuması yeterli değil mi? Zaten bilgisayar çalıştırmıyor mu onu? Tamam işte, bilgisayar çalıştırıyorsa her şey yolunda demektir değil mi? Bazen. Altı ay önce yazdığınız bir kodu tekrar açıp değiştirmek ihtiyacı hissettiğinizde kodlara bakıp hiç “Yahu ne yapmışım ben? İyi kod yazmışım valla” dediğiniz oldu mu? Eminim olmuştur. Sonuçta hepimiz geçtik bu yollardan. İster eski projelerinizdeki kodları hatırlayamayan ve kodu okuyamayan siz olsun, ister bir projede beraber çalıştığınız arkadaşlarınız olsun tüm bu senaryolar eninde sonunda yazdığınız kodların bir insan tarafından da okunması gerekeceğine dair ipuçları veriyor. Ekranınızdaki bu PDF veya belki de çıktısını aldığınız bu doküman size bu yolda yardımcı olma amacı taşıyor. Tabi ki siz de kendi tekniklerinizi ve kod yazım kurallarınızı oluşturabilir ve uygulayabilirsiniz fakat bir kısım genel geçer, artık gelenekselleşmiş kurallara uymanın da farklı faydaları olacaktır. Tavsiyem, eğer tek başınıza kod yazıyorsanız en azından ileriye dönük hem kişisel hem de proje bazında bir yatırım olarak bu kurallara uymaya çalışın. Şaka değil, böylece dünya hepimiz için (yazılım geliştiriciler) daha güzel bir yer olabilir. Eğer bir ekiple kod yazıyorsanız önce şirketinizde böyle bir doküman olup olmadığını öğrenin. Varsa ne kadar uygulandığını araştırın, gerekiyorsa revizyonlar önerin. Böyle bir doküman yoksa şirketinizde hemen bu dokümanı basıp herkese dağıtın. Yazılan bir kodun insanlar tarafından okunabilirliğinin uzun vadede kurumlara ciddi karlar getireceğini de yöneticinizle paylaşmanızda fayda olacaktır. Artık top sizde! Bir sonraki adımı atıp insan dostu kodlar yazmak elinizde. Benim son olarak yapmak gereken bir şey daha var; bu dokümanın oluşturulmasında, hazırlanmasında ve belki de size ulaşmasında birçok dostun, kardeşimizin emeği var. Hepsine daha iyi bir yazılım dünyasına katkıları için sonsuz teşekkür ediyorum. Emeğinize sağlık! Daron Yöndem Microsoft Regional Director INETA MEA Vice President 4
  • 9. 10.02.2011 v1.0 Giriş Amaç Bu dokümanı geliştirmekteki amacımız, VB.NET programlama diliyle geliştirilecek projelerde kullanılmak üzere, kodlama standartları için fikir verecek bir “örnek” oluşturmaktır. Kapsam Bu doküman, VB.NET Kodlama Standartları belgesinin ilk sürümüdür. Bu nedenle isimlendirme, biçimlendirme ve temel kodlama yapıları gibi en temel konulara değinilmiştir. Kullanım Şartları Bu doküman bir grup çalışmasının ürünüdür. Belgenin sahipleri teknik olarak künyede yazılı olan (gözden geçirenler hariç) isimlerdir. Belgeyi, kaynak belirtmek koşuluyla tamamen ya da kısmen kullanabilirsiniz. Kopyalayabilir, çoğaltabilir ve dağıtabilirsiniz. Kullanım Önerisi Bu belgeyi geliştireceğiniz projelerde olduğu gibi kullanmanız mümkün olabileceği gibi, kendi standartlarınızı oluşturmak için temel almak üzere de kullanabilirsiniz. Özellikle daha önceden edindiğiniz yazılım geliştirme alışkanlıklarınız varsa, bunları dokümandakilerle karşılaştırarak uygun gördüğünüzü tercih edebilirsiniz. Önemli Açıklama Bu dokümanda belirtilen hiçbir kodlama standardı, ulusal ya da uluslararası genel bir standardı ifade etmez. Bu dokümanda açıklanan standartlar, içeriği geliştirenlerin ve proje koordinatörünün tecrübeleriyle oluşturdukları, kendi projelerinde uyguladıkları kodlama yaklaşımlarıdır. Bu dokümanda yazılanları VB.NET programlama dilinin, ilişkili teknolojilerin ya da yazılım mühendisliğinin temel kuralları olarak görmeyin. Dokümanı geliştirenlerin hiçbir şekilde en doğru ve en iyi yazılım kodlama standardını oluşturmak gibi bir iddiası yoktur. Buradaki amaç bir öneri ve/veya örnek oluşturmaktır. Geri Bildirim Bu proje gönüllük esasına dayalı olarak, geniş bir katılımcı kitlesiyle hazırlanmıştır. Bu dokümanın olgunlaşması ve daha kaliteli hale gelmesi için, dokümanı inceleyen, kullanan herkesin geri bildirimi bizim için çok değerli olacaktır. Lütfen dokümanla ilgili hataları, önerilerinizi ve her türlü geri bildiriminizi aşağıdaki web ve eposta adresleri üzerinden bizimle paylaşın. Eposta: tiksprojesi@gmail.com http://tiksprojesi.blogspot.com/ http://www.facebook.com/#!/group.php?gid=29006737231 http://www.chip.com.tr/blog/kadircamoglu/ 5
  • 10. Visual Basic.NET Kodlama Standartları 1. Dosya Organizasyonu 1.1 Klasör Yapısı Kullanım amaçlarına yönelik olarak, kaynak kodlarını bir arada tutacak şekilde klasör yapısı oluşturun. Klasörün amacına yönelik isimlendirme yapın. Böylelikle hangi dosyanın nerede olduğu kolayca bulunabilir. İYİ: 6
  • 11. 10.02.2011 v1.0 KÖTÜ: 1.2 Kaynak Kod Dosyaları Kaynak kod dosyalarını, klasör yapısına uygun olarak amaçlarına uygun yerde oluşturun. İYİ: 7
  • 12. Visual Basic.NET Kodlama Standartları KÖTÜ: 2. Biçimlendirme 2.1 Sınıf Yapısı Sınıfların isimlendirilmesinde “Pascal Casing” kullanın. İsimlendirmede, ismin sonuna Class veya Sınıf kelimesi eklemeyin. Sınıf Erişim belirteçlerini (private, public, internal) mutlaka belirtin. Her sınıf için mutlaka en az bir yapıcı metot (Constructor) oluşturun. Parçalı (partial) sınıflar kullandığınızda, her bir parça içerisinde, diğer parçaların yerini belirtin. Yapıcı metodumuzun içinde parametrelerinizi eşleştirirken mutlaka “Me” ekini kullanın. İYİ: Public Class HastaIlac '<summary>Hastanın kullandığı ilaç Bilgisi</summary> Public Sub New(ByVal ilacBarkod As String, _ ByVal ilacAdi As String) End Sub End Class KÖTÜ Public Class HastaIslemleriSinifi Public Sub New() End Sub End Class 8
  • 13. 10.02.2011 v1.0 Sınıfları oluştururken girintileri doğru şekilde uygulamaya dikkat edin. İYİ: Public Class HastaIlac Private ilacAdi As String Public Property IlacAd() As String Get Return IlacAdi End Get Set(ByVal value As String) ilacAdi = value End Set End Property Private ilacBarkod As String Public Property IlacBarkodu() As String Get Return ilacBarkod End Get Set(ByVal value As String) ilacBarkod = value End Set End Property '<summary>Hastanın kullandığı ilaç Bilgisi</summary> Public Sub New(ByVal ilacBarkod As String, ByVal ilacAdi As String) Me.IlacAd = ilacAdi Me.IlacBarkodu = IlacBarkodu End Sub End Class KÖTÜ: Public Class HastaIlac Private ilacAdi As String Public Property IlacAd() As String Get Return ilacAdi End Get Set(ByVal value As String) ilacAdi = value End Set End Property Private ilacBarkod As String Public Property IlacBarkodu() As String Get Return ilacBarkod End Get Set(ByVal value As String) ilacBarkod = value End Set End Property '<summary>Hastanın kullandığı ilaç Bilgisi</summary> Public Sub New(ByVal ilacBarkod As String, ByVal ilacAdi As String) IlacAd = ilacAdi IlacBarkodu = IlacBarkodu End Sub End Class 9
  • 14. Visual Basic.NET Kodlama Standartları 2.2 Girintileme ve Kapsamı Belirleme Girinti kullanırken dikkatli olun. Girinti (sekme/tab) ve boşlukları uygun şekilde kullanın. Kod ya da açıklama yazarken boşluk kullanmayın. İsim alanı, sınıf, metot, koşul, döngü, istisnai durum yönetimi bloklarının her biri için ayrıca girintileme yapın. İYİ: Public Class HastaIslemleri 'Hasta Kayıt işlemleri Public Sub New() 'Yapıcı Metodumuz... End Sub 'Hasta kayıt edilir Public Sub HastaKayit(ByVal tcKimlikNo As String) End Sub End Class KÖTÜ: Public Class HastaIslemleri 'Hasta Kayıt işlemleri Public Sub New() 'Yapıcı Metodumuz... End Sub Public Sub HastaKayit(ByVal tcKimlikNo As String) End Sub End Class End Class 2.3 Boşluklar Visual Studio birçok durumda boşluk durumlarını sizin için hallediyor... Ancak fonksiyonlar ve sublar arasındaki boşlukları sizin düzenlemeniz gerekiyor. İYİ: Private Function YasHesapla(_ ByVal dogumGunu As DateTime) As Integer ' ... End Function Private Function YasHesapla(_ ByVal dogumGunu As DateTime, _ ByVal hesaplanacakTarih As DateTime) As Integer ' ... End Function 10
  • 15. 10.02.2011 v1.0 KÖTÜ: Private Function YasHesapla(_ ByVal dogumGunu As DateTime) As Integer ' ... End Function Private Function YasHesapla(_ ByVal dogumGunu As DateTime, _ ByVal hesaplanacakTarih As DateTime) As Integer ' ... End Function 3. Açıklamalar 3.1 Blok Açıklamalar Blok açıklamalarını, fonksiyon, modül veya proje gibi kodların başında, daha sonraki kullanımlarda gerekli olabilecek açıklamaları girmek için kullanın. Açıklamaları, çok detaya inmeden genel hatlarıyla kod bloğunun kullanımını ve gerekli olabilecek diğer bilgileri kullanarak oluşturun. İYİ: ' Satış fiyatı hesaplaması 25.10.2011 Đrfan Mevsim ' ' Fonksiyon birim fiyatı ve KDV orani olarak gönderilen ' bilgilerin satış fiyatını geri döndürür. ' ' Örnek Kullanım ' Dim SatisFiyati as Double = SatisHesapla(1000,18) ' ' Dönüş Değeri --> 1018.0 (double) ' Private Function SatisHesapla _ (ByVal BirimFiyat As Integer, _ ByVal KdvOrani As Integer) _ As Double Return BirimFiyat + KdvOrani% End Function KÖTÜ: ' Satış fiyatı hesaplaması (yetersiz açıklama) Private Function SatisHesapla _ (ByVal BirimFiyat As Integer, _ ByVal KdvOrani As Integer) _ As Double Return BirimFiyat + KdvOrani% End Function 11
  • 16. Visual Basic.NET Kodlama Standartları KÖTÜ: Private Function SatisHesapla _ (ByVal BirimFiyat As Integer, _ ByVal KdvOrani As Integer) _ As Double ' Dönüş Değeri --> 1018.0 (yanlış ve yetersiz açıklama) Return BirimFiyat + KdvOrani% End Function 3.2 Tek Satırlık Açıklamalar Tek satırlık açıklamaları alt kısımdaki kod bloğunu açıklar nitelikte, belirli işlemlerin gerçekleştiği kod bloklarının başına yazın. İYİ: ' Satış fiyatı hesaplaması Dim BirimFiyat As Integer = 1000 Dim KdvOrani As Integer = 18 Dim Miktar As Integer = 3 Dim SatisFiyati As Double = (Miktar * BirimFiyat) + KdvOrani% KÖTÜ: ' Birim fiyat tanımlaması Dim BirimFiyat As Integer = 1000 Dim KdvOrani As Integer = 18 Dim Miktar As Integer = 3 Dim SatisFiyati As Double = (Miktar * BirimFiyat) + KdvOrani% 3.3 Satır İçi Açıklamalar Satır içi açıklamaları, sadece bulunduğu satırdaki ifadeyi açıklamak ve o satıra ait olan bilgileri girmek için kullanın. İYİ: Dim KullaniciAdi As String = "Ahmet" ' Kullanıcının Adı Dim KullaniciSoyadi As String = "Kozdağ" ' Kullanıcının Soyadı Dim KullaniciSicil As String = "D201056" ' Kullanıcının Sicil No KÖTÜ: Dim KullaniciAdi As String = "Ahmet" ' Kullanıcı Bilgileri Dim KullaniciSoyadi As String = "Kozdağ" Dim KullaniciSicil As String = "D201056" 12
  • 17. 10.02.2011 v1.0 KÖTÜ: Dim KullaniciAdi As String = "Ahmet" ' Kullanıcı Bilgileri Dim KullaniciSoyadi As String = "Kozdağ" ' Kullanıcı Bilgileri Dim KullaniciSicil As String = "D201056" ' Kullanıcı Bilgileri 3.4 Dokümantasyon Amaçlı Açıklamalar Dokümantasyon amaçlı açıklamaları; yazdığınız herhangi bir sınıf ya da fonksiyonun açıklamasını yapmak amacıyla kullanın. Açıklama yaptığınız metoda uygun olarak özet (summary), parametre ve dönüş değerleri için açıklamalar yazın. İYİ: '/ <summary> '/ Basit bir Fonksiyon.</summary> '/ <param name="yazi"> '/ Gelen yaziyi txtMetin.text 'e eşitler</param> Public Sub MetinYaz(ByVal yazi As String) txtMetin.Text = yazi End Sub 3.5 TODO : Açıklamalar TODO: açıklamalarını projenin herhangi bir anında aklınıza gelen ama daha sonra yapılması gereken işlemler için kullanın. Böylece projenin hangi aşamasında hangi değişikleri yapmanız gerektiğini Build etmeden önce TODO: kelimesini projenizde arayarak rahatlıkla hatırlayabilirsiniz. İYİ: ' TODO: Hesaplamadan önce KDV oranlarının güncelliğini kontrolet Dim SatisFiyati As Double = (Miktar * BirimFiyat) + KdvOrani% KÖTÜ: ' TODO: Satış fiyatı hesaplanması Dim SatisFiyati As Double = (Miktar * BirimFiyat) + KdvOrani% 13
  • 18. Visual Basic.NET Kodlama Standartları 4. Đsimlendirme Kuralları 4.1 Büyük/Küçük Harf Kullanımı Özellik ve değişken gibi öğeleri isimlendirirken kelimelerin ilk harflerini küçük diğer harflerini büyük kullanın. Sınıf ve metotlarda ise ilk harfleri büyük kullanın. İYİ: Dim toplamaYap As Integer … Dim cikarmaYap As String … Public Property ToplamaIslemi(ByVal ilkSayi As Integer, ByVal ikinciSayi As Integer) As Integer … Class Kisiler KÖTÜ: Dim TOPLAMAYAP As Integer … Dim CIKARMAyap As String … Public Property toplamaisleMI(ByVal ilkSAYI As Integer, ByVal ikinciSAYI As Integer) As Integer … Class KISILER 4.2 Pascal/Camel Casing İsimlendirme yaparken Pascal/Camel isimlendirmeyi doğru yapmak için aşağıdaki tabloyu kullanın. Metotlarda, alanlarda (field) ve özelliklerde (properties) public, private, internal da olsa Pascal Casing kullanın. Proje dosyası Pascal Casing HastaTakibi.vbproj Kaynak dosyası Pascal Casing HTLogo.jpg Sınıf (class) Pascal Casing Kisi Yapı (struct) Pascal Casing KisiListeBilgisi Arabirim (interface) Pascal Casing IKisiselBilgiler Metot Pascal Casing KisiEkle Özellik (Property) Pascal Casing Adi, Soyadi Alan (public field) Pascal Casing TCKimlikNo Alan (diğer Field) Camel Casing dogumTarihi Numaralandırma (Enum) Pascal Casing KayitDurumu Delegate (public) Pascal Casing KayitSilindi Delegate (diğer) Camel Casing kayitIsleniyor Değişken Camel Casing vergiNumarasi Parametre Camel Casing ad, soyad, yas Olay (event) Camel_Casing btnKaydet_Click 14
  • 19. 10.02.2011 v1.0 4.3 Visual Basic.NET Diline Özel Ayrılmış Kelimeler Aşağıdaki kelimeler Visual Basic.NET programlama diline özeldir. Bu kelimeleri farklı büyük/küçük harf kombinasyonlarında da olsa kullanmayın. AddHandler DirectCast Module Shadows AddressOf Do MustInherit Shared Alias Double MustOverride Short And Each MyBase Single AndAlso Else MyClass Static As ElseIf Namespace Step Boolean End Narrowing Stop ByRef EndIf New String Byte Enum Next Structure ByVal Erase Not Sub Call Error Nothing SyncLock Case Event NotInheritable Then Catch Exit NotOverridable Throw CBool FALSE Object To CByte Finally Of TRUE CChar For On Try CDate Friend Operator TryCast CDec Function Option TypeOf CDbl Get Optional Variant Char GetType Or Wend CInt Global OrElse UInteger Class GoSub Overloads ULong CLng GoTo Overridable UShort CObj Handles Overrides Using Const If ParamArray When Continue Implements Partial While CSByte Imports Private Widening CShort In Property With CSng Inherits Protected WithEvents CStr Integer Public WriteOnly CType Interface RaiseEvent Xor CUInt Is ReadOnly #Const 15
  • 20. Visual Basic.NET Kodlama Standartları CULng IsNot ReDim #Else CUShort Let REM #ElseIf Date Lib RemoveHandler #End Decimal Like Resume #If Declare Long Return Default Loop SByte Delegate Me Select Dim Mod Set 4.4 Büyük/Küçük Harf Hassasiyeti Türkçe karakterler farklı algılandığından kodlama içerisinde Türkçe karakterler kullanmayın. Küçük i ve bu karakteri büyük yazarken I kullanın. Ç yerine c, ş yerine s, ğ yerine g, ü yerine u, ö yerine o tercih edin. İYİ: Dim kacisVeIlk As Integer Dim ogrenmeVeEgitim As String KÖTÜ: Dim KaçışveĐlk As Integer Dim ÖğrenmeVeEğitim As String Fonksiyonlarda parametre kullanırken, verilen tek karakterli isimleri büyük veya küçük versiyonlarını yazarak kullanmayın. İYİ: Public Property ToplamaIslemi(ByVal istenenSayi As Integer, ByVal verilenSayi As Integer) As Integer KÖTÜ: Public Property ToplamaIslemi(ByVal b As Integer, ByVal B As Integer) As Integer Aynı isimli fakat harflerinin büyüklüğü küçüklüğü farklı değişkenler tanımlamayın. İYİ: Dim denemeSayisi As Integer Dim eldeSayisi As Integer KÖTÜ: Dim deneme As Integer Dim DENEME As Integer 16
  • 21. 10.02.2011 v1.0 Farklı büyük/küçük harf hassasiyetlerinde, aynı isimli metotlar yazmayın. İYİ: Private Sub ToplamaHesabi() End Sub Private Sub CikarmaHesabi() End Sub KÖTÜ: Private Sub hesapla() End Sub Private Sub Hesapla() End Sub 4.5 Kısaltmalar Sınıf, özellik, metot, değişken gibi öğelere isim verirken çok zorunlu olmadıkça kısaltma kullanmayın. İYİ: Dim kullaniciAdi As Integer Dim yetkiliMi As Boolean … Private Sub KullaniciKaydet() KÖTÜ: Dim kulAdi As Integer Dim ytklMi As Boolean … Private Sub KullKyd() Eğer aynı isme sahip aynı türden iki veya daha fazla öğe kullanılacaksa bunları numaralandırmayı tercih edin. İYİ: Dim ogrenci1 As Integer Dim ogrenci2 As Integer KÖTÜ: Dim ogrenciilk As Integer Dim ogrenciiki As Integer 17
  • 22. Visual Basic.NET Kodlama Standartları 4.6 Kelime Seçimi Kolay okunabilir, tanımlayıcı isimleri seçin. İYİ: Private _urunAdi As String Public Property UrunAdi() As String Get Return _urunAdi End Get Set(ByVal value As String) _urunAdi = value End Set End Property KÖTÜ: Private _adiUrun As Integer Public Property AdiUrun() As Integer Get Return _adiUrun End Get Set(ByVal value As Integer) _adiUrun = value End Set End Property Tanımlayıcı isimlerinizi kısa tutmak için onları anlamsızlaştırmayın. İYİ: Private _kullaniciAdi As String Public Property KullaniciAdi() As String Get Return _kullaniciAdi End Get Set(ByVal value As String) _kullaniciAdi = value End Set End Property KÖTÜ: Private _kAdi As String Public Property kAdi() As String Get Return _kAdi End Get Set(ByVal value As String) _kAdi = value End Set End Property 18
  • 23. 10.02.2011 v1.0 Tanımlayıcılarınızı isimlendirirken hiçbir zaman tire “-”, alttan tire “_” veya alfa- numerik olmayan karakterler “!@#$%^&*()” kullanmayın. İYİ: Private _dogumTarih As Date Public Property DogumTarihi() As Date Get Return _dogumTarih End Get Set(ByVal value As Date) _dogumTarih = value End Set End Property KÖTÜ: Private _dogumTarih As DateTime Public Property Dogum-Tarihi() As DateTime Get Return _dogumTarih End Get Set(ByVal value As DateTime) _dogumTarih = value End Set End Property Tanımlayıcılarınızı hiçbir zaman Macar Notasyonu - Hungarian Notation- ile isimlendirmeyin. KÖTÜ: Dim u32Identifier As Integer Dim bBusy As Boolean Dim chInitial As Char Dim dbPi As Double Dim rgStudents As String() = New String(4) {} Dim hwndForm As Form1 4.7 “İsim Alanı” İsimlendirme İsim alanı adlandırırken, “Pascal Casing” tipi isimlendirme kullanın. Büyük harfle başlayıp her bir kelimenin ilk harfini büyük harf kullanarak isim verin. Kelimeler arasında “_” veya “-” benzeri ayraçlar kullanmayın. İsim alanı adlandırırken, proje/assembly adı ile aynı adı kullanın. Kullandığınız dizinlerin adlarını, isim alanı adlarında da kullanın. İYİ: KodlamaStandartlari.vbproj namespace KodlamaStandartlari KodlamaStandartlari.Models.dll namespace KodlamaStandartlari.Models KodlamaStandartlari.vbproj projesinde Models dizini namespace KodlamaStandartlari.Models 19
  • 24. Visual Basic.NET Kodlama Standartları KÖTÜ: KodlamaStandartlari.vbproj namespace Kodlama KodlamaStandartlari.Models.dll namespace KodlamaStandartlari.Modeller KodlamaStandartlari.vbproj projesinde Models dizini namespace KodlamaStandartlari.Modeller 4.8 “Sınıf” İsimlendirme Sınıflara ad verirken, Pascal tipi isimlendirme kullanın. Büyük harfle başlayıp her bir kelimenin ilk harfini büyük harf kullanarak isim verin. Kelimeler arasında “_” veya “-” benzeri ayraçlar kullanmayın. Sınıflara ad verirken, isim veya isim öbeği kullanın. Sınıflara adlarında, “Sınıf”, “Class” veya “C” gibi ifadeler kullanmayın. İYİ: Public Class Araba … Internal Class Ucurtma … Private Class UcakMotoru KÖTÜ: Public Class Yap … Internal Class ClassUcurtma … Internal Class CucurtmaSinifi … Private Class UcakmotoruClass 4.9 “Ara Birim” İsimlendirme Ara birimlerinizi uygulayacağınız sınıfların isimleriyle birlikte başlarına “I” harfi getirerek yazın. Ara biriminizi isimlendirirken her iki kelimenin ilk harfleri büyük olacak şekilde isimlendirin.(PascalCasing) İYİ: Public Class Takip Implements ITakip Public Interface ITakip Sub StokTakip(ByVal urunAdet As Integer) End Interface Public Sub StokTakip1(ByVal urunAdet As Integer) Implements ITakip.StokTakip Me.urunAdet = urunAdet.ToString() End Sub End Class 20
  • 25. 10.02.2011 v1.0 KÖTÜ: Public Class Takip Implements StokInterface Public Interface StokInterface Sub StokTakip(ByVal urunAdet As Integer) End Interface Public Sub StokTakip1(ByVal urunAdet As Integer) Implements ITakip.StokTakip Me.urunAdet = urunAdet.ToString() End Sub End Class 4.10 “Öznitelik” İsimlendirme Kendi geliştirdiğiniz “öznitelik” sınıflarınızı isimlendirirken, sınıf isminizin sonunda “Attribute” kelimesini getirin. İYİ: <AttributeUsage(AttributeTargets.Class)> _ Public Class AttributeTakip … End Class KÖTÜ: <AttributeUsage(AttributeTargets.Class)> _ Public Class Takip … End Class 4.11 “Numaralandırma” İsimlendirme Numaralandırmalarınızı isimlendirirken “Pascal Casing” isimlendirme kuralını dikkate alın. Numaralandırma isimlerinizin sonuna “enum” yazmayın. Numaralandırmalarınız için tekil isimler seçin. İYİ: Enum OnemDerecesi Yuksek = 3 Orta = 2 Dusuk = 1 End Enum KÖTÜ: Enum OnemDereceleriEnum Yuksek = 3 Orta = 2 Dusuk = 1 End Enum 21
  • 26. Visual Basic.NET Kodlama Standartları 4.12 “Sabit” ve “Salt Okunur” Alan İsimlendirme “Sabit” ve “Salt Okunur” alanlar isimlendirilirken; isim, isim tamlaması ve (çok uzunsa) anlamlı kısaltmaları; her kelimenin ilk harfi büyük olacak şekilde kullanın. (PascalCasing) İYİ: Public Const AySayisi As Integer = 12 Public Const HaftaSayisi As Integer = 52 Public ReadOnly GunSayisi As Integer = 365 KÖTÜ: Public Const Ay_Sayisi As Integer = 12 Public Const haftasayisi As Integer = 52 Public ReadOnly _Gun_Sayisi As Integer = 365 4.13 “Statik” Alan İsimlendirme “Statik” alanlar isimlendirilirken; isim, isim tamlaması ve (çok uzunsa) anlamlı kısaltmaları; her kelimenin ilk harfi büyük olacak şekilde kullanın. (PascalCasing) İYİ: Public Shared Fiyat As Integer Public Shared ToplamSaat As Integer KÖTÜ: Public Shared fyt As Integer Public Shared fiyat As Integer Public Shared toplam_saat As Integer 4.14 Parametre İsimlendirme Parametre isimlendirilirken; içeriğine göre anlamlı olarak, isim, isim tamlaması ve (çok uzunsa) anlamlı kısaltmaları; birinci kelimenin ilk harfi küçük bunu takip eden kelimelerin baş harfleri büyük olacak şekilde kullanın. (Camel Casing) İYİ: Private Sub KullaniciKaydet(kullaniciAdi As String, _ parola As String) End Sub KÖTÜ: Private Sub KullaniciKaydet(kul_adi As String, _ prl As String) End Sub 22
  • 27. 10.02.2011 v1.0 4.15 Metot İsimlendirme Metotlarınızı isimlendirirken “Pascal” isimlendirme kuralını kullanın.(Pascal Casing) Metot parametreleriniz için “Camel” isimlendirme kuralını kullanın.(Camel Casing) Metotlarınızı fiille veya fiil cümleleriyle isimlendirin. İYİ: Public Function Topla(ByVal birinciSayi As Integer, ByVal ikinciSayi As Integer) As Integer Return birinciSayi + ikinciSayi End Function KÖTÜ: Public Function Toplama (ByVal BirinciSayi As Integer, ByVal IkinciSayi As Integer) As Integer Return BirinciSayi + IkinciSayi End Function 4.16 Özellik İsimlendirme Özelliklerinizi isimlendirirken Pascal isimlendirme kuralını kullanın.(Pascal Casing) Özelliklerinizi isim ve isim tamlamalarıyla isimlendirin. Özelliklerinizin tiplerine uygun isimlendirme yapın. Özelliklerinizi isimlendirirken başlarına Get veya Set getirmekten sakının. İYİ: Public IsimSoyisim As Integer Public OdemeTarihi As Date 'OnemDerecesi Enum bir tipe sahiptir. Public OnemDerecesi As OnemDerecesi KÖTÜ: Public Getisim As String Public OdemeTarihiniAl As Date Public SetOnemDerecesi As OnemDerecesi 4.17 Olay İsimlendirme Olay(Event) işleyici isimlendirmede “on” ifadesini kullanmayın. İYİ: Event EventHandler As ciftikla KÖTÜ: Event EventHandler As ONciftikla 23
  • 28. Visual Basic.NET Kodlama Standartları Tek bir “event” isimlendiriyorsanız geçmiş zamanda fiiller kullanın. İYİ: Event EventHandler As mesajYollandi Event EventHandler As ciftTiklandi KÖTÜ: Event EventHandler As mesajYolla Event EventHandler As ciftTikla 4.18 Değişken İsimlendirme ve İlk Değer Atama Vereceğimiz isimler Türkçe olmalıdır. Tanımlama yaparken kullanacağımız isimlerde ,kısaltma yapılacaksa da anlamlarını kaybetmemelerine dikkat edilmelidir. İYİ: Class ResimBoyutlandirici Dim resimyolu As String = "c:" Dim cozunurluk As String = "1024x768" End Class KÖTÜ: Class WindowsFormsApplication1 Dim resimyolu As String = "c:" Dim cozunurluk As String = "1024x768" End Class 4.19 Kontrol İsimlendirme Kontrol İsimlendirirken, kontrollerin önüne, ilgili kontrolü belirtecek bir kısaltma kullanın. İYİ: Private Sub btnBaslat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub lblAciklama_Click(ByVal sender As _ System.Object, ByVal e As System.EventArgs) End Sub KÖTÜ: Private Sub Baslat_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub Private Sub Aciklama_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) End Sub 24
  • 29. 10.02.2011 v1.0 Kontrol isimlendirme için aşağıdaki tabloyu kullanın. Kontrol Kısaltması Checkbox chk RadioButton rdb Label lbl Textbox txt DataGrid dtg Button btn ImageButton İmb Image img PlaceHolder phd Table tbl CheckBoxList cbl RadioButtonList rbl Radio(Option)Button opt Hyperlink lnk DropDownList ddl ListBox lst DataList dtl Repeater rpt Panel pnl Validators val ComboBox cmb DropDownList ddl GridView gvw hScrollBar hsc vScrollBar vsc Picture pic Container ctr DataColumn dcol DataGridDateTimePickerColumn dgdtpc DataGridTableStyle dgts DataGridTextBoxColumn dgtbc DataReader drd DataRow drw DataSet dset DataTable dtable GroupBox gbx HashTable htbl ImageList iml Integer int Literal ltr MarshallByRefObject rmt Mainmenu mm MenuItem mi MD5 md5 MDI-Frame frame MDI-Sheet sheet NumericUpDown nud PictureBox pbx RadioButton rbtn StatusBar stb TabControl tabctrl TabPage tabpage ToolBar tbr ToolBarButton tbb 25
  • 30. Visual Basic.NET Kodlama Standartları 5. Deyimler 5.1 Basit Deyimler Basit deyimleri yazarken her bir satıra sadece bir deyim yazın. Deyimleri açık ve okunur şekilde kodlayın. İYİ: Dim sayi1 As Integer = 5 Dim sayi2 As Integer = 5 Dim toplam As Integer = sayi1 + sayi2 KÖTÜ: Dim sayi2 As Integer = 5,sayi2 As Integer = 5 Dim toplam As Integer = sayi1 + sayi2 5.2 “Return” Deyimleri Fonksiyonlardan değer döndürürken her bir koşul için ayrı ayrı değer döndürmeyin. Koşulları kontrol ettikten sonra fonksiyonunun sonunda tek bir “return” deyimi kullanın. İYİ: Public Function MusteriAdiGetir() As String 'MusteriAdi Getir Fonksiyonu Tanımlama Dim musteriAd As String = "" 'musteriAd string değişkeni tanımlama ve atama Dim musteriNo As Integer = 1 'musteriNo eğişkeni tanımlama ve atama If (musteriNo = 1) Then musteriAd = "Yücel Yıldırım" Else musteriAd = "Müşteri Bulunamadı" End If Return (musteriAd) End Function KÖTÜ: Public Function MusteriAdiGetir() As String 'MusteriAdi Getir Fonksiyonu Tanımlama Dim musteriAd As String = "" 'musteriAd string değişkeni tanımlama ve atama Dim musteriNo As Integer = 1 'musteriNo değişkeni tanımlama ve atama If (musteriNo = 1) Then Return "Yücel Yıldırım" Else Return "Müşteri Bulunamadı" End If End Function 26
  • 31. 10.02.2011 v1.0 5.3 “If, if-else, if else-if else” Deyimleri Hemen hemen her programlama dilinde olan deyimlerdir. Bir şart belirtilerek programın ona göre davranmasını sağlar. Bu yüzden bu deyimlerin standartlara göre yazılması oldukça önemlidir. Öncelikle genel olarak “if” deyimindeki yanlışlıkları ve olması gerekenleri gösterelim. Koşul deyiminiz tek satırlık ise end if kullanmayın. iYi: If ("1" = "1") Then MessageBox.Show("1 eşittir 1") KÖTÜ: If ("1"="1") Then MessageBox.Show("1 eşittir 1") End If Karmaşık koşulları “if” bloğu içine yazmayın. Bu tip koşulları blok öncesinde kontrol ederek sonucu değişkenlere yükleyerek “if” koşuluna yazın. İYİ: enYuksekNotMu = (notum > enYuksekNot) oncekiEnYuksekNotMu = (notum = enYuksekNot) gecerliNotmu = (notum < maksimumNot) If ((enYuksekNotmu And Not oncekiEnyuksekNotmu) _ And gecerlinotmu) Then … End If KÖTÜ: If (((notum > enYuksekNot) And (notum <> enYuksekNot)) And (notum < maksimumNot)) Then End If Veri tipi bool olan değişkenleri direkt olarak kullanın. “=” ya da “not” ile tekrar işleme sokmayın. İYİ: If (donenDeger) Then End If If (Not donenDeger2) Then End If KÖTÜ: If (donenDeger = true) Then End If If (donenDeger2 = false) Then End If 27
  • 32. Visual Basic.NET Kodlama Standartları Koşul yapılarında gereksiz yere koşulun tersini “if” ile kullanmayın. Bunun yerine else kullanın. İYİ: If (donenDeger) Then MessageBox.Show("True Döndü") Else MessageBox.Show("False Döndü") End If KÖTÜ: If (donenDeger) Then MessageBox.Show("True Döndü") End If If (Not donenDeger2) Then MessageBox.Show("False Döndü") End If İç içe “if” blokları yerine mümkünse “else if” yapısı kullanın. İYİ: If (ilkDeger > ikinciDeger) Then MessageBox.Show("1. değer büyük") ElseIf (ilkDeger < ikinciDeger) Then MessageBox.Show("2. değer büyük") Else MessageBox.Show("2 side eşit") End If KÖTÜ: If (ilkDeger = ikinciDeger) Then MessageBox.Show("2 side eşit") Else If (ilkDeger > ikinciDeger) Then MessageBox.Show("1. değer büyük") Else MessageBox.Show("2. değer büyük") End If End If 28
  • 33. 10.02.2011 v1.0 5.4 “Select” Deyimleri Sıralı koşul durumlarının değerlendirilmesine gerek olmayan, belirli bir değere göre belirli bir işlemin yapılması gereken durumlarda “Select” kullanın. Select deyiminde mümkün olduğunca listeleme (enum) kullanın. İYİ: public enum CompressionFormat Zip, Gzip, Rar end enum Public Sub Compress(ByVal CompressionFormat As format) Select Case format Case CompressionFormat.Zip CompressWithZip() Exit Select Case CompressionFormat.Gzip CompressWithGzip() Exit Select Case CompressionFormat.Rar CompressWithRar() Exit Select Case Else CompressWithZip() Exit Select End Select End Sub KÖTÜ: public enum CompressionFormat Zip, Gzip, Rar end enum Public Sub Compress(ByVal CompressionFormat As format) If Format = CompressionFormat.Zip Then CompressWithZip() ElseIf Format = CompressionFormat.Gzip Then CompressWithGzip() ElseIf Format = CompressionFormat.Rar Then CompressWithRar() Else CompressWithZip() End If End Sub 29
  • 34. Visual Basic.NET Kodlama Standartları Mutlaka "Case Else" ile beklenmeyen verileri kontrol edin. İYİ: Public Enum CompressionFormat .. End Enum Public Sub Compress(ByVal CompressionFormat As format) Select Case format Case CompressionFormat.Zip CompressWithZip() Exit Select Case Else CompressWithZip() Exit Select End Select End Sub KÖTÜ: Public Sub Compress(ByVal CompressionFormat As format) Select Case format Case CompressionFormat.Zip CompressWithZip() Exit Select Case CompressionFormat.Gzip CompressWithGzip() Exit Select Case CompressionFormat.Rar CompressWithRar() Exit Select End Select End Sub 5.5 “For / Foreach” Deyimleri Bu iki döngü tipinde, döngü değişkenini aksi gerekmedikçe döngü içinde tanımlayın. İYİ: Dim test() As String = {"bir", "iki", "üç"} For i As Integer = 0 To test.Length - 1 MessageBox.Show(test(i)) Next KÖTÜ: Dim i As Integer Dim test() As String = {"bir", "iki", "üç"} For i = 0 To test.Length - 1 MessageBox.Show(test(i)) Next İYİ: Dim test As String = "bir,iki,uc" For Each item As String In test.Split(",") MessageBox.Show(item) Next 30
  • 35. 10.02.2011 v1.0 KÖTÜ: Dim test As String = "bir,iki,uc" Dim item As String For Each item In test.Split(",") MessageBox.Show(item) Next 5.6 “While/do-while” Deyimleri While döngüsü ve do-while döngüsünün formu aşağıda ki gibidir; İYİ: While koşul ' ... End While Do ' ... Loop While koşul KÖTÜ: While True If Not koşul Then Exit While ' ... End If End While Do ' ... If Not koşul Then Exit Do End If Loop While True 31
  • 36. Visual Basic.NET Kodlama Standartları 5.7 İstisnai Durum Yönetimi Throw-catch-finally bloğunun yapısı aşağıdaki gibidir. Asla boş bir catch bloğu tanımlamayın. Throw-catch pahalı bir işlemdir. Bunu akış denetimi için kullanmayın. Değerlendirmeyeceğiniz istisnai durumu yakalamayın. Catch bloğu içinde try-catch kullanmaktan kaçının. İstisnai durum yakalanmasını en çok yakalanma olasılığı olandan en azına doğru sıralayın. Finally bloğunda try için ayrılan kaynağı salıverin. İYİ: Try ' Đstisnai durum oluşma ihtimali olan kod Catch ex As Exception ' Oluşan durumu rapor et. Throw Finally ' try bloğu içinde kullanılan kaynağın salıverilmesi. End Try KÖTÜ: Try ' Đstisnai durum oluşma ihtimali olan kod Catch Throw Finally ' try bloğu içinde kullanılan kaynağın salıverilmesi. End Try Oluşan istisnai durumu tekrarlamaktansa iletmeyi tercih edin. İYİ: … Catch ex As Exception ' Oluşan durumu rapor et. Throw KÖTÜ: … Catch ex As Exception ' Oluşan durumu rapor et. Throw ex 32
  • 37. 10.02.2011 v1.0 İstisnai durumlardan kaçınmak için önce kontrol etmeyi tercih edin. İYİ: If connection.State <> ConnectionState.Closed Then connection.Close(); End If KÖTÜ: Try connection.Close(); Catch ex As Exception ' Oluşan durumu rapor et. End Try Catch bloğu içinden farklı bir exception fırlattığınızda mutlaka innerException özelliğine oluşan istisnai durumu ekleyin. Bu şekilde Call Stack zincirini bozmamış olursunuz. İYİ: Try ' Đstisnai durum oluşma ihtimali olan kod Catch ex As Exception ' Oluşan durumu rapor et. Throw New Exception( "istisnai durum açıklaması", ex ) End Try KÖTÜ: Try ' Đstisnai durum oluşma ihtimali olan kod Catch ex As Exception ' Oluşan durumu rapor et. Throw New Exception( "istisnai durum açıklaması" ) End Try 33
  • 38. Visual Basic.NET Kodlama Standartları Đndeks A M Ara birim--------------------------------------------------- 3, 20 Metot -------------------------------------------------- 1, 14, 23 B O Blok açıklama ------------------------------------------------ 11 Boşluklar --------------------------------------------------- 1, 10 Olay -------------------------------------------------2, 3, 14, 23 D Ö Dokümantasyon ----------------------------------------- 1, 13 Özellik-----------------------------------------------2, 3, 14, 23 F P For ----------------------------------------------------- 2, 15, 30 Parametre -------------------------------------------- 1, 14, 22 Foreach ---------------------------------------------------- 2, 30 R G Return --------------------- 2, 9, 11, 12, 16, 18, 19, 23, 26 Girintileme ------------------------------------------------ 1, 10 S İ Sabit ----------------------------------------------------- 1, 3, 22 İsim alanı --------------------------------------------- 3, 10, 19 Salt okunur ---------------------------------------------------- 3 İstisnai durum ------------------------------------------ 31, 32 Sınıf -------------------------------------1, 3, 8, 14, 17, 20, 35 Statik --------------------------------------------------------1, 22 Switch -------------------------------------------------------2, 28 K Kısaltmalar ------------------------------------------------ 1, 17 T Tek satırlık açıklama ---------------------------------------- 12 34
  • 39. 10.02.2011 v1.0 TiKS (Türkçe içerikli Kodlama Standartları) Proje Ekibi Kadir ÇAMOĞLU Kadir ÇAMOĞLU, 1974 İstanbul doğumludur. 1995 yılından itibaren profesyonel olarak yazılım projelerinde görev alan ÇAMOĞLU, 1993 yılından sonra eğitim sektöründe de yer almıştır. Microsoft’un yazılım üzerine birçok sertifikasına sahip olan ÇAMOĞLU’nun Pusula, Alfa ve Kodlab yayınevlerinden çıkan on adet kitabı bulunmaktadır. Bilgisayar mühendisliği doktora öğrencisi olan ÇAMOĞLU, BilgeAdam Kurumsal ‘da yazılım ve veri tabanı danışmanı olarak çalışmaktadır. Volkan ATASEVER Yazılım Dünyasına BASIC ve C/C++ dili üstünde uygulamalar geliştirerek adım atan Volkan daha sonra C# ve VB.NET, Java dilleri ile uygulamalar geliştirmiştir. Haziran 2010 tarihinde ise Bilgisayar Mühendisliği kıyafetini giymiştir. Ineta topluluklarında uzun zaman yazarlık ve editörlük yaptıktan sonra DeveloperMania.Net sitesinin topluluk lideri olmuştur. INETA User Group Lead olarak çeşitli çalışmalar yapmaktadır. Yazılım Uzmanlığı ve Danışmanlığı yapmaktadır. Microsoft'un Akademik sitesi MSAkademik.Net de VB.NET editörlüğü yapmıştır. Konuşmacı olarak çeşitli üniversite ve eğitim merkezinde seminer vermektedir. Microsoft'un Türkiye’de sadece 18 kişiye verdiği Sharepoint Server sertifikasını almıştır. Mobil uygulamalar, ASP.NET, MOSS 2007, SQL Server ve Windows geliştirmeleri içeren projelerde görev almaktadır. Bilgisayar ve teknoloji dergilerinde yazarlık yapmaktadır. Şu anda PCWorld dergisinde yazmaktadır. Ulusal Akademik Konferanslarda akademik bildiri ve makale yazarak bilime katkıda bulunmaktadır. Bilgisayar Mühendisi olarak çalışmalarını sürdürmektedir. Merve CEYLAN 2001 yılında lisede programlama eğitimi almaya başlayan Merve Ceylan, 2007 yılında Marmara üniversitesi Teknik eğitim fakültesi - bilgisayar teknolojileri ve programlama bölümünü bitirmiştir. Halen eğitimine devam etmekte olup işletme bölümü öğrencisidir. Üniversiteye devam ederken TÜBİTAK’ta 2 yıl genel muhasebe projesinde yazılım uzmanı olarak çalışmıştır. Şuan 3 yıldır devam etmekte olduğu Maltepe Üniversitesi öğrenci işleri otomasyonu projesinde proje sorumlusu olarak görev almaktadır. Bu yıllar içinde farklı şirketlerin el terminalli restoran otomasyonu ve pazar araştırması projelerinde de çalışmıştır. Burhan ÇETİNKAYA 2005 senesinde yazılım dünyasına lisede Veri tabanı Programcılığı Bölümüne başlayarak giriş yapmıştır. 2007 senesinde Türkiye çapında gerçekleşen bir yazılım geliştirme yarışmasında Türkiye ikinciliğiyle gümüş madalya kazandı. Birçok orta çapta Windows - Based Client ve Enterprise uygulamalarda proje yöneticisi ve yazılım uzmanı olarak görev aldı. Şuan 1. Sınıf öğrencisi olarak Yeditepe Üniversitesi – Bilgisayar ve Öğretim Teknolojileri Öğretmenliği eğitimime devam etmektedir. 35
  • 40. Visual Basic.NET Kodlama Standartları Bahtiyar DİLEK 1984 Amasya doğumlu olan Bahtiyar DİLEK, 16 yaşından beri programlamayla uğraşmaktadır. 2008 yılında Bilimer Bilişim Akademisinden aldığı eğitimle MCPD olmuştur. Sharepoint Developer sertifikası olan Bahtiyar, halen Bilgisayar Mühendisliği öğrencilerine danışmanlık yapmaktadır. İrfan MEVSİM 1982 Tekirdağ doğumlu olan İrfan Mevsim, Marmara Üniversitesi Bilgisayar ve Kontrol Öğretmenliği 2005 mezunu. 1998 yılından bu yana gelen amatör programlamanın üzerine 2007 yılında Türkiye’nin en büyük beyaz eşya üreticilerinden birinde profesyonel anlamda programlayama başladı. Burada geçen 3 yılın ardından şu anda işletme içinde ihtiyaç duyulan tüm otomasyon ile entegre, mobil ve SAP bağlantılı sistemler üzerine uygulama geliştirebilir durumda. Can YAPAN 2006 yılında Bulgaristan Varna Teknik Üniversitesinde, Bilgisayar Sistemleri ve Teknolojileri bölümünde eğitimine başlamıştır. Eğitimi sırasında C# dili ve .Net teknolojileri ile ilgilenmiş ve birkaç projede yer almıştır. Halen freelancer yazılım geliştirip eğitimine devam ediyor. Hakan YAVUZ 2006 senesinde Asp ile Web programcılığına başladım. Ardından Visual Basic 6.0 ile devam edip daha sonrasında tekrar web programlama ile devam etme kararı alıp php ve client tabanlı dilleri öğrenmeye başladım (javascript,ajax) daha sonra .net in gelişmesi ve yaygınlaşması ile beraber c#.net ve vb.net ile devam etmekteyim. Fakat ağırlığım web programlama üstünde. Yücel YILDIRIM Yücel YILDIRIM, 1981 Sivas doğumludur.2005 yılı Marmara Üni. Bilgisayar Mühendisliği mezunu olup, beş yılı aşkındır yazılım dünyasında aktif olarak rol almaktadır. Şu an bir bankanın bilgi işlem bölümünde çalışmaktadır. 36