Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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.
- Î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:
- ---
- ## Ce fel de proiect să cauți?
- Pentru a avea succes cu **DuDe**, caută proiecte care îndeplinesc aceste criterii:
- * **Limbaj:** Java sau C# (DuDe funcționează excelent pe acestea).
- * **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.
- * **Vechime:** Proiecte cu mulți contributori sau proiecte de licență mai vechi tind să aibă mai mult "technical debt".
- ### Sugestii concrete de proiecte:
- 1. **JFreeChart:** Un clasic pentru laboratoarele de SWE. E mare, are multe clase similare pentru grafice, deci duplicarea e garantată.
- 2. **Commons Lang (Apache):** Foarte bine structurat, dar poți găsi algoritmi similari aplicați pe tipuri de date diferite.
- 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.
- ---
- ## Cum structurezi raportul?
- 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:
- ### 1. Identificarea (The "Smell")
- Specifică fișierele, liniile de cod și tipul de duplicare.
- ### 2. Analiza cauzei
- De ce există duplicarea? (ex: "Programatorul a copiat logica de validare din clasa A în clasa B în loc să creeze un utilitar").
- ### 3. Soluția de Refactorizare
- Aici trebuie să aplici tehnici standard (din catalogul lui Martin Fowler). Cele mai comune sunt:
- * **Extract Method:** Dacă duplicarea e în aceeași clasă.
- * **Pull Up Method:** Dacă două subclase au metode identice, muți logica în clasa părinte (Superclass).
- * **Form Template Method:** Dacă metodele sunt similare, dar nu identice.
- * **Introduce Utility Class:** Dacă logica e folosită în locuri total diferite.
- ---
- ## Un mic sfat tehnic pentru DuDe
- 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).
- > **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.
- **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