>> Tai mano siūlomame variante viskas irgi veiktų _be_jokių_pasikeitimų_. > > Tai būtent, kad NE. Tikrai netapačiai. Nejaugi sunku tai įžvelgti? Aš > šiuo atveju nenoriu pritempti prie konkrečios situacijos, o kalbu labiau > apibendrintai (jei jau tu, tokioje nevienareikšmiškoje, nors > akivaizdžioje situacijoje, neįžvelgdamas grėsmių, nematai, kaip tavo > pakeitimai įtakoja programos veiksenos pasikeitimus, tai neabejotinai > paslystum kur kas delikatesnėse situacijose). > > A (globali nuostata) B (tavo būdas) > 50-100 aplankų 50-100 aplankų > kuriami nauji aplankai kuriami nauji aplankai > > Tai nejaugi tau neakivaizdu, kad įjungus/išjungus globalią nuostatą, > visi šie punktai (kurių dar galbūt yra ir daugiau) veikimo prasme A ir B > variantuose išsiskiria. Išjungus, A variante, nereikia to daryti 50-100 > kartų atskirai visiems aplankams, kaip tai reikėtų daryti B variante. O > jei jau reikėtų pagalvoti apie poreikį vėl įsijungti globalią nuostatą? > Aha, ir vėl 50-100 aplankų spragsėti pelyte ir dėlioti varneles? > Kuriami nauji aplankai A atveju paklūsta globaliai nuostatai, ko jau > nebėra B atveju. O dabar pasamprotaujame konkrečiai. Variantas B (mano). Įsidiegiant nauja programos versija patikrina parametrų failą ir, radusi nuostatą, kad globaliniu lygiu reikia priverstinai naudoti tam tikrą koduotę, priskiria tokias nuostatas visiems rastiems aplankams (tipo, kad programa veiktų kaip ir anksčiau), o tą nuostatą iš parametrų failo pašalina. Kadangi nauja programos versija tos nuostatos nebeturi, jos keisti nebegalima, tai logiška, kad ir parametrų faile ji nereikalinga (šviežiai įdiegtų TB 3+ parametrų faile tokios nuostatos ir nėra). Toliau programa veikia kaip ir turi veikti, kiekvienam aplankui vartotojas gali keisti nuostatą ar numatytoji koduotė bus taikoma priverstinai. Variantas A (de facto). Įsidiegiant nauja programos versija patikrina parametrų failą ir, radusi nuostatą, kad globaliniu lygiu reikia priverstinai naudoti tam tikrą koduotę, naudoja tokią nuostatą visiems rastiems aplankams (tipo, kad programa veiktų kaip ir anksčiau). Ir ji ne tik palieka tą nuostatą parametrų faile, bet teikia jai pirmenybę prieš atskirų aplankų nuostatas (t.y. teikia pirmenybę nebepalaikomai nuostatai prieš palaikomą nuostatą). Vartotojas gali kiek nori seniems ir naujai sukurtiems aplankams uždėjinėti ir nuiminėti paukščiukus, jis negali pakeisti programos veikimo - visiems aplankams numatytoji koduotė taikoma priverstinai. Net jei vartotojas galvoja, kad turėtų būti kažkokia globali nuostata, jis jos neranda, nes nauja versija jos nepalaiko (nors de facto ja vadovaujasi). Visiškai neaišku, kokias problemas sukelia ar gali sukelti B variantas. Tuo pat metu visiškai aišku, kokias problemas sukelia A variantas. Pristigę logikos programuotojai sukuria jovalą, dėl kurio programa pradeda veikti klaidingai (nebeveikia turinčios veikti ir vartotojui reikalingos funkcijos), jei programa parametrų faile aptinka tam tikrą pasenusios nuostatos pasirinkimą. >> įvykus vienos nuostatos perkėlimui visiškai bereikalingai inaktyvuojama >> galimybė keisti kitus parametrus, t.y. programa nebeveikia taip, kaip >> turėtų veikti. O tai yra apsižioplinimas, nedadirbimas. > > Ne INaktyvuojama, o tiesiog NEAKTYVUOJAMA (neįjungiama). Tai esminis > skirtumas. Esminis, nes inaktyvuoti reiškia modifikuoti esamą veikseną, > o neaktyvuoti naujų savybių — NE. Kad ir kiek tu matytum skirtumo tarp inaktyvavimo ir neaktyvavimo, rezultatas tas pats - vartotojas dėl nesuprantamų priežasčių praranda dalį programos funkcionalumo, ir, kas dar labiau glumina, jam lyg ir sudaroma to funkcionalumo iliuzija, bet realiai tai neveikia. > Tokios problemos apskritai neturi naujas naudotojas, kuris dėl paslėptos > globalios nuostatos ja nebesinaudoja ir pradeda naudotis programa (ir > jos naujomis savybėmis) nuo pradžių. Na, jei tokias problemas turėtų ir naujas vartotojas, tai būtų totalus "pravalas". Bet visiškai nebūtina jų sukurti ir senam vartotojui. Yra aibė būdų jų ne tai kad išvengti - tiesiog nesukurti, vienas iš būdų yra kad ir mano variantas B.