2009-04-24 12 views
10

Podczas kopania w starym kodzie Pythona i pisania kodu Python, często używam pylint. Używam również Clone Digger. Niedawno zacząłem używać rope, która jest biblioteką do automatycznego refaktoryzacji.Narzędzie Python, które sugeruje refaktoryzacje

Ale szukam czegoś innego niż lina. Wolałbym narzędzie, które po prostu sugeruje możliwe refaktoryzacje: nadaje nazwę refaktoryzacji, opcjonalnie dostarcza jej krótki opis (świetnie nadaje się do celów edukacyjnych), podkreśla sekcję kodu i pozwala mi samemu dokonać refaktoryzacji. Czy istnieje takie narzędzie?

+0

Do celów edukacyjnych polecam http://www.refactoring.com/ lub książkę Martina Fowlera, nie znam żadnego narzędzia działającego dokładnie tak, jak opisałeś :( – Ryan

+0

Czy masz konkretny przykład tego rodzaju narzędzia, którego szukasz, które już istnieje w Pythonie lub innym języku programowania? – bignose

+0

Zarówno pylint, jak i Clone Digger sugerują pewne problematyczne miejsca, wskazując konkretne problemy w kodzie, ale nie sugerują same refaktoryzacji – Anonymous

Odpowiedz

2

Wyjazd rowerowy naprawa człowiek http://bicyclerepair.sourceforge.net/

Co jest naprawa rowerów Man? Projekt "Naprawa rowerów" jest próbą stworzenia przeglądarki refaktoryzującej dla Pythona. Jest on pakowany jako biblioteka, którą można dodać do IDE i edytorów w celu zapewnienia możliwości refaktoryzacji. Wiązania dla Emacs i Vi są dołączone do pakietu.

Nigdy z tego nie korzystałem, ale przeczytałem o tym. Brzmi jak to, czego szukasz.

+2

BicycleRepairMan jest jak lina, ale starsza i ma mniej funkcji niż lina.Nie jest tym, czego szukam.Zrobiłem używać BRM w przeszłości.Nie wspomniałem o tym na moje pytanie, ponieważ lina go zastąpiła – Anonymous

0

NetBeans ma wersję wczesnego dostępu, która obsługuje język Python i jest raczej przyjemna. Ma kilka podstawowych narzędzi do refaktoryzacji, które okazały się przydatne. Jako dodatkowy bonus działa w systemach Windows, Linux, Mac OS X i Solaris.

Sprawdź to na stronie: http://www.netbeans.org/features/python/

+1

nic nie widzisz pod tym odnośnikiem, co sugeruje, że robi to, o co pyta: przedstawiając sugestie programowi er co do * * refaktur do wykonania, w jakim konkretnym punkcie ich kodu. – bignose

1

Nie, jeśli tego typu narzędzie istnieje w każdym konkretnym języku, choć pojęcie zostało wymienione w refactoring książki Martina Fowlera (web reference) zrobić.

Najlepsze narzędzie, jakie znam o obecnie istniejącej złożoności cyklicznej. This article implementuje cykliczny licznik złożoności dla Pythona.

Inną łatwą metryką do targetu jest długość metody/funkcji, liczba atrybutów obiektów/klas i liczba parametrów do funkcji, o ile sobie przypominam, pylint już je policzył.

+0

Złożoność cykliczna nie jest narzędziem, jest metryką kodu. –

2

Och Zapomnij o swoim narzędziu, zamiast tego użyj TDD i dobrej książki, jak refaktoryzacja, by projektować wzory według Kerievsky'ego. Problem polega na tym, że refaktoryzacja jest sposobem na ulepszenie kodu i projektu, ale tylko Ty możesz wiedzieć, co chcesz osiągnąć, żadne narzędzie do refaktoryzacji nie może tego zrobić dla ciebie.

Chodzi mi o to, że najlepszym sposobem nauki refaktoryzacji jest studiowanie przykładów, a nie podążanie za głupimi/prostymi narzędziami, ponieważ nie nauczą cię żadnego wyrafinowanego refaktoryzacji ani nie powiedzą ci, czy masz refaktoryzację, która dobrze komponuje się z tobą. .

PS Czytaj Fowler "Refaktoryzacja" i Kerievsky "Refaktoryzacja w projektowaniu Wzorów", które książki muszą przeczytać podczas refaktoryzacji. I wspominają prosty sposób sprawdzenia, czy potrzebne jest refaktoryzacja (zapachy).

Uważaj TDD za dobry sposób na zapewnienie, że twoje dokumenty są bezpieczne i nie łamią Twojego kodu. Beck "Test-Driven Development by example" to dobra książka na początek. I Python ma PyUnit dla TDD.

2

Może Ci się spodobać Pythoscope, automatyczny generator testów jednostkowych Pythona, który ma pomóc ci uruchomić pakiet testów jednostkowych poprzez dynamiczne wykonywanie kodu.

Czy sprawdziłeś również moduł rope.contrib.codeassist? Ma automatycznie zaproponować i wykonać refaktoryzację twojego kodu źródłowego.

Powiązane problemy