Skip to main content

AccessTr.neT


Kod Yazmada Estetik Sanatı

DUAYEN
DUAYEN
5
5843

Kod Yazmada Estetik Sanatı

#1
Kodlarınızın güzel görünmesini ister misiniz?

Aslında kod yazmak bir sanat olduğu kadar onun görünümünü güzelleştirerek anlaşılır kılmak ta ayrı bir sanattır.
Kod yazarken ilk yazmış olduğunuz nesne ile ilgili kodlar en sona yazılır, ister istemez bir kural oluşur kod yazmada ilk giren son çıkar kuralı.

Bir de nesne veya kontrollerle ilgili kod yazarken en genel olanı ilk olarak yazmak daha doğru olacaktır. Mesela Label’e textboxlardaki bir şeyi hesaplattıracaksınız bunun için label nesnesinin olay yordamının içine yazmak icabeder.

Yani genelden özele doğru dizilim yapmaktır. Burada asıl amacımız hem estetik görünüm vermek, hem de kodların anlaşılır olabilmesini sağlamaktır. Bunu yapabilmek için ise :
1. Kontroller veya nesnelerin kodlarla ilişkisini sağlamak
(textbox, label, listbox, combobox, textbox, if, for vs…)

A) Hiyerarşik metot kullanarak estetik vermek
Tek ve önemli kural vardır bunda hiyerarşik dizilim metodunu kullanmalıyız.

Anlaşılabilmesi ve güzel görünebilmesi için bu bir altın kuraldır
Örneğin kodlarınızda,
If then Else komutlarını kullanacaksınız.
Kod:
If Range("A1") = 0 Then
MsgBox "A hücresi sıfırdır"
End If

Tarzı kod yazma sanatını öneriyorum. If ve End If değimleri aynı hizadadır. Arada olan MsgBox deyimi ise bu kodun çerisinde işlem yapmakta olduğu için içeri doğru girintili yazılmıştır.

Kodlardan hiç anlamayan biri bile dışarıdan bakan biri If ve End If değimlerinin aynı hizada olduğunu görerek bu ikisi arasında bir ilişki başlangıç ve bitiş ilişkisi gibi bir bağlantı olduğunu sezecektir.
For Each döngüsü kullanacaksanız
Kod:
For Each Cell In Cells.SpecialCells(xlCellTypeComments)
With Cell.Comment.Shape.TextFrame.Characters.Font
.Size = 10
.Bold = True
End With
Next

Bu deyimin kullanımında dikkat edilmesi gereken estetik yazım kuralı ise For Each deyimi bitişi olan Next ifadesi aynı hizada olmalı, içerisinde kullanan diğer nesneler veya deyimler ise bunun içinde kalacak şekilde kendi aralarında hizalanmalıdırlar. With ve End With deyimi de aynı hizadadır.
For Next döngüsü kullanacaksanız
Kod:
For
……
Next

Yukarıdaki şablonu kullanabilirsiniz.

Nesnelere ait kodlar kullanacaksanız. (eğer nesne genellik içeriyorsa, içerisine girilecek kodlar ve kontroller içe doğru yazılmalıdır, bir nevi hiyerarşi)
B) Karakterleri kullanarak estetik vermek
ÖncelikleUserform veya modüldeki makroların başına ‘ tek tırnak işareti koyarak istediğiniz (nokta, harf veya karakterlerle) şekilleri yapabilirsiniz. Yazdığınız programın size özel olmasını istiyorsanız aşağıdaki resimdeki gibi bir çalışma yapabilirsiniz. Bunun yapabilmek içinde ‘ işaretini en başa yazmalısınız. Nasıl yazılıyor diye soracak olursanız, VBA’da iken Shift’e basılı tutun ve 2 ye basın.
Hocam niye tek tırnak?
Tek tırnak koyduğunuz zaman makro bunu göremez ve çalıştıramaz. Biz zaten makro veya kod yazmadığımıza göre rahatlıkla bu özelliğin tadını çıkartarak kullanabiliriz.

Ben kendim için aşağıda bir örnek yaptım.
2-
2. Karakterleri kullanarak neler yapabilirim
a) Girinti yapmak
b) Boşluk koymak
c) Yorum ve açıklama eklemek
d) Tavsiyeler
a) Girinti yapmak
Girintiler, boşluk karakteri kullanılarak yapılmalıdır. Tab karakteri kullanımı dosyaların boyutlarını küçültecek olmasına rağmen farklı metin editörleri ile açılacak olan dosyaların okunurluğunun azalma ihtimali yüksektir. Minimum 4 karakter girdi olmalıdır. Bu 4 karakter 4 tane Space tuşunu basılarak elde edilir. O da zaten 1 Tab’a eşittir (4 Space =1 Tab). Daha az olacak olan girdilerin insan gözü ile fark edilmesi zordur.
Aşağıdaki örnekte kaç Tab kullanılarak girinti yapıldığının bir örneği bulunmaktadır.
Kod:
i=Range("A1").End(xlDown) + 1
ıf i> 6500 Then i = 2
1 Tab Cells(i,1) = Textbox1
1 Tab + 1 Tab Cells(i,2) = Textbox2
1 Tab + 1 Tab + 1 Tab Cells(i, 3) = Textbox3
Cells(i, 4) = Textbox4
Cells(i, 5) = Textbox5

Kod:
i = Range ("A1").end (xDown). Row + 1
if i > 6500 Then i = 2
Cells(i, 1) = Textbox1
Cells(i, 2) = Textbox2
Cells(i, 3) = Textbox3
Cells(i, 4) = Textbox4
Cells(i, 5) = Textbox5

Bir satırda da insan gözünün algılayabildiği kadar yani en fazla 80 karakter olmalıdır.
b) Boşluk koymak
Kod blokları arasında mümkün olduğunca boş alanlar konarak okunurluk arttırılmalıdır. Özellikle ilişkisel olarak bir birinden bağımsız bloklar fazladan bir boş satır ile birbirlerinden ayrılırlar ise kod okunurluğu önemli oranda artacaktır.
Fonksiyon açıklamaları ile fonksiyon arasında bir satır boşluk olursa okunabilirliği arttıracaktır. Yani yazılan bir fonksiyonun kapanış bloğunun hemen alt satırından başka bir fonksiyonun açıklamasına başlanmamalı en az 1 satır boşluk bırakılmalıdır.
Yani siz bir çok işlevi yapan kodları aynı makronun içerisinde çalıştırmak istiyorsunuz diyelim. Bunların yapmış olduğu görevleri daha iyi anlamak ve kavrayabilmek için kod bloğunun arasına bir Enter lik boşluk verin ki kodlara bakan bunların işlevlerini ve görevlerinin ayrı olduklarını fark edebilsin.
Bununla ilgili kodların kullanımı ile örnek aşağıdaki
Kod:
Private Sub CommandButton1_Click()
Dim topla
For i = 1 to 5
topla = topla + val (controls ("TextBox" & i))
Next
'*******************************************
TextBox6.Value = Format (tola, "###,###")
TextBox7.Vlue = TextBox6 * 1.18
'******************************************
MsgBox "Hesaplama işlemi Tamalandı"
End Sub
[code]
Yukarıda ‘ işareti ve devamında konulan nokta işaretleri yerine boşluk koyalım.

[code]
Private Sub CommandButton1_Click()
Dim topla
For i = 1 To 5
topla = topla + Val (Controls ("TextBox" & i))
Next
TextBox6.Value = Format (topla, "###,###")
TextBox7.Vlue = TextBox6 * 1.18
MsgBox "Hesaplama işlemi Tamalandı"
End Sub

Sizce hangisi daha güzelse onu kullanın. Bir Enter lik boşluk bırakmak bile kodların işlevinin kavrabilmesi açısından çok büyük önem taşımaktadır.
c) Yorum ve açıklama eklemek
Kod mümkün olduğunca açıklamalar ile zenginleştirilmelidir. Fakat bu zenginleştirme kodu okunamayacak hale getirmemelidir. En iyi dokümantasyon temiz yazılmış koddur.
Yorum ve açıklama eklemek için başa ‘ karakterini yazmalıyız. Ve göze hoş görünebilmesi içinde devamında şu karakterleri de kullanabiliriz. * # & / \ - _ ! + < > @ € vb…
Aşağıda bununla ilgili bir örnek eklenmiştir.
Kod:
Public Function Toplama (a As Integer, b As Integer) As Integer
'**************************************************
' Amaç : Gönderilen a ve b Değerlerinin toplamının döndürülmesi
' Giriş : Toplanacak a ve b değeri
' a : Toplanacak 1 . Integer değişken
' b : Toplanacak 2 . Integer değişken
' Çıkış :
' Toplama:
' Toplma işleminin sonucu
'****************************************************
Dim c as Integer ' toplama işlemi için kullanılacak c değişkeni Integer olarak atanıyor
'*****************************************************
On Error Resume Next ' Hata ile karşılasırsan es geç
' toplama işlemi yapılıyor
c= a + b
' Sonuç fonksiyon'a atanıyor
Toplama = c
End Function

d) Tavsiyeler
1. Bir satırda 80 den fazla karakterlik kod kullanmayın.
2. Görevleri ayrı olan kod bloklarının arasına süslemeler yapın veya bir Enter’lik boşluk bırakın.
3. Kodları yazarken hiyerarşik olacak şekilde merdiven(basamak) tekniğini kullanın.
4. Kodlarınızın en üstünde kodlar eğer size aitse Mahlasınızı veya Reklamınızı yapan süslerinizi kullanın.
5. Merdiven tekniğini kullanmak için girintiler yapın, yani space (boşluk) tuşunu ve Tab tuşlarını kullanın.
6. Satır satır açıklamaları kullanın. Açıklamaya başlamadan önce satırın başına ‘ işaretini koyun.


Umarm Faydalı olur...
DUAYEN
Bizim için zor diye bir şey yoktur, imkansızsa zaman alır...
Cevapla
#2
Anlatım için teşekkürler, hocam çok güzel olmuş.
™Hiç Birimiz, Hepimiz Kadar Akıllı Olamayız...®

Cevapla
#3
Teşekkürler Sn DUAYEN..
Cevapla
#4
Hocam faydalı bilgiler için teşekkürler.
Saygılar...
Bilgi paylaşıldıkça çoğalır....
Her engel, yaşam koşullarınızı daha iyileştirecek bir fırsattır.


Access için her zaman lazım olacak konu başlıkları listesi


Cevapla
#5
Kopyaladımi geniş bir zamanda okuyacağım.
Tam benlik bir paylaşım olmuş, acaip kod yazarım, kod yazmak benim işim. Img-grin
"Oyun bitince  şah ve piyon aynı kutuya atılır "
Cevapla
#6
teşekkürler
@benbendedeilem
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da
Task