[ Pobierz całość w formacie PDF ]
//-->25. Wiązanie kolumn bazy danych ..................................................................................... 8726. Wykorzystywanie iteracji i technik generowania kosztownych danych ............... 8927. Pobieranie z iteratora więcej niż jednej wartości ....................................................... 91Rozdział 4. Praca z modułami ..................................................................................................... 9528.29.30.31.32.33.34.35.36.37.38.39.40.41.42.Skracanie długich nazw klas ......................................................................................... 95Zarządzanie ścieżkami do modułów ........................................................................... 96Ponowne ładowanie zmodyfikowanych modułów ................................................... 99Przygotowywanie osobistych zestawów modułów ................................................ 100Zarządzanie instalowaniem modułów ...................................................................... 103Zachowywanie ścieżek do modułów ......................................................................... 105Tworzenie standardowego zestawu narzędziowego modułów ............................ 107Pisanie przykładowych kodów do przewodników dla użytkowników .............. 110Zastępowanie wadliwego kodu pochodzącego z zewnątrz ................................... 112Wznieś toast za CPAN .................................................................................................. 114Poprawianie warunków uruchamiających wyjątki ................................................. 115Lokalne odszukiwanie modułów CPAN ................................................................... 118Przekształcanie samodzielnych aplikacji Perla w pakiety ...................................... 122Tworzenie własnych leksykalnych komunikatów ostrzegawczych ..................... 126Odszukiwanie i raportowanie błędów w modułach ............................................... 127Rozdział 5. Sposoby na obiekty ................................................................................................ 13343.44.45.46.47.48.49.50.Tworzenie zamkniętych obiektów .............................................................................. 133Darmowe (prawie) serializowanie obiektów ............................................................ 136Umieszczanie dodatkowych informacji w atrybutach ............................................ 138Upewnianie się, że metody są prywatne dla obiektów .......................................... 140Autodeklarowanie argumentów metod .................................................................... 144Kontrola dostępu do zdalnych obiektów .................................................................. 147Przygotowywanie naprawdę polimorficznych obiektów ....................................... 150Automatyczne generowanie metod dostępu ............................................................ 152Rozdział 6. Wykrywanie i usuwanie błędów .............................................................................. 15751.52.53.54.55.56.57.58.59.Szybkie wyszukiwanie błędów kompilacji ............................................................... 157Uwidacznianie niewidocznych wartości ................................................................... 159Wyszukiwanie błędów za pomocą testów ................................................................ 161Wykrywanie błędów za pomocą komentarzy .......................................................... 163Wyświetlanie kodu źródłowego związanego z błędem ......................................... 167Analiza funkcji anonimowych ..................................................................................... 170Nadawanie nazw procedurom anonimowym .......................................................... 172Wyszukiwanie źródła pochodzenia procedury ........................................................ 174Dopasowywanie debugera do naszych potrzeb ...................................................... 1754|Spis treściRozdział 7. Triki dla twórców programów ................................................................................ 17960.61.62.63.64.65.66.67.68.69.Przebudowywanie dystrybucji kodu ......................................................................... 179Testowanie z użyciem specyfikacji ............................................................................. 181Oddzielanie testów programisty od testów użytkownika ..................................... 185Automatyczne uruchamianie testów ......................................................................... 188Oglądanie informacji o niepowodzeniach — w kolorze! ........................................ 189Testy na żywym kodzie ................................................................................................ 192Poprawianie rekordów szybkości ............................................................................... 195Budowanie własnej wersji Perla .................................................................................. 196Uruchamianie zestawów testów z trwałym ładowaniem potrzebnego kodu .... 199Symulowanie w testach nieprzyjaznego środowiska .............................................. 204Rozdział 8. Poznaj swój kod ...................................................................................................... 20970.71.72.73.74.75.76.77.78.79.80.81.82.83.Kolejność wykonywania kodu .................................................................................... 209Badanie naszych struktur danych ............................................................................... 213Bezpieczne wyszukiwanie funkcji .............................................................................. 215Sprawdzanie, jakie moduły tworzą rdzeń Perla ...................................................... 218Śledzenie wszystkich wykorzystywanych modułów .............................................. 219Wyszukiwanie wszystkich symboli używanych w pakiecie ................................. 223Zaglądanie za zamknięte drzwi .................................................................................. 225Wyszukiwanie wszystkich zmiennych globalnych ................................................. 228Dokonywanie introspekcji procedur .......................................................................... 231Odnajdywanie importowanych funkcji ..................................................................... 234Profilowanie rozmiaru programu ............................................................................... 236Ponowne wykorzystywanie procesów Perla ............................................................ 239Śledzenie operatorów ................................................................................................... 241Pisanie własnych ostrzeżeń ......................................................................................... 243Rozdział 9. Poszerz swoje zrozumienie Perla .......................................................................... 24784.85.86.87.88.89.90.91.92.93.94.Podwajanie danych za pomocą funkcji dualvar() .................................................... 247Zastępowanie miękkich odwołań prawdziwymi odwołaniami ............................ 249Optymalizowanie kłopotliwych elementów ............................................................. 252Blokowanie tablic asocjacyjnych ................................................................................. 253Sprzątanie po sobie przy wychodzeniu z zakresu ................................................... 255Dziwne sposoby wywoływania funkcji ..................................................................... 257Użycie funkcji glob w ciągach ..................................................................................... 263Jak zaoszczędzić sobie pracy przy kodzie sprawdzającym błędy ........................ 266Przygotowywanie lepszych wartości zwracanych przez procedury .................... 268Zwracanie wartości aktywnych .................................................................................. 272Tworzenie własnej składni Perla ................................................................................ 275Spis treści|595.96.97.98.99.100.101.Modyfikowanie semantyki kodu za pomocą filtrów kodu źródłowego ............. 277Korzystanie ze wspólnych bibliotek bez pomocy kodu XS ................................... 281Uruchamianie dwóch usług na pojedynczym porcie TCP ..................................... 283Poprawianie naszych tablic dyspozycji ..................................................................... 287Śledzenie przybliżeń w obliczeniach ......................................................................... 290Przeciążanie operatorów .............................................................................................. 293Pożytki z zabaw z kodem ............................................................................................ 298Skorowidz ................................................................................................................................. 3016|Spis treściTworzenie zamkniętych obiektówSPOSÓB43.ROZDZIAŁ PIĄTYSposoby 43. – 50.Jak łatwo zgadnąć, Perl też posiada obiekty. Oprócz dziwacznej na pierwszy rzut okafunkcjiblessoraz odpowiedniego przekwalifikowania procedur, pakietów i odwołańobiektowy język Perl oferuje programiście wiele nowych opcji i rozszerza znacznie moż-liwości języka. Część z Czytelników zapewne korzysta z funkcjibless,by tworzyć(potocznie „błogosławić”) obiekty tylko dlatego, że potrzebują rekordów obiektów. Wartojednak zastanowić się nad korzyściami, które może przynieść lepsza enkapsulacja (obu-dowywanie) danych, automatyczna serializacja danych czy wymuszanie kontroli dostępudo danych.Im więcej programista wie na temat Perla, tym więcej będzie miał dostępnych opcji, umoż-liwiających tworzenie i korzystanie z wyższych poziomów abstrakcji. Następnym razem,gdy jego współpracownicy natrafią znowu na złożony problem, którego nie potrafią roz-wiązać, będzie mógł zajrzeć do swej magicznej sakwy z trikami obiektowymi i uśmie-chając się, uspokoić ich: „Bez obaw, za pomocą Perla można rozwiązać każdy problem”.SPOSÓB43.Tworzenie zamkniętych obiektówZadbaj o dobre obudowanie atrybutów obiektuW Perlu 5 obsługa obiektów sprowadzona jest do minimum. Perl daje programiście wy-starczające narzędzia, by umożliwić programowanie obiektowe, nie chroni go jednakprzed robieniem z obiektami rzeczy nieodpowiedzialnych. Oczywiście, domyślne podejściedo programowania obiektowego jest z reguły najprostsze (oraz najmniej odpowiedzialne),choć niestety nie najporządniejsze ani też nieułatwiające późniejszej obsługi kodu.W większości przypadków obiektami będą po prostu błogosławione (tj. przemienionew obiekty za pomocą funkcjibless)tablice asocjacyjne, ponieważ początkującym pro-gramistom najłatwiej zrozumieć ich działanie i najłatwiej też z nich skorzystać. Niestety,czasem trudno znaleźć w nich ewentualne błędy i tak naprawdę nie oferują żadnegoobudowania (enkapsulacji) dla danych. Dlatego też warto sięgnąć po specjalne, czystoobiektowe rozwiązania1.1Więcej na ten temat można znaleźć w artykule „Seven Sins of Perl OO Programing” („Siedemgrzechów głównych programowania obiektowego w Perlu”), w przeglądzieThe Perl Review2.1,zima 2005.Sposoby na obiekty|133
[ Pobierz całość w formacie PDF ]