Giris:
Standardizasyon Onemlidir.
Bu standardin herkesi belli bir sekilde sinir etmesi beklenen
bir etkidir. Son halini bu sayfada gormus oldugunuz dokuman
bir cok proje, bir cok sirket ve konu uzerinde tartisarak
gecirilen cok sayida saat sonucunda bu halini almistir. Herhangi
bir kisi veya kurumun sahsi tarzi degildir ve lokal olarak
yapilabilecek degisikliklere aciktir.
Iyi Yonler:
Bir proje ortak bir standarda uydugunda bazi guzel seyler
olur:
* Programcilar koda bakip neler olup bittigini kolaylikla
anlayabilir.
* Yeni baslayanlarin konuya hakimiyet kazanmasi hizlanir ve
kolaylasir.
* PHP'ye yeni baslayan insanlar kendi tarzlarini gelistirmek
ve onu olumune savunmak zorunlulugundan kurtulur.
* PHP'ye yeni baslayan kisilerin ayni hatalari defalarca tekrarlamasi
engellenmis olur.
* Tutarli ortamlarda hata yapma ihtimali azalir.
* Programcilarin ortak bir dusmani olur. :-)
Kotu Yonler:
Bir de kotu yonlere goz atalim:
* Standard genellikle aptalcadir cunku PHP 'den anlamayan
birisi tarafindan yapilmistir.
* Standard genellikle aptalcadir cunku benim yaptigimin aksini
soylemektedir.
* Standardlar yaraticiligi azaltir.
* Insanlar tutarli olduklari surece standardlar gereksizdir.
* Standardlard cok fazla yapilanmaya sebep olur.
* Insanlar zaten standardlari kaale almazlar.
Tartisma:
Bir cok proje yoneticisinin tecrubeleri, standarlarin projelerin
daha sorunsuz ilerlemesini sagladigi sonucuna ulasmaktadir.
Peki basari icin standardlar gerekli midir? Tabii ki hayir.
Fakat standardlarin olmasi bize projelerimizde yardimci olacaktir,
ve bulabilecegimiz butun yardima ihtiyacimiz vardir. Durust
olun, herhangi bir standarda karsi olan fikirlerinizin cogu
sizin egonuzdan kaynaklanmaktadir. Standardlarda karsilastigimiz
kararlarin pek azi teknik acidan yetersiz denebilecek seviyededir.
Bu farkli kararlar olsa olsa sahsi bir tercihin sonucudur.
Bu yuzden esnek olun ve butun projelerin temelinde takim oyunu
oldugunu ve projelerin butun takimin cabasiyla basariya ulasacagini
unutmayin.
Standardlarin Uygulamasi:
Oncelikle, bir standard konusundaki supheler ve sorunlar grup
icerisinde tartisilip bir sonuca baglanmalidir. Kimbilir belki
de elinizdeki standard icinde bulundugunuz duruma uygun olmayabilir.
Bu standard bazi onemli unsurlari goz ardi ediyor olabilir.
Hatta belki de yonetimde buyuk nufuzu olan kisiler standarddaki
bazi unsurlara karsi olabilir.
Ilk tartisma asamasindan sonra varilan sonucun kabul edilebilir
oldugunu, diger bircok programci tarafindan kabul edilebilir
bulundugunu ve bu yuzden takip edip uygulamaya deger oldugunu
ve gerekirse bu konuda sahsi tavizler verilebilecegini benimsemek
gerekir.
Eger proje grubu bu standarda gonullu olarak katilmiyorsa
yonetim bu standardi kodun kalite kontrolunden gecmesi icin
uyulmasi gereken zorunlu sartlar olarak da niteleyebilir.
Bir Fikri Kabul Etmek:
1. Mumkun degil.
2. Mumkun olabilir, ama zayif ve hic ilginc degil.
3. Dogru ve ben dogru oldugunu zaten soylemistim.
4. Oyle oldugunu ilk ben dusundum.
5. Kim daha farkli oldugunu dusunebilir ki?
Yeni bir fikri kabul etme yolunda eger negatif bir onyargi
ile ilerliyorsaniz, lutfen acik fikirli ve yeniliklere acik
olmaya calisin. Boyle yaptiginiz halde bile hala sonucla ayni
fikirde olmayacaginiz durumlar soz konusu olabilir, fakat
yine de farkli bir yolu/yontemi kabul edebilmek icin takip
etmeniz gereken bir yol vardir. O yolda ilerlemekten kendinizi
mahrum etmeyin.
ISIMLER:
Konuya Uyan Isimler Secin
Isimler programciligin kalbidir. Eskiden bir insanin gercek
adini bilmenin o kisi uzerinde sihirli guclere sahip olmayi
sagladigina inanilirdi. Eger birsey icin dogru ismin ne olmasi
gerektigini biliyorsaniz, kendinize ve sizden sonra gelecek
programcilara kod uzerinde kullanibilecekleri buyuk bir guc
veriyorsunuz demektir.
Bir isim, icinde bulundugu cevre hakkinda uzun ve derin bir
dusunme surecinin urunudur. Sadece bir sistemin butun olarak
calisma prensibini tam olarak anlayan bir programci sisteme
tam anlamiyla uyan isimler bulabilir. Eger isim uygunsa geri
kalan hersey dogal bir sekilde uyacaktir. Bu sayede iliskiler
acik, anlamlar ulasilabilir, ve insancil beklentilerden yola
cikarak ulasilan sonuclar anlamli olacaktir.
Eger kodunuza baktiginizda isimleri 'sey', 'birsey', 'bunu_yap','suraya_git',
'onu_calistir' gibi isimlerle degistirdiginizde birsey farketmeyecek
gibi geliyorsa, o kodun dizaynina bir daha goz atsaniz iyi
olur.
Sinif Isimleri
* Sinifin ismini, sinifin ne olduguna bakarak verin. Eger
ismi bulmak konusunda cok ugrasiyorsaniz bu sisteminizin dizaynina
yeteri kadar zaman harcamadiginizin bir belirtisidir.
* Uc kelimeden fazla birlesik isimler sistem dizayninizin
bazi seyleri bir birine karistiriyor olabileceginin bir habercisidir.
Dizayninizi tekrar gozden gecirin. Bir CRC karti oturumuyla
objelerinizin gereginden fazla sorumluluklarla yuklenmis olup
olmadigini kontrol edin.
* Bir siniftan kalitim/miras yoluyla (inheritance) baska bir
sinif olusturdugunuzda ana sinifin ismini alt sinifin ismi
icinde kullanmaktan kacinin. Eger bir sinifiniz varsa o sinif
kendi ayaklari uzerinde durabilmelidir. Hangi baska siniftan
olusturulmus oldugu onemli olmamalidir.
* Eger siniflariniz bir ortak baslik altinda toplanabilir
nitelikte ise, yani benzer bir amaca hizmet ediyorlarsa bu
siniflari belli bir baslik altinda toplamak da mumkundur.
Ornegin birkac 'motor' sinifiniz oldugunu dusunursek, SorguMotoru,
AramaMotoru gibi sinif isimleri kullanilabilir.
Metod ve Fonksiyon Isimleri:
* Genellikle butun metod ve fonksiyonlar bir aktivite gerceklestirirler,
bu yuzden isimleri de gerceklestirdikleri aktiviteyi belirtir
nitelikte olmalidir. Ornegin, HataKontrol() yerine HataKontroluYap(),
VeriDosyasi() yerine VeriDosyasinaCiktiYap() kullanilmalidir.
Bu kullanim sekli degisken objelerinin ve fonksiyonlarin birbirine
karismasini da engelleyecektir.
* Bazen sona eklenen kisaltmalardan yararlanilabilir.
- MAX : Bir degiskenin alabilecegi Maximum degerden bahsederken.
- Cnt : Bir sayac degiskeninin o anki degeriniden bahsederken
( Sayac = Counter )
- Key : Bir anahtar deger ( Anahtar = Key )
Ornegin: TekrarMax - Maksimum tekrar sayisi, TekrarCnt -
Su anki tekrar sayisi gibi kullanilabilir.
* Bazen basa eklenen kisaltmalardan da yararlanilabilir.
(Bu bolumun aciklamasi yukari bolumle ayni. Ornek yanlizca
ingilizce oldugunda basa eklenen bir ornek oluyor. Basa
ek eklemek Turkce'ye uygun olmadigi icin burayi yok farzediyoruz)
Tamami Buyuk Harf Olan Kisaltmalar Kullanmayin:
* Normalde tamami buyuk harften olusan kisaltmalari bir isimde
kullanmaniz gerektiginde bu kisaltmanin sadece ilk harfini
buyuk yapip gerisini kucuk harfler devam edin.
Ornegin: 'YeniHTMLSayfasi' yerine 'YeniHtmlSayfasi' kullanin.
Aciklama:
* Tamami buyuk harflerden olusan kisaltmalari isim olarak
kullanirken herkes farkli bir tarz izlemektedir. Isimlerin
ne anlama geldigini tahmin edebilmek acisindan sadece bir
tarzi kullanmak gereklidir.
Ornegin NetworkABCKey isminde ABC'den gelen C ile Key'den
gelen K karismis durumdadir. Bazi programcilari rahatsiz
etmeyen bu durum digerlerini sinir edebilmektedir. Bu yuzden
degisik kisiler tarafindan yazilmis kod orneklerinde bu
konuya degisik yaklasimlar goreceksiniz.
Ornekler:
class FluidOz // FluidOZ degil
class GetHtmlStatistics // GetHTMLStatistics degil
Evet simdilik bu kadar. Web'de bir cok kaynagin PHP kodlama
konusunda referans olarak gosterdigi bu kaynagin tamamini ilerleyen
gunlerde sitemizde ve mumkun olursa kaynagin ingilizcesinin
bulundugu yansi sitelerinde de bulabileceksiniz.
Oktay Altunergil
|