TiKS_VB v1.0.
Transkript
TiKS_VB v1.0.
Visual Basic.NET Kodlama Standartları Versiyon Geçmişi Tarih Ver Açıklama Yazar(lar) 10.02.2011 1.0 Belge oluşturuldu - ii Gözden Geçiren(ler) - 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 Merve CEYLAN Kadir ÇAMOĞLU Burhan ÇETİNKAYA Bahtiyar DİLEK İrfan MEVSİM Can YAPAN Hakan YAVUZ Yücel YILDIRIM Gözden Geçirenler Bahri Altan Atagün Sarıbayraktar Soykan Özçelik Mesut Güneş Kemal İkizoğlu Erman Demirer Haluk Aksoy İ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. 2 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 10.02.2011 v1.0 Terimler Terim Namespace Class Interface Attribute Enumeration Property Event Constant Readonly Pascal Casing Türkçe İsim alanı Sınıf Ara birim Öz nitelik Numaralandırma Özellik Olay Sabit Salt okunur - Camel Casing - Açıklama İ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) İ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ı Kaynak dosyası Sınıf (class) Yapı (struct) Arabirim (interface) Metot Özellik (Property) Alan (public field) Alan (diğer Field) Numaralandırma (Enum) Delegate (public) Delegate (diğer) Değişken Parametre Olay (event) 14 Pascal Casing Pascal Casing Pascal Casing Pascal Casing Pascal Casing Pascal Casing Pascal Casing Pascal Casing Camel Casing Pascal Casing Pascal Casing Camel Casing Camel Casing Camel Casing Camel_Casing HastaTakibi.vbproj HTLogo.jpg Kisi KisiListeBilgisi IKisiselBilgiler KisiEkle Adi, Soyadi TCKimlikNo dogumTarihi KayitDurumu KayitSilindi kayitIsleniyor vergiNumarasi ad, soyad, yas btnKaydet_Click 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 alfanumerik 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 Dim Dim Dim Dim Dim u32Identifier As Integer bBusy As Boolean chInitial As Char dbPi As Double rgStudents As String() = New String(4) {} 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 Checkbox RadioButton Label Textbox DataGrid Button ImageButton Image PlaceHolder Table CheckBoxList RadioButtonList Radio(Option)Button Hyperlink DropDownList ListBox DataList Repeater Panel Validators ComboBox DropDownList GridView hScrollBar vScrollBar Picture Container DataColumn DataGridDateTimePickerColumn DataGridTableStyle DataGridTextBoxColumn DataReader DataRow DataSet DataTable GroupBox HashTable ImageList Integer Literal MarshallByRefObject Mainmenu MenuItem MD5 MDI-Frame MDI-Sheet NumericUpDown PictureBox RadioButton StatusBar TabControl TabPage ToolBar ToolBarButton Kısaltması chk rdb lbl txt dtg btn İmb img phd tbl cbl rbl opt lnk ddl lst dtl rpt pnl val cmb ddl gvw hsc vsc pic ctr dcol dgdtpc dgts dgtbc drd drw dset dtable gbx htbl iml int ltr rmt mm mi md5 frame sheet nud pbx rbtn stb tabctrl tabpage tbr 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 Foreach ---------------------------------------------------- 2, 30 Parametre -------------------------------------------- 1, 14, 22 R G Return --------------------- 2, 9, 11, 12, 16, 18, 19, 23, 26 Girintileme ------------------------------------------------ 1, 10 S İ K Sabit ----------------------------------------------------- 1, 3, 22 Salt okunur ---------------------------------------------------- 3 Sınıf -------------------------------------1, 3, 8, 14, 17, 20, 35 Statik --------------------------------------------------------1, 22 Switch -------------------------------------------------------2, 28 Kısaltmalar ------------------------------------------------ 1, 17 T İsim alanı --------------------------------------------- 3, 10, 19 İstisnai durum ------------------------------------------ 31, 32 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