sobota, 3 marca 2012

"Legacy code" a możliwości C++

Być może niektórzy czytelnicy mojego bloga nieco "przestraszyli się" poprzednimi wpisami. Dzisiaj będzie coś łatwiejszego i mam nadzieję, że wiele osób będzie mogło wykorzystać w swoich projektach informacje zawarte w niniejszym wpisie już dziś.

W większych projektach bardzo często sięga się do bibliotek stworzonych przez osoby postronne. Ma to wiele zalet: oszczędzamy w ten sposób czas, spodziewamy się, że funkcjonalność zawarta w bibliotece jest napisana poprawnie, a wykorzystane algorytmy są optymalne itp. Jednakże często bywa, że znajdujemy świetnie nadającą się do naszego projektu bibliotekę, ale napisaną np. w języku C. Przykładowo funkcje tej biblioteki alokują pamięć na stercie, a dołączona dokumentacja informuje nas, że to my (jako użytkownicy biblioteki) powinniśmy pamiętać o jej zwolnieniu (za pomocą odpowiednich funkcji wchodzących w skład biblioteki). Dodatkowo używane funkcje mogą zakończyć się niepowodzeniem, co powinniśmy wykrywać za pomocą zwracanych przez nie wartości, bądź pilnować jakiejś globalnej flagi. Krótko mówiąc: typowa biblioteka napisana w języku C. A my lubimy C++... ;)

Zaprezentuję dziś na przykładzie, jak można radzić sobie przypadkami takimi jak opisany powyżej. Zapraszam do lektury.