[MFC] Este necesara utilizarea STL intr-o extensie MFC?

Despre MFC, ATL si alte biblioteci C++ de la Microsoft (forum moderat)
Locked
User avatar
Ovidiu Cucu
Fondator
Fondator
Posts: 3778
Joined: 11 Jul 2007, 16:10
Judet: Iaşi
Location: Iasi
Contact:

[MFC] Este necesara utilizarea STL intr-o extensie MFC?

Post by Ovidiu Cucu » 18 Jun 2011, 15:37

Intrebare
Este necesara utilizarea STL (Standard Template Library) intr-o aplicatie/extensie MFC?

Raspuns
Nu, in majoritatea cazurilor nu este necesara.
  1. Clasele container din STL au echivalentul in MFC, atat template (CArray, CList, CMap) cat si non-template (CObArray, CStringArray, CStringList, CMapStringToString, etc).
  2. CString este wrapper "natural" peste functiile WinAPI/CRT care manipuleaza stringuri. MFC-ul ca intreg este un wrapper peste WinAPI, deci CString ofera metodele care trebuie in applicatiile ce folosesc MFC.
  3. Clasele MFC au implementata serializarea, cele din STL, nu.
  4. Clasele MFC sunt mai usor de folosit atunci cand se dezvolta variantele ANSI si UNICODE.
  5. Functia de sortare este built-in in diferite controale (combobox, listview, etc). Daca este necesara sortarea unui recordset aceasta se poate face direct din query. Daca musai apare necesara in cod, atunci exista functia ANSI qsort. Ce ramane pentru std::sort e doar "moft".
  6. Alte functii STL "puternice" sunt rar folosite intr-o aplicatie MFC.
  7. Codul sursa MFC este usor de inteles pentru cineva familiarizat cu WinAPI. Codul sursa STL arata ca un fel de "gibberish" chiar si pentru avansati.
  8. In general, erorile de compilare datorate STL-ului sunt "kilometrice" deci greu de "tradus".
  9. Documentatia MFC-ului e mai usor de "rasfoit", ofera mai multe exemple si e mai usor de inteles decat cea pentru STL.
  10. STL este de obicei ultimul capitol din C++ pe care-l invata un programator. Pentru majoritatea programatorilor MFC, STL-ul este un over-kill care le face viata mai grea.
  11. Odata ce folosim MFC, nu se pune problema de portablitate / cross-platform in care utilizarea STL ar fi justificata.
  12. Multe dintre argumentele de performanta STL vs. MFC cad la un benchmark serios. Chiar si atunci cand STL bate MFC, diferenta de performanta este sau practic nesemnificativa sau rezultata in urma unor teste nerealiste.
  13. Last but not the least. O aplicatie este cu atat ma fiabla si mai usor de intretinut cu cat are amestecate cat mai putine tehnologii/biblioteci. Este un principiu universal valabil, nu numai in programare.
Note
  1. Argumentele de mai sus nu exclud totusi utilizarea STL intr-un proiect MFC, daca se considera absolut necesar.
  2. Daca se foloseste STL intr-un proiect MFC, ar fi bine ca partea de STL sa fie pusa intr-un modul separat si nu sa fie amestecata cu partea de MFC.
  3. Acesta este un subiect controversat si exista si pareri contrarii. Raspunsul de aici reprezinta parerea mea in urma experientei acumulate ca programator MFC. In consecinta, nu-l luati ca "litera de lege" in cazul ca va intreaba cineva la interviu. ;)
Vezi si << Back to MFC index



Locked