Un nou exerciţiu TDD - widget basket

Un nou exerciţiu TDD - widget basket =================================== joi, 21 octombrie 2010 Idea ---- Nimic nu poate înlocui experienţa. Numai dacă faci un anumit lucru de mai multe ori, analizezi cum a mers, corectezi procesul şi o ei de la capăt, numai aşa ajungi să fii maestru la ceea ce faci. Cu paşi mici, în fiecare zi. De asta mai fac un exerciţiu de TDD. :) De fiecare dată, chiar dacă simt că nu e perfect, faptul că maniera asta de programare mă scuteşte de griji, mă încurajează să mai încerc odată. Asta fac acum. Am o idee de proiect, ceva nu foarte voluminos, dar totuşi sper eu util pentru cineva ca mecanism. E bine că nu e foarte mare, pentru că anume cu încercări mici e cel mai bine să te antrenezi. Dacă încerci să faci muşchi cu o grutate prea mare, vezi că nu poţi, te demoralizezi şi renunţi. Dacă iei ceva prea uşor însă, nu rişti nimic, te gîndeşti "Hm... e prea uşor! Hai să iau ceva un pic mai greu!", şi dacă menţii pasul mic, cîte o leacă, cîte o leacă te mişti spre ce ai în gînd. Şi dacă te trezeşti la un moment dat că ai luat prea mult, dai un pic înapoi, continui cu aceeaşi "greutate" şi mai încerci odată mai tîrziu. Cu paşi mici dar siguri. Mecanismul ---------- Deci, mecanismul pe care vreau să-l construiesc e un coş de cumpărături care poate fi uşor montat, ca un widget, în orice catalog, sau ceva care seamănă a catalog, să permită colectarea produselor din catalog şi după aceea să le trimită undeva pe server. Diferenţa de bază e aceea că pe durata colectării, pînă la trimiterea lor pe server, produsele se păstrează în browser, în cookies sau HTML5 storage. Coşurile de cumpărături "clasice" stochează datele pe server undeva într-o bază de date şi la navigarea pe pagini, de fiecare dată se scoate din bază. Mecanismul am de gînd să-l fac aşa: injectez cu JavaScript butoane "adaugă în coş" undeva lîngă fiecare produs, care să adauge produsul respectiv în coş: tot cu JavaScript îl împachetez şi-l stochez undeva în cookie sau HTML5 storage. TDD --- Desigur vreau să fac asta prin metoda Test Driven Development: întîi scriu un test care să verifice o parte din mecanism, şi după aceea implementez. Dacă testul trece, ştiu că bucăţica ceea de funcţionalitate lucrează şi o să pot verifica asta automatizat, foarte rapid, la fiecare pas din dezvoltare, la fiecare modificare a codului, asftel fiind sigur că nu am stricat nimic. :) Un test, o bucăţică de funcţionalitate; un test, o bucăţică de funcţionalitate, şi tot aşa, cu paşi mici pînă la sfîrşit. Chiar dacă de la început e destul de greu să gîndeşti în acest fel, adică să verifici ceva care nu e implementat, cu-ncetul cu-cetul asta se învaţă. Chiar dacă am prins un pic firul, nici eu nu fac treaba asta perfect, dacă există aşa ceva. :) De multe ori pe parcursul dezvoltării îmi dau seama că unele lucruri poate e mai bine să le fac altfel, cumva mai bine. Dar cînd mă gîndesc că iar va trebui să verific tot ce am făcut să mă asigur că "intenţa mea bună" nu a stricat ceva prin altă parte, mi-e frică şi zic că mai bine las aşa. Cu TDD poţi verifica automatizat şi foarte repede codul, şi să te afli repede dacă ai stricat ceva sau nu. Dacă te mişti cu paşi mici, faci o mică modificare aici, rulezi testele, dacă s-a stricat ceva, repari unde s-a stricat să revii la verde (cînd toate testele trec) şi după asta iar te simţi sigur, şi iar mai faci o mică modificare. Şi tot aşa, cîte un pas mic, înainte. Fac commit după fiecare test nou care trece. Aşa dacă mă rătăcesc şi mă trezesc că m-am împotmolit, cum am păţit ieri, mă pot întoarce uşor la o poziţie stabilă şi o iau de la capăt, de pe un loc curat, unde totul mergea bine. Pentru versionare folosesc Git: foarte super extraordinar! Nu se compară cu nici un sistem de versionare cu care am lucrat pînă acum. =) Asta desigur după ce am citit o cărţulie: "Pro Git", dacă vrei să arunci o privire, se poate descărca de aici: http://www.mediafire.com/?b9g71ho4yuhy8yo (sunt şi popup-uri şi reclame). Codul e pe GitHub: http://github.com/gurdiga/basket-widget, asta înseamnă că poţi face comentarii la fiecare commit, sau chiar la fiecare linie. Comentarii ---------- Ca de fiecare dată, comentariile sunt binevenite la vlad@html.md, sau acum, la cod, direct pe GitHub. După cum ziceam acolo poţi face comentarii la fiecare commit şi la fiecare linie de cod în parte. Numai bine.
Sursa
2010-10-21 17:47:00



Comenteaza





Ultimele 25 posturi adăugate

15:33:45Cine a trăit aici înainte de daci? Ce dezvăluie ADN-ul —» Curaj.TV | Media alternativă
12:39:32Mă simt un mesager al culturii moldovenești… —» Biblioteca de Arte 'Tudor Arghezi'
09:16:54Federația Moldovenească de Fotbal a creat Fondul destinat susținerii Centrelor de Pregătire a Copiilor și Juniorilor din Republica Moldova 💲 —» Sandu GRECU
08:33:35Patru stiluri, o confirmare: Radacini ia aur la Mondial de Bruxelles —» Fine Wine
05:50:28DESCHIS MIRĂRII —» Leo Butnaru
16:32:18„O afacere europeană înseamnă să fii mereu alături de oameni, prin fapte reale” – Cristina Aramă, Manager Afaceri Corporative, Kaufland Moldova 💫 —» Sandu GRECU
08:52:29Agenția de Investiții lansează un nou apel pentru ediția 2026-2027 a Programului BRIDGE Export: Granturi pentru consolidarea prezenței produselor moldovenești pe piețele externe 🌉 —» Sandu GRECU
08:43:26Republica Moldova lansează platforma oficială www.moldova.md, un nou instrument de prezentare a țării 💫 —» Sandu GRECU
18:24:00Nicolae Usatîi: Mi s-a propus să-l kidănesc pe tata. Secretul Petrocub. Schemele din fotbal 💥💥💥 —» Sandu GRECU
11:33:39Achiziții noi, 2026 —» Biblioteca de Arte 'Tudor Arghezi'
07:13:13DIN REVISTA TINERILOR —» Leo Butnaru
14:49:09Proiect inedit în vinuri: Calendar —» Fine Wine
19:51:38Datele a 50.000 de cetățeni ai Republicii Moldova pe Dark Web —» Curaj.TV | Media alternativă
19:51:38Datele a 50.000 de cetățeni ai Republicii Moldova pe Dark Web —» Curaj.TV | Media alternativă
04:24:49patriarchy and capitalism —» turn up the silence
06:21:22Luna mai a adus mai multe solicitări pentru bibliotecare —» BPR Ungheni's Blog
21:35:18Aceeași scenă, alt unghi —» APort | "Pentru un român care știe citi, cel mai greu lucru e să nu scrie." I.L. Carag
05:31:28JURNALUL LUI ORFEU —» Leo Butnaru
17:07:46De la Polul Nord la Polul Sud: o aventură de 73.000 de kilometri, transpusă într-o carte lansată la Ploiești —» Curaj.TV | Media alternativă
17:07:46De la Polul Nord la Polul Sud: o aventură de 73.000 de kilometri, transpusă într-o carte lansată la Ploiești —» Curaj.TV | Media alternativă
12:50:40🌞 Ce urmează după aderarea la UE? Asociația „Smart City” lansează o campanie națională bazată pe experiența de succes a României —» Sandu GRECU
12:37:37TEMELE DE BAZĂ —» Leo Butnaru
11:05:05Benzi desenate —» Biblioteca de Arte 'Tudor Arghezi'
06:59:17🏆 Școala Sportivă „Dumitru Atanasov” Sîngerei organizează prima ediție a Turneului Internațional de Handbal „Memorialul Simion Prașcă” —» Sandu GRECU
06:39:44Alluria Wine — bijuteria enoturistică a Armeniei —» Fine Wine