Astăzi a cerut o întrebare interesantă - cum și în cazul în care pentru a stoca variabile globale. Omul folosit pentru a crea Delphi într-un modul separat, care stochează variabile și metode globale. Aceasta este o mare problemă Delphi, el a fost capabil de a crea variabile globale. În conformitate cu regulile de OOP ar trebui să fie nici o astfel de oportunitate, iar în C # acest lucru nu este posibil!
1. Este necesar ca o variabilă poate fi accesat de oriunde? Dacă nu, creați o proprietate în oricare din clasa corespunzătoare.
2. Poate sensul variabilei se referă la orice clasă? Dacă da, din nou, de a crea o proprietate în oricare din clasa corespunzătoare.
3. Poți logică de cod în clase cu o interfață vizuală? În acest caz, cel mai bine este de a elimina codul, și începe să scrie din nou, doar codul de proiectare, nu sculpta.
Dacă te gândești „da ai zadolbal doar spune-mi cum să facă o variabilă globală sau metoda“, în acest caz, spun pur și simplu:
În astfel de cazuri, C # și alte limbi obiect real, folosind variabile și metode statice. Doar a crea un fișier în care va arunca intreaga gunoi la nivel mondial:
Acum, oriunde în program puteți face referire la variabile și metode ca: GlobalTrash.MyGlobalTrash.MiGlobalVariable = 10;. Dar, încă o dată vreau să consilieze creați variabile globale în ultimă instanță.
În principiu, nu puteți crea o clasă separată și spațiul de nume, și de a folosi clasa program, astfel încât deja în program în fișierul Program.cs.
Spider_NET
Acest lucru îmi place C #. După trecerea de la Delphi am fost al naibii de ciudat, dar apoi mă simt despre această funcție. Și codul este mai ușor să se mențină (mă refer statică), și într-un fel în minte, spre deosebire de Delphi.
Deși se referă la versiunea veche a delfinilor. Cea mai recentă versiune, Delphi are așa-numitele metode de clasă / variabile - statice ala.
Tot la fel, bine, că Delphi continuă să se dezvolte.
psiho-coder
Am scris odată un client pentru MySQL la C ++. NET (pervertirea desigur), dar a trebuit să fie undeva la setările de magazin (parola, numele de utilizator, port, numele bazei de date, etc.). A trebuit să fac peste variabile globale, deoarece Ferestrele erau mulți, era imposibil să se atribuie la ceea ce acea clasă, și poate că se poate (în minte nimic nu a venit).
Cum să fie în astfel de cazuri?
Mai mult namuchalsya cu transfer de date între matrițelor, în care era posibilă în mod direct de la o formă la alta, iar în cazul în care numai prin intermediul Globes (
Michael Flenov
De ce setările de conexiune nevoie de Windows? Ei au nevoie de ea într-un singur caz - în codul de acces la baza de date pentru a fi în sălile de clasă cu ferestre. Acest lucru este foarte rău. Este necesar să se facă distincția cazului.
Uita Delphi ca un coșmar
Michael, de ce este atât de desconsiderare?
Fie că a fost corect să spunem „uitați-vă abilitățile incorecte de codificare pe Delphi, ca un vis urât.“ Însăși mediul Delphi ceva să nu vină.
Abilitatile orientate-obiect Delphi mai slabe decât în C #?
În cărțile normale Delphi în alb-negru nu este recomandat să folosiți variabile globale.
Și nimic nu împiedică în Delphi, cât și în exemplul dvs. pentru C # folie de toate variabilele globale într-o clasă și să le accesați prin proprietățile.
Delphi este complet orientat-obiect limbaj de programare. Și nimic nu împiedică codifica o folosind „avansat“ (100% -tno orientate pe obiect).
psiho-coder
Mmm. Ai nevoie să arunce codul pentru a accesa baza de date într-o clasă separată? Apoi, atunci ai nevoie pentru a transfera date dintr-o clasă care urmează să fie derivate din baza de date, în clasa ferestrei și completați toate câmpurile care datele?
Michael Flenov
Delphi - limbaj foarte bun. Dar orice programator care a trecut de la Delphi la C # trebuie să uite aproape tot ceea ce a făcut în Delphi.
De asemenea, spun orice programator care se deplasează de la C # sau Java pe Delphi - „sigur la C # și Java“. În caz contrar, să nu fie în măsură să scrie un proiect de succes.
Scrierea poate fi într-adevăr la fel, dar acest lucru nu este întotdeauna necesar. Doar în aceste limbi și biblioteci abordare diferită. Eu cred că necesitatea de a scrie într-o limbă și avantajele sale. Și nu încerca să pună în aplicare în limba avantajele altora.
Michael Flenov
Stai o notă separată
Michael Flenov
Am decis totuși să nu scrie o notă.
Rezultatul poate fi un set de date, și poate fi chiar sub formă de matrice, și nu ca o masă.
Din nou, în Delphi, puteți face acest lucru, dar nimeni nu face, deoarece VCL în sine este scris în stilul 70-xx ani si exemple sunt furnizate cu Delphi în stilul anilor '70.
psiho-coder
2Mihail
Mulțumesc. Va trebui să mă gândesc bine). Și un program trebuie să fie rescris de la zero, pentru că pentru a repara ceva care este nu există nici un sens.
[Offtop] Tocmai am dat seama că nu pot exprima în mod corespunzător ideea ((([/ offtop]
[QUOTE]
Delphi - limbaj foarte bun. Dar orice programator care a trecut de la Delphi la C # trebuie să uite aproape tot ceea ce a făcut în Delphi.
De asemenea, spun orice programator care se deplasează de la C # sau Java pe Delphi - „sigur la C # și Java“. În caz contrar, să nu fie în măsură să scrie un proiect de succes.
Scrierea poate fi într-adevăr la fel, dar acest lucru nu este întotdeauna necesar. Doar în aceste limbi și biblioteci abordare diferită. Eu cred că necesitatea de a scrie într-o limbă și avantajele sale. Și nu încerca să pună în aplicare în limba avantajele altora.
[/ Quote]
Bună ziua, Michael!
Pentru început, aș dori să-și exprime aprecierea și respectul nostru pentru cărțile tale. Doar recent, am învățat să programeze pe a doua ediție a Bibliei Delphi. Și ma ajutat să fac o „pornire rapidă“. A fost prima mea carte de hârtie pe programare.
Dar, eu încă mai doresc să-și exprime dezacordul cu tezele, cum ar fi „Amintiți-vă cum ați făcut-o în Delphi.“ Doar pentru că este doar în mare diferență de abordare între Delphi și sisharp nr. Există o diferență în conceptul, dar este programatorii de aplicații noastre nu le pasă prea mult.
Aici, de exemplu, am fost în proiectele lor nu folosesc rutine și variabile în afara claselor, și chiar trecerea de la modul de a forma o instanță globală a clasei în DPR-fișier.
Mai mult, evenimente, generice, metode anonime, și atribute am întâlnit la Delphi.
Citirea pe MSDN C #, aproape că nu a venit peste un revoluționar - de bază deja familiar Delphi, cu excepția dotneta chestii specifice.
Despre diferențele în arhitekure bibliotecile standard - da, RTL de bază se face într-un stil de procedură. Principalul motiv - performanta.
Dar principalul avantaj al Delphi VCL este doar același exemplu de realizare a abordării OEP, și a devenit Windows.Forms prototip.
Am toate au la faptul că nu este necesar să stea etichete pe delfistov se presupune că toate folosesc variabile globale. Aici el este dat libertatea și programator care decide, așa că am ales pentru mine și abordarea orientată pe obiecte.
De ce am învățat C #? Răspunsul este simplu: o bibliotecă standard de bogat, WPF, ASP.NET, și este mai ușor de a găsi un loc de muncă.
Cu stimă, Dmitry.
Michael Flenov
„Amintiți-vă cum ați făcut în Delphi“, deoarece Delphi pot folosi variabile globale, dar în C # pur și simplu nu au (pot să lipsesc ceva).
În C # și Delphi este încă mult diferit. VCL este foarte similar cu Delphi, dar ei doar arata. Personal, aceste limbi sunt mai mult pentru mine decât diferite similare.
Ei au fost inițial să fie similare, cel puțin pentru că acestea sunt proiectate de către aceeași persoană.
În primul rând sisharp multe pozaimstvoal de la Delphi, Delphi și împrumută acum sisharpa.
Deoarece C ++ este mult mai puțin similitudine, sintaxa nu este luată în considerare, deoarece nu contează.
Cineva nu-mi amintesc cine a spus că sisharp este de 75% și 25% Jawas Delphi. Acum, despre Delphi se poate spune că există 50% sisharpa.
Nu știu, poate că pur și simplu nu ai grija pentru cele mai recente versiuni de Delphi?
Michael Flenov
Șirul de conectare trebuie să fie disponibilă în întreaga aplicație. Ar trebui să fie disponibile doar una - două clase în care lucrează cu datele, iar în cazul în care veți fi obiecte SqlConnection.
Problema - într-una din clasele de asamblare bibliotecă trebuie să instalați un eveniment care s-ar fi văzut în adunarea principală, precum și a tuturor celorlalți în același timp.