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/09/30 13:59] Daniel Ciocirlan [Depunctări generale pentru teme] |
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//: |
- | * Păstrați (cu sfințenie am adăuga) principiile OO: | + | |
* păstrați încapsularea | * păstrați încapsularea | ||
* folosiți polimorfismul | * folosiți polimorfismul | ||
- | * abstractizați și programați "by contract" [TODO link] | + | * abstractizați și programați [[http://www.javapractices.com/topic/TopicAction.do?Id=194|"by contract"]] |
<note important> | <note important> | ||
Disclaimer: șansele sunt ca temele să fie mai dificile decât laboratoarele. | Disclaimer: șansele sunt ca temele să fie mai dificile decât laboratoarele. | ||
- | Pentru rezolvarea lor, deși nu vă cerem tehnici sau cunoștințe în plus față de laboratoare, va fi probabil nevoie de research individual. | + | Pentru rezolvarea lor, deși nu vă cerem tehnici sau cunoștințe în plus față de laboratoare, va fi probabil nevoie de mai multa documentare individuală. |
Vă stăm la dispoziție pe forumuri sau la email-urile de pe pagina principală. | Vă stăm la dispoziție pe forumuri sau la email-urile de pe pagina principală. | ||
Line 34: | Line 32: | ||
== Depunctări generale pentru teme == | == Depunctări generale pentru teme == | ||
- | Submisiile pe care le primim **trebuie să compileze și să ruleze** pentru a avea posibilitatea de punctaj non-zero. | + | Temele pe care le primim **trebuie să compileze și să ruleze** pentru a avea posibilitatea de punctaj non-zero. |
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ă când vă generați comentarii Javadoc | + | * între -0.1 și -0.5 - comentarii absente sau irelevante |
- | * -0.1 metode lungi (> 150 de linii) | + | * -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 | + | * (variabil, începând de la -0.2) Javadoc necorespunzător, incomplet, irelevant; inclus și documentarea lipsă sau incorectă a parametrilor metodelor |
- | * -0.1 cod comentat | + | * -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. |
- | * -0.1 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, î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 | + | **Design, implementare:** |
- | * folosiți polimorfismul în schimb | + | * -0.5 - cod duplicat |
- | * -0.2 Javadoc necorespunzător, incomplet, irelevant; inclus și documentarea lipsă sau incorectă a parametrilor metodelor | + | * î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) | ||
+ |