Differences

This shows you the differences between two versions of the page.

Link to this comparison view

poo-ca-cd:arhiva:2021:administrativ:barem_teme [2022/10/01 17:47] (current)
alexandru.olteanu created
Line 1: Line 1:
 +===== Indicații pentru teme =====
 +
 +Temele urmăresc exersarea cunoștințelor și abilităților voastre.
 +
 +Așadar, urmărim nu doar cod care "​merge"​. Rezolvările voastre trebuie să nu fie //​predispuse//​ la erori și să poată fi citite/​parcurse/​înțelese cu ușurință.
 +
 +De asemenea, urmărim aplicarea principiilor orientate pe obiect. Acesta este unul dintre scopurile materiei și depășește limbajul de programare cu care lucrăm. Șansele sunt ca majoritatea codului pe care îl veți scrie ca software engineers să fie orientat-obiect. Vom urmări cu strictețe respectarea acestor principii în temele voastre.
 +
 +==== Recomandări ====
 +
 +  * 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.
 +  * Fiți consecvenți unui [[:​poo-ca-cd:​administrativ:​coding_style_ide|coding style]].
 +  * Când scrieți README-ul pentru teme:
 +    * nu reproduceți cerințele din enunț și/sau comentariile din cod
 +    * explicați ideile, deciziile și abordările voastre
 +    * exprimați-vă //​concentrat//​ = clar și concis
 +    * 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 principiile //Object Oriented//:
 +    * păstrați încapsularea
 +    * folosiți polimorfismul
 +    * abstractizați și programați [[http://​www.javapractices.com/​topic/​TopicAction.do?​Id=194|"​by contract"​]]
 +<note important>​
 +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 mai multa documentare individuală. ​
 +
 +Vă stăm la dispoziție pe forumuri, teams sau pe email pentru a vă răspunde la întrebări.
 +</​note> ​
 +
 +==== Depunctări generale pentru teme ====
 +
 +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:
 +
 +**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
 +  * între -0.1 și -0.4 - nepăstrarea consistenței pentru comentarii - fie sunt toate comentariile în engleză fie sunt toate în română.
 +  * î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.
 +  * între -0.1 și -0.3 - denumiri nepotrivite pentru metode, variabile, clase
 +   * -0.1 - bucăți de cod comentat
 +   * -0.5 - toate clasele într-un singur fișier
 +  * -0.3 - toate sursele puse într-un pachet
 +  * -0.1 - includerea altor fișiere care nu au legătură cu cerința
 +  * -0.1 - includere folder bin in arhivă
 +
 +**Documentare:​**
 +  * între -0.1 și -0.5 - comentarii absente sau irelevante
 +  * -0.1 - comentarii de tip TODO în cod
 +  * între -0. și -0.5 - Javadoc necorespunzător,​ incomplet, irelevant; inclus și documentarea lipsă sau incorectă a parametrilor metodelor
 +  * (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 și enum-uri î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
 +  * între -0.1 și -0.5 - clase și metode cu multiple roluri/​responsabilități/​side-effects. La prima tema se vor da mai mult drept warning. (-0.0).
 +  * -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
 +
 +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)
  
poo-ca-cd/arhiva/2021/administrativ/barem_teme.txt · Last modified: 2022/10/01 17:47 by alexandru.olteanu
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0