Stilul de indentare

În informatică , indentarea este adăugarea de file sau spații într-un fișier text . Stilul de indentare descrie diferitele moduri în care programatorii folosesc pentru a face un bloc de cod ies în evidență.

Indentarea este definită de modul de aranjare a blocurilor de cod, dar mai ales de numărul de spații utilizate la fiecare nivel.

Indentarea poate să nu fie doar estetică. Într-adevăr, este obligatoriu pentru anumite limbi pentru a forma blocuri sau linii valide (de exemplu Occam , Fortran sau Python ).

Stiluri de indentare în C

Stil K&R

Acesta este stilul Brian Kernighan și Dennis Ritchie folosit pentru a scrie exemple în cartea lor C Language , cunoscut sub numele de prima carte pe C limba .

void a_function(void) { if (x == y) { something1(); something2(); } else { somethingelse1(); somethingelse2(); } finalthing(); }

Prin urmare, plasează acolada de deschidere a unei funcții pe linia care urmează părții declarative, spre deosebire de alte acolade (de exemplu, structuri de control) care sunt lăsate pe aceeași linie cu declarația.

Variante

Există multe variante ale acestui stil. O variație relativ obișnuită este plasarea acoladei de deschidere a funcțiilor pe aceeași linie cu partea declarativă; în afară de C, este una dintre utilizările recomandate de Sun pentru limbajul său Java, de exemplu.

O altă nuanță întâlnită frecvent poate proveni din plasarea cuvântului cheie else . Unii dezvoltatori preferă să îl poziționeze pe o linie completă.

Stil Allman

Denumit după Eric Allman , acest stil urmează o aliniere strictă a bretelelor de deschidere și închidere, ca în exemplul de mai jos:

void a_function(void) { if (x == y) { something1(); something2(); } else { somethingelse1(); somethingelse2(); } finalthing(); }

Principalul avantaj al acestui stil este că puteți observa vizual orice omisiune a bretelelor foarte ușor. În plus, există o separare clară între conținutul fiecărui bloc de cod, ceea ce îmbunătățește lizibilitatea. Acest lucru se obține cu costul unui număr mai mare de linii decât pentru alte stiluri. Este foarte aproape de stilul „Whitesmiths”.

Stilul albilor

if (x == y) { something1(); something2(); } else { somethingelse1(); somethingelse2(); } finalthing();

Utilizările diferă cu privire la modul de plasare a aparatelor dentare pentru funcții; unii autori indentează corpul și parantezele împotriva părții declarative, alții indentează corpul fără a indenta parantezele, încă alții nu indentează corpul sau parantezele.

Stil GNU

Recomandarea oficială GNU este ca programatorii să plaseze tipul returnat al funcției pe o linie separată, astfel încât numele funcției să se alinieze cu prima coloană. La fel, parantezele utilizate pentru apelurile de funcții trebuie să fie precedate de un spațiu.

Aceste considerații nu se limitează însă la stilul GNU și nu este neobișnuit să întâlnești oricare dintre aceste notații cu alte stiluri de indentare. De exemplu, KNF care guvernează prezentarea codului kernelurilor BSD necesită ca tipul de returnare al unei funcții să fie plasat singur pe o linie care precede numele acesteia.

void a_function (void) { if (x == y) { something1 (); something2 (); } else { somethingelse1 (); somethingelse2 (); } finalthing (); }

Stil Pico

if (x == y) { something1 (); something2 (); } else { somethingelse1 (); somethingelse2 (); } finalthing ();

Acest stil provine din limbajul Pico .

Stiluri de indentare în C ++

Stil folosit de Bjarne Stroustrup

Acesta este stilul folosit de Bjarne Stroustrup , inventatorul limbajului C ++ , pentru a scrie exemplele din cartea sa care descrie limbajul C ++.

Acest lucru este similar cu o variantă a stilului K&R, extins la noile caracteristici aduse de C ++.

Stiluri Ada, C ++, Java, PHP ...

Limbile de nivel înalt de acest gen, toate derivate din Algol (1960), folosesc un stil similar.

Turbo-Pascal, standardul de facto Pascal din 1983 până în prezent (Delphi), a introdus un stil de codare mai eficient și mai ușor de citit cu două caractere de indentare, utilizate pe scară largă în alte limbi, de exemplu în PHP sau în Ada. (Programul TimeInterrupt al unității standard GetTime.PAS)

begin ah := $2c; {initialize correct registers} with recpack do begin ax := ah shl 8 + al; end; intr($21,recpack); {call interrupt} with recpack do begin str(cx shr 8,hour); {convert to string} str(cx mod 256,min); { " } str(dx shr 8,sec); { " } end; time := hour+':'+min+':'+sec; end;

Alte stiluri

Occam

IF sgf.res <> 0 SKIP TRUE IF compare.strings (ThfareKey, "99999999") <> 0 SEQ ThfareKeyInt := AtoI (ThfareKey) ThfareOffsets [ThfareKeyInt] := Offset TRUE SKIP

În Occam , este indentarea care transportă informațiile de apartenență la un bloc, care evită construirea blocurilor („începe”, „apoi”, „sfârșit”). Indentarea are două caractere. Mai sus, ADEVĂRAT este echivalentul „implicit” sau „altfel” a „dacă” sau „cazul” construcțiilor („comutator” în C).

FORTRAN V

subroutine ch_cap ( c ) implicit none character c if ( 97 <= itemp .and. itemp <= 122 ) then c = char ( itemp - 32 ) end if return end

Acest stil este foarte apropiat de tipul „derivat Turbo Pascal” de mai sus. Rețineți că în FORTRAN standard, primele 5 caractere ale fiecărei linii sunt rezervate teoretic, fie pentru comentarii („C” în prima coloană), fie pentru numerele de linie (etichete) în conformitate cu formatul cardurilor perforate Hollerith (1890) cu 80 coloane (@IBM 1926).

Lisp

(defun compall () (do-symbols (s) (when (fboundp s) (unless (compiled-function-p (symbol-function s)) (print s) (compile s)))))

Indentarea recomandată este de 2 caractere, cu excepția excepțiilor pentru anumite forme speciale, și evită construirea blocurilor („începe”, „apoi”, „altfel”, „sfârșit”). Parantezele de închidere sunt grupate împreună și nu sunt aliniate vertical cu parantezele deschise corespunzătoare. Scrierea programelor Lisp este favorizată de utilizarea editorilor care permit evidențierea perechilor de paranteze de deschidere / închidere corespunzătoare și permițând indentarea automată a codului în funcție de structură.


Vezi și tu

linkuri externe

Referințe

  1. (în) „  Convenții de cod pentru limbajul de programare Java  ”
  2. (în) Formatarea codului dvs. sursă - Standardele de codare GNU
  3. (fr) standard și ghid de scriere pentru evoluțiile din Ada, JP Germe, compania 3ip, 1989
  4. (ro) Turbo Pascal 3.0 (1986)