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 19: | Line 15: | ||
Prin consistență înțelegem "ceva" care nu se schimbă, care <del>este impus</del> **respectă același set de reguli**. Din acest motiv, creați-vă un coding style al vostru adică aplicați un set de reguli definite (de voi) pe tot parcursul temei, încă de la început. | Prin consistență înțelegem "ceva" care nu se schimbă, care <del>este impus</del> **respectă același set de reguli**. Din acest motiv, creați-vă un coding style al vostru adică aplicați un set de reguli definite (de voi) pe tot parcursul temei, încă de la început. | ||
| | ||
- | * Nu vă bazați pe factorizare, poate consuma destul de mult timp – în unele cazuri, chiar mai mult decât rezolvarea în sine a temei. | + | **Nu vă bazați pe factorizare**, poate consuma destul de mult timp – în unele cazuri, chiar mai mult decât rezolvarea în sine a temei. |
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**. |