Borland Kodlaşdırma Standartları

BORLAND KODLAŞDIRMA STANDARTLARI

Bu sənəd Delphi kod yazma standartları haqqındadır. Borland tərəfindən yaradılan və bir çox Delphi programçısı tərəfindən mənimsənən standartlar. Object Pascal çox gözəl dizayn edilmiş bir dildir, bu standartların əsas məqsədi də kodu daha yaxşı oxunabilən etməkdir. Daha sonra yazdığınız bir koda baxdığınız zaman asanca oxuya bilməlisiniz vəya birlikdə proyekt hazırladığınız yoldaşınız kodlarınızı asanca başa düşə bilməlidir.

üMUMİ QAYDALAR

Cərgələmə

* Əgər kodda cərgələmə etsəniz, kodları oxumaq və izləmək daha asan olacaq. İlk cərgə başlanğıcdan etibarən 2 boşluq buraxaraq, ikinci cərgə başlanğıcdan etibarən 4 boşluq buraxaraq, üçüncü cərgə başlanğıcdan etibarən 6 boşluq buraxaraq və sonra da hər cərgə üçün iki boşluq (8, 10, 12, 14… boşluk) buraxaraq davam edilməlidir.

* Tab simvolunu kod fayllarına qeyd etməyin. çünki Tab simvoluna uyğun gələn boşluq miqdarı istifadəçidən istifadəçiyə və müxtəlif proqramlara görə fərqlənir.

Tools -> Editor Options -> Source Options qismindəki Use Tab Character seçənəyini ləğv edərək Tab simvolunun kod fayllarına qeyd olunmasının qarşısını ala bilərsiniz. Bu seçənək seçili olmadığında, Tab’ı basdınığız zaman Tab simvolu yerinə boşluq doldurulur.

* Kod redaktorunda şaquli bir xətt vardır. Kod yazarkən bu xətti keçməsəniz kodunuz həm daha asan oxunular, həm də nəticələri daha yaxşı görünər.

* Bir-biriylə əlaqəli begin və end, bir-biriylə eyni cərgədə və ayrı sətirlərdə yazılmalıdır.

Səhv : for i := 0 to 10 do begin // begin, for’la eyni sətirdə

Düzgün : for i := 0 to 10 do

begin

if Şərt then

begin

end

else

begin

end;

İzah Qoyma

* İzah üçün //, {} və (* *) istifadə olunur.

* // bir sətirə izah yazmaq üçün istidadə olunur.

{} və (* *) isə blok olaraq izah qoymaq üçün istidadə olunur, başlanğıc və bitiş arasındakı hər şey izah kimi qəbul olunur. Bunlardan {} izah yazmaq, (* *) da iş əsnasında müvəqqəti olaraq bəzi kodları proqramdan çıxarmaq üçün istifadə oluna bilər.

* Koda nə çox, nə də az, başa düşməniz üçün kifayət olacaq qədər izah əlavə edin.

* Əgər düzəltmək istədiyiniz bir koda müvəqqəti olaraq izah əlavə edirsinizsə, izahın əvvəlinə ??? əlavə etmək yaxşı olar. Daha sonra asanca bu sətirləri tapıb, lazımi düzəlişlər edə bilərsiniz.

Məsələn: //???:digər proseduranı hazırlayandan sonra sıralama qismini də düzəltmek lazımdır.

Məlumat Əlavə Etmə

Yazdığınız unit’in başlığına məlumat əlavə etmək istəyirsinizsə, onu unit’in ən üstünə aşağıdakı şəkildə əlavə etməlisiniz. Lazım olsa araya eyni formatda yeni sətirlər əlavə edə bilərsiniz.

{*******************************************************}
{                                                       }
{       Chingiz Mammedov                                }
{                                                       }
{       © 2007-2008, www.forgenc.tk                 }
{                                                       }
{*******************************************************}

OBJECT PASCAL

Boşluqlar

Object Pascal boşluqları nəzərə almır. Object Pascal çox gözəl bir dizayna sahib olduğu üçün çoxlu boşluq buraxmağa ehtiyac yoxdur, ancaq;

* Altproqramlar (prosedura, funksiya) arasında bir sətir boşluq buraxmalısınız.

* Açma mötərizəsi ilə sonrakı simvol və bağlama mötərizəsi ilə əvvəlki simvol arasında boşluq buraxmayın.

Səhv : CallProc( AParameter )

Düzgün : CallProc(AParameter)

* Kod içərisində lazımsız yerlərdə əlavə mötərizələr işlətməyin.

if (i = 15) then // səhvdir, burada mötərizəyə ehtiyac yoxdur.

if (i = 15) or (j = 5) then  // düzgündür, mötərizələr lazımlıdır

* Nöqtəli vergüldən əvvəl boşluq buraxmayın.

* Kvadrat mötərizələrdən əvvəl və sonra boşluq buraxmayın.

Səhv : MyInteger := MyIntegerArray [ 3 ];

Düzgün : MyInteger := MyIntegerArray[3];

Ayrılmış Sözlər (Reserved Words)

Object pascal’a aid ayrılmış sözlər (for, if, begin, end kimi kod içinde xüsusi mənası olan sözlər) tamamilə kiçik hərflərlə yazılmalıdır. Bu sözlər susmaya görə redaktor içində tünd yazı tipi ilə göstərilirlər.

Prosedura və Funksiyalar (Altproqramlar)

* Altproqramlara gördükləri işə aid olan mənalı adlar verilməlidir. Adətən yaxşı adlar; bir ad və bir feldən ibarət olur.

FaylAxtar, ProgramiBagla kimi.

* Altproqram adlarını daha asan oxuyabilmək üçün sözlərin baş hərfləri böyük yazılmalıdır.

Səhv : procedure bubiruzunokunmasizoraltproqramadi;

Düzgün : procedure BuOkumasiAsanBirAltproqramAdi;

* Altproqram adlarında alt xətt (“_”) olmamalıdır.

Səhv : procedure Bu_Sehv_Bir_Procedure_Adi;

Parametrlər

* Mümkün olduğu qədər, eyni tipli parametrlər bir ifadədə toplanmalıdır.

Səhv : procedure Numune(Parametr1: string; Parametr2: string; Parametr3: string);

Düzgün : procedure Numune(Parametr1, Parametr2, Parametr3: string);

* Parametrlərə mənalı adlar verilməlidir.

* Əgər kateqoriyalı bir sıralama varsa parametrləri ona görə sıralayın.

BirProc (Olke, Rayon, Kend : string); kimi.

* Belə bir kateqoriya yoxdursa çox işlədilən parametrdən, az işlədilən parametrə sıralayın. Bir istisna olaraq Sender parametri həmişə birinci yazılır.

Ad Kəsişmələrinin Qabağını Alma

Əgər bir altproqram birdən çox unitdə təyin olunubsa uses qismində bu unitlərin hamısının istifadəsində yaranabiləcək qarışıqlıqların qabağını almaq üçün bu altproqram unit adı ilə işlətmək lazımdır.

Məsələn : FindClose altproqramı 2 unitdə təyin olunub.

SysUtils.FindClose(SR); vəya Windows.FindClose(Handle);

Dəyişənlər

* Dəyişənlərə mənalı adlar verilməlidir.

* Dövr dəyişənləri üçün adətən i, j, k hərfləri işlədilir.

* Məntiqi (boolean) dəyişənlərin adları qiymətlərinin (True, False) mənasına uyğun bir ad olmalıdır.

* Birdən çox eyni tipli dəyişən ayrı-ayrı sətirlərdə deyil, bir sətirdə yazılmalıdır.

var

i: integer;

j: integer;

əvəzinə

var

i, j: integer;

* Əgər lazımdırsa lokal dəyişənlərə altproqramın girişinde ilk qiymətlər verilməlidir.

* Mümkün olduğu qədər qlobal dəyişənlər işlədilməməli, sadəcə həqiqətən lazımlı olduğu hallarda işlədilməlidir. Qlobal dəyişənlərə təyin olunma mərhələsində ilk qiymət verilə bilər. Əgər lazımdırsa bu mənimsətmələri təyin qismində edə bilərsiniz. Ancaq mənimsədəcəyiniz qiymətlər 0, nil, … kimi sıfırlama qiymətləridirsə bu mənimsətmələr lazımsızdır. Bu mənimsətmələr ən uyğun şəkildə Delphi tərəfindən edilir.

Real Tipindən İstifadə Etməyin

* Real tipi geriyə doğru uyğunluq üçündür. Bunun əvəzinə Double tipindən istifadə edin.

Variant və OleVariant

İş əsnasında tipi məlum olmayan verilənləri saxlamaq üçün istifadə olunurlar və adətən COM və verilənlər bazası proqramlarında lazım olurlar, bunlardan başqa çox da işlətməyin. Variant’lar digər tiplərə görə daha yavaş işləyirlər.

Variant stringləri Delphi tipinde saxlayarkən, OleVariant bu stringləri Ole string’lərə çevirir (WideChar). Bunun üçün COM-əsaslı (COM-based) proqramlarda və ActiveX hazırlayarkən OleVariant işlədin.

if İfadəsi

* if/then/else şəklində işlədilən ifadələrdə, icra olunması daha çox ehtimallı olan then qismində, daha az ehtimallı olan isə else qismində olmalıdır.

* if ifadələrinin oxunması daha çətin olduğundan, mümkün olduğu qədər case ifadəsi işlədin.

* iç-içə if ifadələrindən ən çox 5 seviyyəyə qədər istifadə edin. Daha çoxuna ehtiyac varsa, proqramınızı gözdən keçirib strukturu dəyişdirin.

* Əgər birdən çox şərti yoxlayırsınızsa, sərtləri sürətli işləyəndən yavaş işləyənə doğru düzməyiniz daha yaxşıdır. Məsələn: şərt1 daha sürətli, şart2 biraz yavaş hesaplanırsa

if Şərt1 or Şərt2 then // şərt1 True’dursa, Şərt2’yə baxılmaz.

* Birdən çox şərtı yoxlayırsınızsa və şərt ifadələri uzundursa, hər şərti bir sətirə yazmaq daha yaxşı olacaq.

if Şərt1 and

Şərt2 and

Şərt3 then

case İfadəsi

* case’də ifadələr ədədi vəya əlifba sırasında yazılmalıdır.

* hər ifadənin uzunluğu 4-5 sətirdən çox olmasa yaxşı olar. Əgər bir ifadənin çox uzundursa bunu ayrı bir prosedura vəya funksiya olaraq yazmaq daha yaxşı olacaq.

* hər ifadə begin..end blokları arasına yazılmalıdır.

case İfadə of

ifadə1 :

begin

end;

ifadə2 :

begin

end;

else

end; {case}

with ifadəsi

with ifadəsi yazılışda asanlıq üçün işlədilir. Ancaq with ifadəsini lazımlı yerlərdə işlətməli və birdən çox obyekt ilə işlətməməlisiniz.

Səhv : with Record1, Record2 do

belə bir işlətmə həm kodu oxuyan adamı çaşdırır, həm də səhv təsbitlərini çətinləşdirir.

EndIf, EndCase, EndWith

Object Pascal’da bu ifadələr yoxdur. Bu ifadələr begin..end blokları arasına yazılırlar. Bu ifadələri işlədərkən, başlanğıc və bitiş bloklarını təyin etmək üçün izahdan istifadə etməlisiniz :

if i > 5 then

begin

  end; {if}  // if blokunun sonu

with Query1 do

begin

….

end; {with} // with blokunun sonu

beacon financial

Enumerated Type

Hər elementdən əvvəl enumarated type’ı göstərən hərfləri etmək lazımdır. Aşağıdakı misalda, hər elementin əvvəlinə bk hərfləri əlavə olunmuşdur və bunlar ButtonKind ifadəsinin baş hərfləridir.

Yalnız sadəcə L vəya 1 əlavə etməyin. Bunlar göstərmədə və bəzi printerlərdə problem çıxarda bilər.

TBitBtnKind = (bkCustom, bkOK, bkCancel, bkHelp, bkYes, bkNo, 
               bkClose, bkAbort, bkRetry, bkIgnore, bkAll);

Exception Handling

Delphi’də ümumi qayda: obyekti yaradan yox edir (Məncə bu qayda bütün kainata aiddir – red). Əgər bir form vəya bir obyekt yardıbsınızsa onu yox etmə vəzifəsi də sizə aiddir. Tutduğunuz resursları sistemə qaytarmalısınız. Bunun üçün tez-tez try..finally blokundan istifadə etmək lazımdır.

SomeClass1.Create; // yarat

try

… // bir şey elə

finally

SomeClass1.Free; // SomeClass1 mütləq yox edilir.

end; {try}

Əgər səhv olduğu zaman bir şey icra etmək istəyirsinizsə (adətən səhvi göstərmə vəya qeyd etmə kimi) try..except blokundan istifadə etməlisiniz.

try

….

except

…. // səhv olanda bu blok icra olunur

end; {try}

Sinif (class) Adları

* Həmişə olduğu kimi məntiqli adlar verilməlidir. Delphi’də siniflərın (class) əvvəlinə T hərfinin qoyulması bir ənənədir. Yəni hər bir sinif adı T ilə başlamalıdır.

type

TMusteri = class(TObject);

Fields və Property Access

* Field’lərin əvvəlinə F hərfi əlavə olunmalıdır. FYukseklik kimi.

* Bütün fieldlər private qismində təyin olunmalıdır.

* property’lərə müraciət üçün istifadə olunan metodların əvvəlinə get və set sözləri əlavə olunmalıdır.

property Yukseklik: Integer read GetYukseklik write SetYukseklik;

* Metodlar əlifba sırasıyla düzülməlidir. Yəni : private – protected – public – published

FAYLLAR

* Proyektlərə mənalı və açıqlayıcı adlar verilməlidir. Məsələn sistem məlumatlarını göstərən bir proqram üçün : SystemInfo.dpr kimi.

* Form adlarına mənalı və açıqlayıcı bir addan sonra Frm simvolları ilə biten bir ad verilmədir. Məsələn Stok formu üçün StokFrm.pas kimi.

* Data Modullara yenə açıqlayıcı bir addan sonra DM simvolları ilə bitən bir ad verilməlidir. Məsələn müştəri cədvəllərinin olduğu data module üçün : MusteriDM.pas kimi.

FORMLAR

* Form adları açıqlayıcı bir ön ad və Form sözünün birləşməsindən ibarət olmalıdır. Məsələn Stok formunun adı : StokForm, müştəri məlumatlarının girişinin yerinə yetirildiyi formun adı : MusteriGirisForm

* Ancaq çox lazımlı formlar auto-create edilməlidir. Auto-Create formlar proqram icra olunduğu anda avtomatik olaraq yaradılır və yaddaşda yer tuturlar. çox lazımlı formlar xaric, digər formlar Project Options qismindən Avaible Forms qisminə keçirilməlidir.

* Data modullara açıqlayıcı bir ön əlavədən sonra DataModule sözləri əlavə olunmalıdır. Məsələn müştəri cədvəllərinin yerləşdiyi data module üçün MusteriDataModule kimi.

admin

Forgənc saytının yaradıcısı :)

Şərhlər:

  1. RoMaNtIk_MoLLa dedi ki:

    nedu bu basim cixxmadu

  2. MURAD_X dedi ki:

    ssuuppeerr.. twk

  3. QaRaCa dedi ki:

    basim xixmadiii

  4. =VORZAKON= dedi ki:

    e bu ne proqramdi ee

  5. Tix_Tix_Xanim dedi ki:

    Tesekkurler

  6. ZoRRo_BaKu dedi ki:
    Sagol Maraqli Idi
  7. merry-girl dedi ki:

    cox sag ol Adim cik ellerine sagliq

    hecne basa dusmedim

  8. sessiz_firtina_1 dedi ki:

    Qaqa bes mene bir sheyi basa sal da nece edim ki meselen bir proqramin dizayini ve s deishmek isteyirem ne edim??? sexsi ismaruic kimi gonder

  9. Скажи-да dedi ki:

    sagol twk

  10. Optimist... dedi ki:

    oxumaga heves lazimdir…yene de emeye gore tesekkurler….

  11. Neymet Lenkaran dedi ki:

    meymunka,
    salam canim necesiz imkan olarsa mene yazin askim [email protected]

  12. Zerishka dedi ki:

    Xebere gore tesekkurler…

  13. mR_bAkiNec dedi ki:

    sen etaga qaqam bunu oxuyana qeder menim ki mende qalar 😀
    sagol yenede 😛

  14. _Sia_ dedi ki:

    Xebere gore tesekkurler…

  15. BaBy BaRBie dedi ki:

    minnetdarim

  16. CooL_Man dedi ki:

    Xəbərə görə təşəkkür!

  17. King_Of_THE_SKY dedi ki:

    CINA BUNLARI BILIREMMM . Xexe

  18. King_Of_THE_SKY dedi ki:

    .. Elaa Cinaa :))))))

  19. Pestimist... dedi ki:

    anlamadim cox cetindi

  20. Pestimist... dedi ki:

    anlamadim) shok

  21. AYDAN 15 dedi ki:

    hm yaxsi idi

  22. romantik_oglan dedi ki:

    calisib emel ederik

  23. ...::EMERALD::... dedi ki:

    MELUMATA GORE SAG OL

  24. KinG ArthuR dedi ki:

    basim cixmadi menim yenede cox sagol

  25. KinG ArthuR dedi ki:

    xebere gore cox sagolun

  26. )(akker dedi ki:

    Xəbərə gorə sağ ol…

    forgenc

  27. Aragorn dedi ki:

    Xəbərə gorə sağ ol…

    forgenc

    Hər konuldə bir gul olmaqdansa bir konuldə buket ol…

  28. simon666 dedi ki:

    men bir sey basa dusmedim

  29. love_krasotka dedi ki:

    аха xaxa xaxa

  30. Suskun-Ruh dedi ki:

    True Emo,
    he bele sakit havaydiye adam hecne basa dusmurdu

  31. True Emo dedi ki:

    Хеее Дейирем дюнен хава яхшы кечди )))

  32. Firuze dedi ki:

    He.Yadima dusdu .Uyda unutmusdum eee cox sag olunda yaxsi oldu. winked

  33. ByRON dedi ki:

    я тоже это всё знаю

  34. Lacin5 dedi ki:

    Cox Gozel Ellerin Derd Gormesin

  35. SuLiKo dedi ki:

    Cox Saqol …AMa Hecne Anlamadim

  36. BadBoy dedi ki:

    Cox sag OL bRATUXA cIngiz!!!

    *ILHAM User ForGenc.net
    *User of ForGenc.net company
    *registered on 13 Dekabr 2009 13:09
    * User ForGenc.net team

  37. Firuze dedi ki:

    SAg ol dosdik…………

  38. Azeri_Boy dedi ki:

    Eziyyet cekib yazmisan qaqa amma hecne basa dusmedim

  39. МиниК_Сердце dedi ki:

    hmmm…

  40. МиниК_Сердце dedi ki:

    это что? mda

  41. FeGo dedi ki:

    Cox sağol lazım olar

  42. Dj_Robot dedi ki:

    Cox sagol tewekkur

  43. pink_panther dedi ki:

    hmm cox sagoloun

  44. QEMLI_GECE dedi ki:

    cox sagol

  45. Lindsay_Lohan dedi ki:

    hecne basa dusmedim

  46. BadBoy dedi ki:

    Bawa duwdum Minnetdaram…

  47. Melekcik dedi ki:

    tewekkurlerrrrrrrr

  48. BadBoy dedi ki:

    Cox sag Ol Cingiz….

  49. N_E_R_R_G_I_Z dedi ki:

    emeye hormetler

  50. Admin dedi ki:

    Buyurun oxuyun))