This shows you the differences between two versions of the page.
|
sd-ca:regulament-checker [2017/03/21 18:03] oana.caplescu [Conceptul de clean code] |
sd-ca:regulament-checker [2023/03/28 17:28] (current) emil.racec [Rularea checker-ului de coding style] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ===== Regulament coding style ===== | ===== Regulament coding style ===== | ||
| - | |||
| - | Responsabili: | ||
| - | * [[mailto:oana.caplescu@gmail.com | Oana Căplescu]] | ||
| Line 11: | Line 8: | ||
| *veți putea identifica coding style-ul vostru; | *veți putea identifica coding style-ul vostru; | ||
| *vă veți îmbunătăți modul de a scrie cod pentru a-l face //mai ușor de citit și înțeles// de cei din jur. | *vă veți îmbunătăți modul de a scrie cod pentru a-l face //mai ușor de citit și înțeles// de cei din jur. | ||
| - | *vă veți acomoda cu coding style-ul folosit la Google; | + | *vă veți acomoda cu coding style-ul folosit la Google. |
| ==== Conceptul de clean code ==== | ==== Conceptul de clean code ==== | ||
| Line 50: | Line 46: | ||
| char c = '\0'; </code> | char c = '\0'; </code> | ||
| * Nu folosiți variabile neinițializate - acest lucru poate duce la comportament incorect. | * Nu folosiți variabile neinițializate - acest lucru poate duce la comportament incorect. | ||
| - | * [[ https://oana.microsoft.pub.ro/2016/03/27/introduction-to-clean-code/ | Folosire proastă vs. corectă]] | + | * [[ https://oana.microsoft.pub.ro/2016/03/27/introduction-to-clean-code/ | Folosire proastă vs. corectă]] |
| Line 66: | Line 62: | ||
| * aplicați [[ https://google.github.io/styleguide/cppguide.html#Function_Overloading | principiul de supraîncărcare ]] din C++ nu //doar// la operatori, cât și la funcții; | * aplicați [[ https://google.github.io/styleguide/cppguide.html#Function_Overloading | principiul de supraîncărcare ]] din C++ nu //doar// la operatori, cât și la funcții; | ||
| * denumiți-vă funcțiile cât mai [[https://google.github.io/styleguide/cppguide.html#Function_Names | sugestiv ]] însă fără a oferi informații în plus; | * denumiți-vă funcțiile cât mai [[https://google.github.io/styleguide/cppguide.html#Function_Names | sugestiv ]] însă fără a oferi informații în plus; | ||
| - | * opțional: folosiți [[https://google.github.io/styleguide/cppguide.html#Function_Comments | acest tip]] de comentarii pentru a descrie informații care nu sunt subînțelese; | + | * opțional: folosiți [[https://google.github.io/styleguide/cppguide.html#Function_Comments | acest tip]] de comentarii pentru a descrie informații care nu sunt subînțelese; |
| * folosiți funcții ajutătoare și creați-le cât mai generale (să poată fi aplicate pe mai multe cazuri, nu doar pe cel curent - [[ https://google.github.io/styleguide/cppguide.html#Function_Declarations_and_Definitions| vezi aici]]; | * folosiți funcții ajutătoare și creați-le cât mai generale (să poată fi aplicate pe mai multe cazuri, nu doar pe cel curent - [[ https://google.github.io/styleguide/cppguide.html#Function_Declarations_and_Definitions| vezi aici]]; | ||
| - | * Folosiți [[ https://ocw.cs.pub.ro/courses/sd-ca/laboratoare/lab-03 | templates]]. | + | * Folosiți [[ https://ocw.cs.pub.ro/courses/sd-ca/laboratoare/lab-03 | templates]]. |
| * apelați funcțiile în mod corect; în plus, folosiți variabile locale pentru claritate; | * apelați funcțiile în mod corect; în plus, folosiți variabile locale pentru claritate; | ||
| * C++ oferă posibilitatea trimiterii parametrilor __pe mai multe linii.__ | * C++ oferă posibilitatea trimiterii parametrilor __pe mai multe linii.__ | ||
| Line 74: | Line 70: | ||
| * folosiți __parametrii__ ca **input** și //valorile de// [[https://google.github.io/styleguide/cppguide.html#Return_Values | return]] ca **output**: | * folosiți __parametrii__ ca **input** și //valorile de// [[https://google.github.io/styleguide/cppguide.html#Return_Values | return]] ca **output**: | ||
| * Folosiți **clase** și **obiecte** pentru a lucra cu mai multe câmpuri/informații. | * Folosiți **clase** și **obiecte** pentru a lucra cu mai multe câmpuri/informații. | ||
| - | + | * [[ https://oana.microsoft.pub.ro/2016/04/03/clean-methods-2/ | Folosire proastă vs. corectă]]. | |
| - | * [[ https://oana.microsoft.pub.ro/2016/04/03/clean-methods-2/ | Folosire proastă vs. corectă]]. | + | |
| Line 85: | Line 80: | ||
| __Reguli generale și referințe__: | __Reguli generale și referințe__: | ||
| * Denumiți [[https://google.github.io/styleguide/cppguide.html#Type_Names | corect]] atât clasele cât și atributele lor folosind nume care <del>vă vin în minte</del> evidențiază rolul lor. | * Denumiți [[https://google.github.io/styleguide/cppguide.html#Type_Names | corect]] atât clasele cât și atributele lor folosind nume care <del>vă vin în minte</del> evidențiază rolul lor. | ||
| - | <note important>Astfel, nu aveți nevoie de [[https://google.github.io/styleguide/cppguide.html#Class_Comments | comentarii de clasă]] iar codul arată mult mai aerisit.</note> | + | * Astfel, nu aveți nevoie de [[https://google.github.io/styleguide/cppguide.html#Class_Comments | comentarii de clasă]] iar codul arată mult mai aerisit. |
| * Folosind litere mari pentru clase evitați erori rezultate în urma încercării intanțierii unui obiect cu o metodă, de exemplu. | * Folosind litere mari pentru clase evitați erori rezultate în urma încercării intanțierii unui obiect cu o metodă, de exemplu. | ||
| <note warning> Nu folosiți variabile globale. [[ http://wiki.c2.com/?GlobalVariablesAreBad | Iată]] de ce. </note> | <note warning> Nu folosiți variabile globale. [[ http://wiki.c2.com/?GlobalVariablesAreBad | Iată]] de ce. </note> | ||
| * În cazul //enumerațiilor//, tratați elementele lor ca niște [[https://google.github.io/styleguide/cppguide.html#Enumerator_Names | constante]]. | * În cazul //enumerațiilor//, tratați elementele lor ca niște [[https://google.github.io/styleguide/cppguide.html#Enumerator_Names | constante]]. | ||
| * Respectați [[https://google.github.io/styleguide/cppguide.html#Class_Format | formatul claselor]]. | * Respectați [[https://google.github.io/styleguide/cppguide.html#Class_Format | formatul claselor]]. | ||
| - | + | * [[ https://oana.microsoft.pub.ro/2016/04/10/comments/ | Avem nevoie de comentarii?]] | |
| - | * [[ https://oana.microsoft.pub.ro/2016/04/10/comments/ | Avem nevoie de comentarii?]] | + | |
| Line 99: | Line 93: | ||
| * [[https://google.github.io/styleguide/cppguide.html#Horizontal_Whitespace | Formatare pe orizontală]] | * [[https://google.github.io/styleguide/cppguide.html#Horizontal_Whitespace | Formatare pe orizontală]] | ||
| * [[https://google.github.io/styleguide/cppguide.html#Vertical_Whitespace | Formatarea pe verticală]] | * [[https://google.github.io/styleguide/cppguide.html#Vertical_Whitespace | Formatarea pe verticală]] | ||
| - | + | * [[https://oana.microsoft.pub.ro/2016/10/30/formatting/ | Reguli generale și exemple.]] | |
| - | [[https://oana.microsoft.pub.ro/2016/10/30/formatting/ | Reguli generale și exemple.]] | + | |
| Line 118: | Line 111: | ||
| ==== Rularea checker-ului de coding style ==== | ==== Rularea checker-ului de coding style ==== | ||
| - | Descărcați arhiva cu checker-ul de coding style, dezarhivați-l în directorul dorit și rulați comanda utilizând ca director directorul în care aveți fișierele temei: | + | Descărcați arhiva cu checker-ul de coding style, aferent fiecărei teme, dezarhivați-l în directorul dorit și rulați comanda utilizând ca director directorul în care aveți fișierele temei: |
| <code c++> ./checker.sh director </code> | <code c++> ./checker.sh director </code> | ||
| + | <hidden> | ||
| + | Puteți descărca checker-ul separat și de aici: | ||
| + | {{:sd-ca:codingstylecheckerv4.zip|}} | ||
| + | </hidden> | ||
| ==== Acordarea punctajului ==== | ==== Acordarea punctajului ==== | ||
| <note important> Bonusul se acordă **procentual cu numărul testelor trecute**. | <note important> Bonusul se acordă **procentual cu numărul testelor trecute**. | ||