Gerosios programavimo praktikos

Bandau parengti gero programavimo praktikos vadovą, ir sugalvojau įkelti viską ir čia. Gal bus naudinga ir kitiems. O gal rasit ką pakomentuoti?

Gerosios programavimo praktikos taip ir vadinasi todėl, kad vadovaudamiesi jomis programuojame geriau. Nors per paskaitas būsimiems programuotojams daug kalbama, kaip tai svarbu, bet to nesuprantam tol, kol nepradedam programuoti patys ir nesusiduriam su problemomis, kurių kiltų mažiau, jei šiomis praktikomis vadovautumėmės.

Vadovaujantis susitartais standartais, darbas vyksta daug sklandžiau. Tai ypač svarbu, kai prie vieno projekto dirba ne vienas programuotojas, o komanda. Bet tai svarbu ne tik dirbant komandoje, bet ir programuojant po vieną.

Gerųjų programavimo praktikų laikymasis padeda didinti darbo efektyvumą. Taip padarom daugiau ir kokybiškiau per tą patį laiką.

Vardų suteikimo susitarimas

Vardų susitarimai svarbu tam, kad galima būtų atskirti kintamųjų naudojimo apimtį, pvz. kintamieji su priesaga l_ – lokalūs, su g_ – globalūs ir pan.

Vardų aiškumas

Siūloma rašyti save dokumentuojantį kodą. Kintamiesiems, funkcijoms, procedūroms, paketams svarbu suteikti tokius vardus, kurie atitiktų to kintamojo ar kodo dalies paskirtį. Svarbu, kad skaitant patį kodą, būtų aišku, ką tas kodas atlieka.

PL/SQL kalboje kintamųjų vardai yra case sensitive, todėl nerekomenduojama naudoti CamelCase tipo vardų suteikinėjimo, rekomenduojama naudoti tik mažąsias raides.

Konstantos – rekomenduotina vien didžiosiomis raidėmis.

Net trumpai naudojamiems kintamiesiems svarbu naudoti reikšmę turinčius pavadinimus. Tokie kintamųjų vardai, kaip i, j galėtų būti suteikiami tik labai trumpose kodo dalyse.

Komentarai

Naudojant save dokumentuojančio kodo programavimo stilių, komentarus siūloma dėti tik ten, kur jie tikrai reikalingi:

  • Prie funkcijų, procedūrų, klasių ir kitų programinių blokų. Prie funkcijos ar procedūros reikia trumpai aprašyti jos paskirtį, ką ji daro, aprašyti parametrus ir grąžinamas reikšmes. Jei funkcija atlieka nedidelį ir aiškų veiksmą ir jos paskirtis aiški iš pavadinimo, komentaras nebūtinas (?)
  • Jei kode yra neaiškių vietų ar atskirų loginių blokų, juos taip pat reikia komentuoti.
  • Dėl aiškesnio skaitomumo, funkcijų ir procedūrų pabaigas patartina pažymėti komentaru.
  • Komentarus rašom prieš pradėdami programuoti kodo dalį (funkciją, procedūrą) – tam, kad būtų iš anksto aišku, kam ta kodo dalis bus skirta, o ne tada kai ją baigiam.

Gero vardų suteikimo/komentavimo pavyzdys:

Compare this typical code:

float a, b, c; a=9.81; b=5; c= .5*a*(b^2);

To this self-documenting code, which shows what is being done:

const float gravitationalForce = 9.81;

float timeInSeconds = 5;

float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2)

And then to this documented code, which better explains why it is being done:

/* compute displacement with Newton’s equation x = vₒt + ½at² */

const float gravitationalForce = 9.81;

float timeInSeconds = 5;

float displacement = (1 / 2) * gravitationalForce * (timeInSeconds ^ 2)

And this example of a poor commenting style:

const float a = 9.81; //gravitational force

float b = 5; //time in seconds

float c = (1/2)*a*(b^2) //multiply the time and gravity together to get displacement.

Dokumentavimas

Kodą būtina dokumentuoti tam, kad kartu dirbantys žmonės, ar tie, kurie vėliau pradės dirbti prie projekto, žinotų, kas ir kodėl yra daroma, galėtų greitai susipažinti su projektu ir pradėti prie jo dirbti.

Jei naudojamas save dokumentuojantis kodas ir pakankamai komentarų, dokumentuoti svarbu tik pagrindinius dalykus.

Dokumentacijoje turėtų būti:

  • Duomenų bazės ER diagrama.
  • Proceso aprašymas, nurodant, kaip kokios procedūros/funkcijos jame dalyvauja (?)
  • Procedūrų, funkcijų, klasių aprašymai:
  1. Aprašymas, ką procedūra daro
  2. Argumentų ir grąžinamų reikšmių tipai
  3. Apribojimai argumentams

Jokių hardcodinimų

Rekomenduotina vengti „hardcodinimų“. Dažniausiai pasitaikantys atvejai:

  • Pasikartojantys SQL sakiniai kode. Rekomenduojama tam naudoti funkcijas/procedūras (t.y., pasirašyti tam API).
  • Į Web‘ą išvedamas tekstas rašomas pačiame kode. Rekomenduojama tam naudoti šablonus, esančius atskirai nuo kodo ar kintamuosius, kurių tekstas aprašytas atskirai.

(Čia galima rasti daugiau, gal vėliau parašysiu.)

Frameworkai

Frameworkai pagreitina darbą, nes dalis reikalingų dalykų juose jau yra padaryta.

Rekomenduojami skaitiniai

PHP gero programavimo gidas: http://www.odi.ch/prog/design/php/guide.php

PEAR Naudojami programavimo standartai: http://pear.php.net/manual/en/standards.php

Reklama

Parašykite komentarą

Įveskite savo duomenis žemiau arba prisijunkite per socialinį tinklą:

WordPress.com Logo

Jūs komentuojate naudodamiesi savo WordPress.com paskyra. Atsijungti / Keisti )

Twitter picture

Jūs komentuojate naudodamiesi savo Twitter paskyra. Atsijungti / Keisti )

Facebook photo

Jūs komentuojate naudodamiesi savo Facebook paskyra. Atsijungti / Keisti )

Google+ photo

Jūs komentuojate naudodamiesi savo Google+ paskyra. Atsijungti / Keisti )

Connecting to %s