Gle, gle... Gde ima dima - ima i Dimkovića :)
Šala, naravno... Ivane, bilo bi lepo da češće svraćaš na "ove" forume.
Topic
Nerealno je očekivati da bilo koja "ozbiljna" biblioteka klasa, nakon niza godina, verzija i
usavršavanja, i dalje ostane 100% kompatibilna sa "samom sobom" od svog nastanka.
Primarno, zato što Operativni sistemi nemaju svoj "konačan" oblik i smisao, nego se
menjaju prilično često. GUI biblioteke se trude da isprate sve te novotarije i sasvim je
OK da nakon nekog vremena izvrše "reorganizovanje" sopstvenih interfejsa u skladu sa
novinama. Očuvanje kakve-takve kompatibilnosti sa starim kodom bi vremenom dovelo
do (IMHO) još većeg haosa. Po meni, bolje je raskrstiti sa zastarelim stilovima odmah i
zauvek.
Na primer, danas je Title Bar naslov - "prost" tip podatka. Ko zna u kakvom složenom
obliku i u kakvoj organizacionoj hijerarhiji će on biti za koju godinu/deceniju. Čak i kada
bi se održala kompatibilnost i pređašnja funkcionalnost, pitanje je da li bi to bilo ono
što programer sada hoće, kad vidi šta sve taj Title Bar može. To dakle opet dovodi do
menjanja koda.
Pravljenje nekakvih apstraktih interfejsa spektakularnim kombinacijama Design Patterna
bi verovatno toliko opteretilo biblioteku i otežalo sam razvoj, da bi njena upotrebljivost
postala pod znakom pitanja.
Ja želim sledeće: da krenem u razvoj neke ozbiljne aplikacije, uz moguće potrebno učenje
(ako je potrebno), ali da znam da kroz nekoliko godina neću morati da menjam ceo kod
zato što je nekome palo na pamet da naruši kompatibilnost unazad. Bitna mi je prvenstveno
kompatibilnost na nivou izvornog koda.
Dok sam radio u jednoj firmi koja je razvijala jedan "veliki" projekat, javili su se slični
problemi. Jedino rešenje koje je vraćalo iz haosa je bila tzv. "komponentizacija":
1) revizija svih interfejsa svih postojećih podsistema (razdvajanje šta je čije)
2) reverzni inženjering sa Rational Rose u UML oblik
3) razvoj 100% koordinisan UML-om.
Dakle, kada smo znali "šta" hoćemo, nije bilo teško ni ono "kako ćemo", bez obzira na
neminovne izmene u kodu.
Kod tebe je još pozitivno to što ne moraš da praviš slične greške, nego odmah imaš
šansu da započneš kako treba.
Takođe dajem glas za wxWidgets.
(jednom, kada sam razgovarao o sličnoj dilemi sa kiklopom74 (a u njega imam beskonačno
poverenje kada je to u pitanju), odluka je takođe pala na wxWidgets, tako da...)
P.S.
Nemoj se uvrediti zbog ovih rečenica gore, jer se prosto "ospem" po telu kad mi neko
pomene kompatibilnost, prenosivost... U onoj firmi koju gore pomenuh, nismo lako uspeli
da "prenesemo" isti kod iste biblioteke klasa - kada smo stari kompajler zamenili novim,
a kamo li kada su bile uključene i druge okolnosti.