Pînă în 2010, amărăștenii care scriau cod în Visual Basic, pentru a implementa o banală proprietate, aveau de scris cam atîta cod:
Private NumeLocal As String
Public Property Nume() As String
Get
Return NumeLocal
End Get
Set(ByVal value As String)
NumeLocal = value
End Set
End Property
Două observații:
- nu trebuiau să scrie nefericiții tot codul ăsta ci doar PROPERTY și la apăsarea tastei TAB el apărea automat după care mai trebuiau editate totuși două zone (numele variabilei locale și numele proprietății).
- puteau să folosească pur și simplu o variabilă publică în loc dar nu mergeau unele lucruri legate de databinding sau alte chestiuni exotice.
Cînd aveai o clasă care nu avea deloc funcționalitate, doar 20 de proprietăți d-astea, aveai 3 pagini de cod în loc de o treime de pagină. Nu trebuia să-l scrii pe tot literă cu literă dar de multe ori trebuia să-l citești sau parcurgi. Frumos limbaj…
Cu infirmitatea asta s-a născut Visual Basic în 2002 și cum nimeni de la Microsoft nu îl folosește, au aflat abia tîrziu și pe căi ocolite că asta ar putea fi o problemă pentru unii. Așa a trecut peste noi versiunea 2003, versiunea 2005 și apoi 2008, în total 8 ani de avansuri neîntrerupte ale științei. În toții anii ăștia s-au luptat cu tipurile anonime, cu continuatorul opțional de linii, au avut probleme serioase de rezolvat. Urîțenia definirii unei proprietăți era minoră comparativ cu nevoia maselor nespălate de a nu mai folosi atît de des continuatorul de linie (underscore) sau lenea de a te hotărî pe un tip sau altul de date cînd vrei să definești o variabilă și te așteaptă colegii să mergeți la o bere.
În anul de grație 2010, după ce au învins și LINQ-ul cu 7 capete, au terminat și cu tipurile anonime și cu underscorurile (“decît parțial”), au dat gata și literalii XML, expresiile lambda, covarianțe și contravarianțe – au ajuns în final și la problema extrem de rar întîlnită în lumea reală a definirii de proprietăți.
De acum, pentru o simbolică donație pentru upgrade, amărăștenii de programatori în VB pot scrie în sfîrșit proprietățile simple așa:
Private Property Nume As String
Revoluționar! Cine s-ar fi gîndit? Le-a luat 8 ani dar au reușit. Dintr-o dată am scăpat într-o singură soluție de 2000 de linii (atent generate automat în versiunile anterioare). Mă face să simt că merită cele “decît” 5 crash-uri zilnice ale mediului de dezvoltare, venite la pachet împreună cu binecuvîntarea.
Întrebare: oare se putea face ceva și pentru bietele proprietăți read-only?
io niciodata n-am inteles care-i covariantu` si care contravariantu`
Care-i covariantul nu mi-e nici mie clar dar dacă îl lăsăm pe ăsta nespecificat (variabilă sau generic mai bine), contravariantul cred că e aproape fix invers.
si primul fiind nespecificat, al doilea ii aproape fix invers fata de nimic, adica e totul? inclusiv covariant?
nu, nu cred că e corect. cred că e contracorect.