This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
administrativ:barem_teme [2015/10/03 14:55] Adriana Draghici |
administrativ:barem_teme [2018/11/26 22:33] (current) Adriana Draghici [Depunctări generale pentru teme] |
||
---|---|---|---|
Line 11: | Line 11: | ||
* Alocați suficient timp temelor. E improbabil ca o rezolvare într-un all-night coding sprint să fie de calitate. | * Alocați suficient timp temelor. E improbabil ca o rezolvare într-un all-night coding sprint să fie de calitate. | ||
* Nu scrieți codul din prima, ci alocați timp abordării și design-ului. | * Nu scrieți codul din prima, ci alocați timp abordării și design-ului. | ||
- | * Fiți consecvenți unui coding style [TODO link]. | + | * Fiți consecvenți unui [[administrativ:coding_style_ide|coding style]]. |
* Când scrieți README-ul pentru teme: | * Când scrieți README-ul pentru teme: | ||
* nu reproduceți cerințele din enunț și/sau comentariile din cod | * nu reproduceți cerințele din enunț și/sau comentariile din cod | ||
Line 18: | Line 18: | ||
* formatați-l corespunzător - linii de 80 de caractere max, paragrafe, etc | * formatați-l corespunzător - linii de 80 de caractere max, paragrafe, etc | ||
* Folosiți cu încredere forumurile pentru orice: neclarități, coding style, best practices, etc. | * Folosiți cu încredere forumurile pentru orice: neclarități, coding style, best practices, etc. | ||
- | * Testați-vă tema dincolo de testele automate. Putem avea teste private. | ||
* Folosiți principiile //Object Oriented//: | * Folosiți principiile //Object Oriented//: | ||
* păstrați încapsularea | * păstrați încapsularea | ||
Line 37: | Line 36: | ||
Vom aplica mici depunctări legate de calitatea codului și a abordărilor temelor. Din 10 puncte: | Vom aplica mici depunctări legate de calitatea codului și a abordărilor temelor. Din 10 puncte: | ||
- | * -0.2 warning-uri de compilare | + | **Coding style si organizare:** |
+ | * -0.1 - cod înghesuit sau prea spațiat | ||
+ | * -0.2 - warning-uri de compilare | ||
* verificați import-urile, variabilele nefolosite, etc | * verificați import-urile, variabilele nefolosite, etc | ||
- | * -0.2 linii mai lungi de 80 de caractere | + | * între -0.1 și -0.4 - nepăstrarea consistenței pentru comentarii - fie sunt toate comentariile în engleză fie sunt toate în română. |
- | * formatați-vă codul să fie ușor de citit și parcurs | + | * între -0.1 și -0.4 - nepăstrarea consistenței pentru denumiri - fie sunt toate n engleză fie în română. Puteți avea însă denumirile și comentariile în limbi diferite. |
- | * puteți folosi auto-formatter-ul IDE-ului pe care îl folosiți | + | * între -0.1 și -0.3 - denumiri nepotrivite pentru metode, variabile, clase |
- | * (variabil începând de la -0.1) cod duplicat | + | * -0.1 - bucăți de cod comentat |
- | * -0.1 cod înghesuit sau prea spațiat | + | * -0.5 - toate clasele intr-un singur fisier |
- | * (variabil, începând de la -0.1) hardcodări | + | * -0.3 - toate sursele puse intr-un pachet |
- | * folosiți constante în locul valorilor numerice/String-urilor literali | + | * -0.1 - includerea altor fișiere care nu au legătură cu cerința |
- | * -0.1 tab-uri amestecate cu spații pentru indentare sau indentare inconsecventă (ba un tab, ba mai multe) | + | * -0.1 - includere folder bin in arhivă |
- | * IDE-ul vă ajută, folosiți formatarea IDE-ului | + | |
- | * -0.1 surse nesemnate | + | **Documentare:** |
- | * IDE-ul vă ajută să vă generați comentarii Javadoc cu numele autorului predefinit | + | * între -0.1 și -0.5 - comentarii absente sau irelevante |
- | * -0.1 metode lungi (> 150 de linii) în situații în care ar putea fi mai scurte | + | * -0.1 - comentarii de tip TODO în cod |
- | * (variabil, începând de la -0.2) metode kilometrice (> 300 de linii), bucăți mari de logică în main etc | + | |
- | * -0.1 cod comentat | + | |
- | * -0.2 comentarii absente sau irelevante | + | |
- | * -0.1 denumire nepotrivită pentru metode, variabile, clase | + | |
- | * (variabil, în funcție de alocarea punctajului fiecărei teme) Readme necorespunzător, lipsă, conținut irelevant, etc | + | |
- | * (variabil, începând de la -0.1) ruperea încapsulării, folosirea incorectă a modificatorilor de acces | + | |
- | * -0.1 instanceof-uri și teste de tip | + | |
- | * folosiți polimorfismul în schimb | + | |
* (variabil, începând de la -0.2) Javadoc necorespunzător, incomplet, irelevant; inclus și documentarea lipsă sau incorectă a parametrilor metodelor | * (variabil, începând de la -0.2) Javadoc necorespunzător, incomplet, irelevant; inclus și documentarea lipsă sau incorectă a parametrilor metodelor | ||
- | * -0.1 lipsă Javadoc generat sau script de generare | + | * -0.1 - lipsă Javadoc generat sau script de generare. Această depunctare nu se va aplica dacă pentru o anume temă nu este necesară exportarea de documente Javadoc. |
+ | * (variabil, în funcție de alocarea punctajului fiecărei teme) Readme necorespunzător, lipsă, conținut irelevant, etc | ||
+ | |||
+ | **Design, implementare:** | ||
+ | * -0.5 - cod duplicat | ||
+ | * între -0.1 și -0.3 hardcodări | ||
+ | * folosiți constante în locul valorilor numerice/String-urilor literali | ||
+ | * -0.1 - metode șau variabile nefolosite | ||
+ | * între -0.1 și -0.5 - metode lungi (> 100 de linii) care ar fi putut fi sparte, bucăți mari de logică în main etc | ||
+ | * -0.1 - print-uri prin cod | ||
+ | * între -0.2 și -0.5 - ruperea încapsulării | ||
+ | * între -0.2 și -0.5 - modificatori de acces folositi necorespunzator (e.g. metode lăsate publice care de fapt ar trebui să fie private) | ||
+ | * -0.1 - instanceof-uri și teste de tip in situații în care putea fi folosit polimorfismul | ||
+ | * -0.5 - folosirea tipurilor "raw" în loc de tipurile parametrice (generic) e.g. ''new ArrayList()'' în loc de ''new ArrayList<String>()'' | ||
* (variabil, -0.2 până la -2 sau peste) design rigid, greoi, inextensibil, bug-prone | * (variabil, -0.2 până la -2 sau peste) design rigid, greoi, inextensibil, bug-prone | ||
- | * -0.1 folosirea tipurilor "raw" în loc de tipurile parametrice (generic) e.g. ''new ArrayList()'' în loc de ''new ArrayList<String>()'' | ||
Lista nu este exhaustivă. Evaluatorii pot aplica depunctări mai mari decât cele prezentate aici, în funcție de numărul de apariții ale greșelilor sau de gravitatea lor. | Lista nu este exhaustivă. Evaluatorii pot aplica depunctări mai mari decât cele prezentate aici, în funcție de numărul de apariții ale greșelilor sau de gravitatea lor. | ||
+ | |||
+ | Pentru abateri minore (de exemplu un nume de metodă folosit neadecvat, in toată tema), se vor pune doar observații cu -0.0. | ||
+ | |||
+ | Ce considerăm util să conțină un fișier README pentru o temă la POO: | ||
+ | * componentele soluției: rolurile lor și relațiile dintre ele | ||
+ | * **nu** este necesar să luați pe rând fiecare clasă și să îi descrieți câmpurile și metodele, pentru asta există javadoc. | ||
+ | * flow-ul dintre componente - e.g. cum se realizează o anumite acțiune, ce clase sunt implicate. | ||
+ | * probleme întâmpinate (dacă ați avut) | ||
+ |