Mfano uliopitishwa uliopingana na Kikokotozi wake wenyewe
Ninaendesha tovuti ya kikokotozi wa gharama za uboreshaji wa nyumba.
Kila ukurasa unaonyesha gharama katika sehemu nne:
- Widget inayofanya kazi (interactive widget).
- Jedwali la marejeleo lisilotofautiana (static reference table).
- Mifano iliyoandikwa kwenye maandishi.
- Sehemu ya FAQ.
Niligundua hitilafu kubwa. Mfano uliokuwa umeandikwa ulisema mradi uligharimu $62,300. Widget ilisema mradi huo huo uligharimu $56,779.
Kulikuwa na tofauti ya $5,500.
Namba hizo hazikuwa za kubahatisha. Zilitokana na dhana tofauti zilizofichika. Maandishi yalichukulia kuwa kuna kifaa kipya cha HVAC. Widget ilichukulia kuwa utatumia mfumo uliopo. Zote zilikuwa sawa, lakini hazikuwa na mawasiliano kati yake.
Hili ni kosa la kawaida. Unapohifadhi ukweli uleule katika sehemu mbili, huanza kutofautiana. Haufanyi marudio ya maudhui tu. Unafanya marudio ya data.
Nilitatua hili kwa sheria ninayoita source-first. Ina sehemu mbili.
Sehemu ya kwanza: Gharama inapaswa kuwepo sehemu moja tu.
Niliacha kuandika namba kwenye maandishi na majedwali yangu. Sasa, kazi ya kikokotozi (calculator function) ndiyo chanzo pekee. Majedwali na mifano iliyoandikwa huchukua namba zao moja kwa moja kutoka kwenye kazi hiyo wakati wa mchakato wa ujenzi (build process). Ikiwa kazi hiyo itabadilika, kila namba kwenye ukurasa itabadilika kiotomatiki. Huwezi kuwa na kutofautiana kwa sababu namba hizo zina thamani sawa.
Sehemu ya pili: Kila namba lazima ionyeshe asili yake.
Data ya gharama si ukweli wa kudumu. Ina muda wake wa kuisha. Niliongeza data object ndogo kwenye kila ukokotoaji. Inaonyesha:
- Scenario iliyotumika.
- Chanzo cha data.
- Tarehe ilipofikiwa.
- Lini data inapaswa kupitiwa.
Hii inafanya data iwe ya kweli. Ikiwa data ya chanzo ni mbaya, tovuti nzima itakuwa mbaya. Lakini angalau tovuti itakuwa na msimamo mmoja. Mtumiaji hugundua mkanganyiko mara moja. Hilo huharibu uaminifu.
Somo ni rahisi:
- Ikiwa sehemu mbili kwenye ukurasa zinaonyesha namba sawa, moja inapaswa kuichukua (import). Usiandike tena.
- Tumia mchakato wako wa ujenzi (build process) kusawazisha (sync) data. Hii inageuza tatizo la nidhamu kuwa hali isiyowezekana kiteknolojia.
- Acha kuandika kwa mkono namba ambazo kazi (function) tayari inazikokotoa.
Nilitumia siku nzima kufuta namba badala ya kuziandika. Codebase yangu ni ndogo na haimdanganyi tena watumiaji wangu.
Chanzo: https://dev.to/mark_b5f4ffdd8e7cd58/the-worked-example-that-disagreed-with-its-own-calculator-4cp9