|
- 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.
|
|