2012-07-20 13 views
8

Używam następującego polecenia, aby przetestować mój kod Perla:Czy są jakieś moduły, których mi brakuje, aby pomóc mi napisać lepszy kod?

perl -MB :: Lint :: StrictOO -MO = Lint, wszystkie, oo -M-circular :: wymagają -M-pośrednie -Mrogi: : metoda -Wskazówki :: nieużywany -c $ plik

W systemie z wersją perla mniejszą niż 5.10 używam również opcji uninit.

Używam również Perl :: Critic i Perl :: Tidy i skonfigurowałem odpowiednie pliki rc według własnego uznania.

Te moduły wykonały świetną robotę, pomagając mi przełamać pewne złe nawyki, których nauczyłem się podczas pierwszej nauki Perla.

Czy są jeszcze jakieś moduły lub pragmy, które kopną mnie z powrotem w prostą i wąską, kiedy zepsuję?

Za pomocą testów wskazano rodzinę modułów Test :: * oraz kilka dobrych książek. Ta nowa informacja zmusiła mnie do ponownego rozważenia pewnych założeń dotyczących związku między testowaniem a budowaniem umiejętności kodu. Wszystkie są doceniane i już są badane i wykorzystywane.

Wydaje mi się, że są to dwie oddzielne części całości. "perl -c", Perl :: Critic i Perl :: Uporządkuj wszelką pomoc podczas pisania kodu i przed wykonaniem kodu. Devel :: Cover, Devel :: NYTProf i Testy odbywają się w trakcie i po wykonaniu kodu.

Dobry rozwój dyktuje proces iteracyjny, więc testy będą uruchamiane, a kod rozwijany w kółko, ale wciąż mamy ten rozdział.

Wydaje mi się, że w odpowiedziach skupiono się na "czasie i po wykonaniu" kodu. Ponownie, jest to bardzo cenne. Czy mogę założyć, że dobrze sobie poradziłem z częścią "pisanie i wstępna realizacja"? Przynajmniej tak, jak pragma, moduły i narzędzia.

+2

Może być czas, aby nauczyć się poruszać się po teście :: Więcej, jeśli jeszcze tego nie zrobiłeś. Szkolenie w zakresie pisania testów przed ich docelowym kodem zachęci Cię do pisania w mniejszych, łatwiejszych w zarządzaniu i często bardziej ogólnych fragmentach. Testowanie kodu musi prowadzić do lepszego kodu, jeśli jedna definicja lepszej jest mniej błędna. Wiele modułów Test :: * zapewnia dodatkowe kontrole bez większego wysiłku. – DavidO

+0

Używam serii modułów Test :: dużo ... Nie uważałem testów za sposób na poprawę moich umiejętności programowania. Używam DistZilla, kiedy tylko jest to możliwe, co sprawia, że ​​korzystanie z testów jest bardzo łatwe, z czego korzystam. Wygląda na to, że muszę wrócić i zacząć oceniać moduły Test :: w nowym świetle. – harleypig

+0

Jest tam także kilka naprawdę dobrych książek. Perl wyższego rzędu. Nowoczesny Perl. (Oba są dostępne bezpłatnie online, zgodnie z prawem.) Istnieje wiele innych, ale te dwie są dobrymi książkami do nauki oświeconego podejścia do Perla. – DavidO

Odpowiedz

4

Trochę się martwię, że używasz Perla 5.9. Z dwóch powodów.

Po pierwsze jest trochę stary. Wersja 5.9.0 została wydana w 2003 r., A wersja 5.9.5 (ostatnia wersja z serii 5.9.x) została wydana w 2007 r. Od tego czasu pojawiło się kilka wersji Perla o wysokiej jakości.

Po drugie (i co najważniejsze), 5.9 jest niestabilną wersją rozwojową Perla. 5.9 to po prostu seria eksperymentów, które ostatecznie doprowadziły do ​​Perla 5.10.0. Jedynym powodem do użycia jest przetestowanie, że 5.10 będzie stabilną wersją Perla. Nikt nie powinien go teraz używać.

+0

:] Zgadzam się, nikt * nie powinien * używać niczego mniej niż 5.10 ... prawdopodobnie nawet 5.14 ... jednak to, co powinno być i co jest zwykle dwiema różnymi rzeczami. Dużo pracuję nad starym kodem. Niektóre z serwerów, nad którymi pracuję, nadal używają wersji 5.004. – harleypig

+0

W prawo. Mogę (tylko) zrozumieć, dlaczego używasz bolesnej pradawnej wersji Perla. Ale nie mogę zrozumieć, dlaczego używasz niestabilnej wersji programistycznej. –

+0

Moje przeprosiny ... Nie używam 5.9 nigdzie, o czym jestem świadomy ... kiedy badałem, dlaczego uninit nie działa na pudełku z 5.14, stwierdziłem, że uninit został usunięty w 5.10. Kod, który generuje polecenie, sprawdza "$] <5.010", więc myślę "cokolwiek 5,9 i poniżej". Przepraszam za zamieszanie z tego powodu. – harleypig

2

Wygląda na to, że nie testujesz swojego kodu, jedynie sprawdzasz, czy zostanie skompilowany. Proponuję, abyś spojrzał na Test :: More (co sprawia, że ​​pisanie faktycznych testów jest proste i przyjemne), Test :: Class (co sprawia, że ​​obsługa bardzo dużych pakietów testowych jest łatwiejsza), i Devel :: Cover (aby zobaczyć, które bity twojego kodu są objęte testami, a które nie).

+0

Testuję mój kod, kiedy tylko jest to możliwe. Po prostu nie uważałem tego za część ulepszania moich umiejętności kodowania. Będę teraz oglądał rodzinę modułów Test :: w innym świetle. – harleypig

+0

Powiedziałbym, że jeśli kiedykolwiek niemożliwe jest przetestowanie twojego kodu (co sugeruje ci testowanie, gdy tylko jest to możliwe), powinieneś ponownie napisać to do * make * to możliwe! Zdaję sobie sprawę, że nie zawsze jest to praktyczne - np. Jeśli rozmawiasz z zewnętrznymi serwisami - ale jest to coś, do czego zawsze powinieneś dążyć. Jeśli masz do czynienia z niepoprawnym interfejsem zewnętrznym, rozważ rozdzielenie kodu na rozmowy z pozostałą aplikacją, aby można było sfałszować ten interfejs i przynajmniej przetestować jak najwięcej. Naprawdę powinieneś spojrzeć na Devel :: Cover. To uratowało moją pracę w przeszłości. – DrHyde

Powiązane problemy