STANAANDREY

ces jfreeechart

Mar 2nd, 2026
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.76 KB | None | 0 0
  1. E o temă clasică de Software Engineering care te ajută să înțelegi că, în realitate, codul e "murdar". Alegerea sistemului (proiectului) este crucială: dacă alegi unul prea mic, nu găsești duplicări; dacă e prea mare, te pierzi în el.
  2.  
  3. Într-adevăr, se referă la un repository public (GitHub e cel mai bun prieten aici). Iată câteva recomandări de sisteme și cum să abordezi raportul:
  4.  
  5. ---
  6.  
  7. ## Ce fel de proiect să cauți?
  8.  
  9. Pentru a avea succes cu **DuDe**, caută proiecte care îndeplinesc aceste criterii:
  10.  
  11. * **Limbaj:** Java sau C# (DuDe funcționează excelent pe acestea).
  12. * **Dimensiune:** Între 5.000 și 20.000 de linii de cod (LoC). Destul de mare încât să aibă "copy-paste", dar destul de mic să-l poți parcurge.
  13. * **Vechime:** Proiecte cu mulți contributori sau proiecte de licență mai vechi tind să aibă mai mult "technical debt".
  14.  
  15. ### Sugestii concrete de proiecte:
  16.  
  17. 1. **JFreeChart:** Un clasic pentru laboratoarele de SWE. E mare, are multe clase similare pentru grafice, deci duplicarea e garantată.
  18. 2. **Commons Lang (Apache):** Foarte bine structurat, dar poți găsi algoritmi similari aplicați pe tipuri de date diferite.
  19. 3. **Un proiect propriu mai vechi:** Dacă ai un proiect de semestrul trecut cu +10 clase, e cel mai interesant de analizat pentru că știi contextul.
  20.  
  21. ---
  22.  
  23. ## Cum structurezi raportul?
  24.  
  25. După ce rulezi `inDuDe.sh` pe folderul sursă al proiectului, vei primi o listă de "clones". Iată cum să prezinți cele trei refactorizări cerute:
  26.  
  27. ### 1. Identificarea (The "Smell")
  28.  
  29. Specifică fișierele, liniile de cod și tipul de duplicare.
  30.  
  31. ### 2. Analiza cauzei
  32.  
  33. De ce există duplicarea? (ex: "Programatorul a copiat logica de validare din clasa A în clasa B în loc să creeze un utilitar").
  34.  
  35. ### 3. Soluția de Refactorizare
  36.  
  37. Aici trebuie să aplici tehnici standard (din catalogul lui Martin Fowler). Cele mai comune sunt:
  38.  
  39. * **Extract Method:** Dacă duplicarea e în aceeași clasă.
  40. * **Pull Up Method:** Dacă două subclase au metode identice, muți logica în clasa părinte (Superclass).
  41. * **Form Template Method:** Dacă metodele sunt similare, dar nu identice.
  42. * **Introduce Utility Class:** Dacă logica e folosită în locuri total diferite.
  43.  
  44. ---
  45.  
  46. ## Un mic sfat tehnic pentru DuDe
  47.  
  48. Tool-ul **DuDe** (Duplicate Detector) funcționează pe bază de text comparison. Uneori poate da "false positives" (crede că e duplicare, dar e doar boilerplate code).
  49.  
  50. > **Atenție:** Când rulezi `.sh`-ul, asigură-te că ai permisiuni de execuție (`chmod +x inDuDe.sh`) și că ai Java instalat, deoarece face parte din ecosistemul iPlasma.
  51.  
  52. **Vrei să te ajut să cauți un proiect anume pe GitHub sau ai nevoie de un exemplu concret de cum să scrii una dintre cele trei refactorizări?**
Add Comment
Please, Sign In to add comment