Merhaba arkadaşlar. Görgeliştir'in bir yazılım okulu olduğundan bahsetmiştim. Madem ki okul misyonunu yüklendik, yayınladığımız makalelerin olabildiğince anlaşılabilir, başlangıç seviyesindeki kullanıcılara hitap edebilmesine elimizden geldiğince dikkat ediyoruz. Kimi zaman çok basit kısımları detaylıca anlatıyoruz, buda orta ve uzman seviyeli bazı arkadaşların canını sıktığı gibi, kafalarınında karışmasına neden olabiliyor :)(Bu konuyu aklıma gelmişken radan çıkartmak istedim). Zaman ilerledikçe yazılarında zorluk seviyesi artacaktır. Çünkü bu yazımda programcılık açısından pek fazla önemli gözükmesede ilerleyen zamanda içinden çıkılmaz bir durum alabilen unformed-type(Biçimlendirilmemiş yazım) olayından ve kodumuzu niçin unformed-type yazmamamız gerektiğinden bahsedeceğim.

Görgeliştir'de Visual C++ , Visual C# ve Visual Basic programlama dillerine ait yazılar yayınlayacağız. Fakat bu yazı dizilerine başlamadan önce programcılıkla ilgili birkaç detayı yazıya dökmek istedim.Bunlardan ilkide söylemiş olduğum gibi "Biçimlendirilmemiş yazım". Bildiğiniz gibi kullandığımız programlar yazıldıkları dile ait yazı-görsel editörler tarafından yazılıyorlar. Yada bir metin editöründe yazılıp, çeşitli compiler(derleyici) programlar ile derleniyorlar. İşte yazım kurallarıda bu noktada devreye giriyor.Esasında sizi bağlayıcı format bakımından hemen hiç bir programlama editöründe kural yoktur. Burada bahsettiğim konu kodlarınızı yazdığınız editördeki görüntü biçimidir. Yanlış anlaşılmaya sebep olmak istemiyorum (; . Bu sebepten dolayı hemen bir örnek vereyim ve onun üzerinden açıklamaya devam edeyim. Aşağıda verilen örnekte hiç bir yazım kuralına uyulmamış ("unformed-type"ın babası şeklinde :)) bir "Şanslı 7" programının Visual Basic kodunu görüyorsunuz.

VB.NET:
Private Sub Command1_Click()
Label4.Caption=""
Image1.Visible = False 'image nesnesini Gizle
Label1.Caption=Int(Rnd*10)
Label2.Caption=Int(Rnd * 10)
Label3.Caption=Int(Rnd * 10)
If (Label1.Caption=7)Or (Label2.Caption=7)Or (Label3.Caption=7)Then
Image1.Visible =True
Beep
Label4.Caption = "KAZANDINIZ !! "
End If
End Sub

Program kesinlikle bu haliyle çalışmaktadır ve derleyici açısından hiç bir problemde yoktur fakat başka bir kullanıcı yada programı yazan kişi aradan belli bir süre geçtikten sonra programda değişiklik yapma amaçlı, kodları değiştirmeye kalktığında belli başlı problemler ortaya çıkacaktır. Bu problemler şöyle sıralanabilir: Bu blok nerede başlıyor, nerede bitiyor. Label1 nesnesi ne iş yapıyor Label3ün görüntüsü neredeydi gibi işte bu gibi problemlerle karşılaşmamak için ilk yapılması gereken belirli formlara uyarak "Well-Formed" program yazmaktır."Biçimlendirilmiş yazım" özellikle takım halinde program geliştirilirken dikkat edilen bir husus. 2003 Yılında Aybey Yazılımda staj yaparken bana öğrettikleri ilk şey "Biçimlendirilmiş yazım" kurallarıydı. Ne kadar iyi programcı olursanız olun büyük çaplı projeleri tek başınıza bitirmenize imkan yoktur. Bir proje takımıyla çalışırkende birisi sizin programınıza baktığında ne yazmış olduğunuzu zaman kaybetmeden anlamalı, hatta size kodunuzla ilgili hiç birşey sormamalıdır. Yukarıdaki kodları birde formatlanmış biçimde yazarsak şöyle olucaktır ;

VB.NET:
Private Sub cmdOyna_Click()
    lblSonuc.Caption = ""
    imgKazandiniz.Visible = False
    lblSayi1.Caption = Int(Rnd * 10)
    lblSayi2.Caption = Int(Rnd * 10)
    lblSayi3.Caption = Int(Rnd * 10)
    If (lblSayi1.Caption = 7) Or (lblSayi2.Caption = 7)_
    Or (lblSayi3.Caption = 7) Then
        imgKazandiniz.Visible = True
        Beep
        lblSonuc.Caption = "KAZANDINIZ !! "
    End If
End Sub

Yukarıdaki kodda görüldüğü gibi nesnelerin hepsi tanımlayıcı bir isme kavuşmuş. Program bloklar haline bölünmüş böylece If bloğu nerede başlıyor nerede bitiyor, program bloğu neredeydi gibi sorunların önüne geçilmiş. On satırlık bir program kodunda bile görüntü farkının ne kadar büyük olduğunu görebiliyorsunuz birde bunun, iç içe dönügüler, mantıksal işlem blokları şeklinde olduğunu düşünün. İnanın ki belirli bir zamandan sonra içerisinden çıkılamıyacak bir hal alıyor. Tecrübelerimle sabittir :).

Yazım kuralları sadece nesneler ve komutlar için geçerli değildir. Değişkenleriniz içinde geçerlidir. Hatta değişkenlerde çok daha önemli olduğu söylenebilir şöyle ki; "Well-formed" bir program yazımıyla tanımlanmış bir değişkenin ilk iki harfi size o değişken hakkında yapısal bilgiler verir. Bu harflerden ilki "Scope" diye tanımlanır ve değişkenin yapısını belirtir. İkinici harf ise "data type" olarak adlandırılır ve size değişkenin tipi hakkında bilgi sağlar. Hemen bir örnek verelim: gtProgramAdi gibi bir değişkenim var diyelim. buradaki 'g' harfi bana bunun bir "Global" değişken olduğunu belirtirken 't' ise bunun bir "String" olduğunu söylüyor. Görüldüğü gibi değişkene bakar bakmaz onun ne amaçla ve ne yapıyla kullanıldığını anlıyabiliyorum. Değişken isimini Programad diye verseydim bunun ilk anda global bir değişken ve string yapıda olduğunu anlamam imkansız olucaktı.

Yazımın sonunda tekrar üzerine dikkat çekmek istediğim konu, ister profesyonel olun ister bu işe yeni başlamış olun "well-formed" kodlar yazamıyorsanız ileride hem iş çevresinde hemde kendi açınızdan oldukça baş ağrısı çekeceğiniz bir gerçektir. Bu arada birbirine çok yakın olsalarda her programlama dili için bir "Well-formed" yazım şablonu bulunmaktadır. İyi çalışmalar