- Optimizasyon -
  - Ana Sayfa
  - Rastgele İpucu
  - Genel Optimizasyon
  - String Optimizasyonu

- Makale -
  - XP Stili Görünümü
  - Package&Deployment     Wizard Sorunları
  - InnoSetup ile Kurulum     Paketi Hazırlama


- Ayın İpucu -
Kontrollere veri gönderirken, onları gizleyin. Örneğin, bir listbox'ta 1000 tane string göstermek istiyorsunuz. Önce, 'Visible' özelliğini 'false' yapın, stringleri ekleyin, ve tekrar 'true' yaparak görünür hale getirin. Böylece listbox'ın her eklemede kendini yenilemesine gerek kalmayacak ve daha hızlı işlem yapacaktır. İşlem bittikten sonra kendisini bir kere yenilemesi yeterli olacaktır.
Visual Basic Optimizasyonu

Ana Sayfa > Genel Optimizasyon > Anlaşılır Kod Yazmak

Anlaşılır Kod Yazmak

Karmaşık kod yazmak engellemesi kolay olmasına rağmen çok sık karşılaşılan bir kodlama hatasıdır. Çok fazla zamanınızı almaz ancak, sonrası için çok fazla zaman kaybından kurtarabilir.

Düzenli kod yazmaya başlayın!

Bu süreç, ilk satır kodu yazmanızla beraber başlar. Düşünün ki, bir okuyucu, yazdığınız kodları bir sene sonra okuyacak. Sizce, girintisiz kodlar, anlamsız değişken adları, hiç bir açıklamasız oradan oraya atlayan satırlar içerisinden çıkabilecek mi? Daha da kötüsü bu kişi siz olabilirsiniz.

İsimlendirme yöntemleri

Açıklayıcı modül, prosedür,değişken, sabit ve kontrol isimleri kullanın. Uzun isimler daha açıklayıcı olabilir. Ayrıca sıkça kullanılan isimleri de kullanabilirsiniz (örneğin döngülerde i, j gibi).

Açıklamalar

Her prosedür ve modüle açıklama yazın. Prosedürü isimlendirdikten hemen sonra birkaç satır yorum yazmak iyi bir yöntem olabilir. Örneğin:

Function FileAge(ByVal Filename As String) As Long
' Dosyanın yaratılma tarihini verir.

Kaçınılacaklar

GoTo ifadesini kullanmayın. If ve Do..Loop ifadeleri ile de aynı işlemi yapabilirsiniz.. Tek istisna ise On Error GoTo cümlesidir.

ByVal (veya ByRef) parametreleri kullanın

Varsayılan olarak, bir prosedüre gönderilen tüm parametreler, referans olarak gönderilir. Ancak, bu pek tercih edilen bir durum değildir. Bu durumdan değer göndererek kurtulabilirsiniz.

Eğer ByRef parametresini kullanırsanız, gönderilen değişkenin değeri, alt prosedür tarafından değiştirilip geri döndürülür. Bazen bu istediğiniz durum olabilir ancak genellikle bçyle değildir.
Örneğin şu kodu ele alalım:

Function IkiyleCarp(x As Integer) As Integer
x = x * 2
IkiyleCarp = x
End Function
.
.
.
Numaram = 7
Debug.Print MultiplyByTwo(Numaram)


IkıyleCarp fonksiyonu çağırıldıktan sonra Numaram değişkeninin değeri nedir? 14'tür ancak birçok kişi 7 diyebilir. Bunun sebebi, fonksiyon çağırıldığında geriye değer döndürmeden önce değişkeni ikiyle çarpar yani değerini değiştirir. Aslında referans ile göndermek, Numaram ile x 'in aynı olduğunu söylemek demektir.

Çözüm basittir: Parametreyi ByVal ile göndemek!

Function IkiyleCarp(ByVal x As Integer) As Integer

Bu şekilde, IkıyleCarp fonksiyonu x'in değerini değiştirse de, Numaram değerini asla değiştiremez.

Eğer referans yöntemi ile kullanacaksanız da şu şekilde kullanın:

Function IkiyleCarp(ByRef x As Integer) As Integer

Peki neden referans ile gönderelim? Bazen bu yöntem daha hızlı olabilir. Çünkü bu yöntemde, değişkenin değeri alt-prosedüre kopyalanmaz. Ancak bu hızın maliyeti yukarıda açıkladığımız gibidir. Bu yüzden, amacınıza uygun olanı seçmelisiniz.

Private ifadesini kullanın

Mümkün olduğu yerlerde, Private ifadesini kullanın. Bu değişkenlerinizi ve prosedürlerinizi sadece o modül içerisinde erişilebilir yapacaktır. Bu da daha iyi modülleştirme demektir.

Private Degisken As Integer
Private Sub Prosedur()


Tabi bazı durumlarda Public ifadesini de kullanmanız gerekebilir. Bu yüzden neyin Private neyin Public olması gerektiğini iyi analiz etmelisiniz.
 

Faydalı Linkler
 > vbnet.mvps.org
 > msdn.microsoft.com
 > vbasicmaster.com
 > www.freevbcode.com
 > planet-source-code.com
 > www.vbturk.net
 > www.mutasyon.net
 
Visual Basic Optimizasyonu Sitesi en iyi 800x600 çözünürlükte görüntülenebilmekte
ve tüm browser'larda sorunsuz çalışmaktadır.