2012-08-02 16 views
11

Jako programiści czytamy więcej, niż piszemy. Zacząłem pracować w firmie, która używa kilku "dużych" pakietów Pythona; pakiety lub rodziny pakietów, które mają wysoki KLOC. Przykład: Zope.Poruszanie się w dużej bazie kodu Pythona szybciej

Mój problem polega na tym, że mam problemy z poruszaniem się po tym kodzie szybko/łatwo. Moja obecna strategia jest

  • zacznę czytać moduł muszę zmienić/rozumieć
  • uderzę importu, które muszę wiedzieć więcej
  • dowiem gdzie kod źródłowy dla tego importu jest umieszczenie instrukcji debugowania Pythona (pdb) po zaimportowaniu i wyświetleniu echa modułu, który mówi mi, że jest to plik źródłowy
  • Przechodzę do niego, w powłoce lub eksploratorze plików Vim.
  • większość czasu sam moduł importuje więcej modułów i zanim ja to wiem Mam 10KLOC „na talerzu”

Alternatywnie:

  • widzę metody/klasy I potrzeba aby dowiedzieć się więcej o
  • Wykonuję wyszukiwanie (ack-grep) dla definicji tej metody/klasy w całym zakresie kodu (co może być uciążliwe, ponieważ baza kodowa jest częściowo w ~/.buildout-jajach)
  • Znajduję jeden lub więcej fragmentów kodu, które definiują tę metodę/Klasa
  • mam wydedukować, który z nich jest jeden muszę czytać

To kosztuje dużo czasu, który jest zrozumiały dla wielkiego kodzie. Ale mam wrażenie, że poruszanie się po dużej i nieznanej bazie kodu Pythona jest dość powszechnym problemem.

Poszukuję narzędzi technicznych lub strategicznych rozwiązań dla tego problemu. ...

Po prostu nie mogę Wyobraź sobie programistów Pythona za pomocą strategii opisanych powyżej.

+1

https://github.com/mkomitee/vim-gf-python może Cię zainteresować, lub więcej po prostu: http://vim.wikia.com/wiki/Automatically_add_Python_paths_to_Vim_path –

+0

Haha, jak mówią, "problemy pierwszego świata" ... jeśli moglibyśmy to zrobić z projektami w C (Które zwykle nie możemy, chyba, że ​​surowy kod maszynowy to twoja filiżanka herbaty) KLOC prawdopodobnie byłby bliższy 100K; p –

Odpowiedz

8

na Vimie, podoba mi się NERDTree (przeglądarka plików) i taglista.vim (przeglądarka kod źródłowy ->http://www.vim.org/scripts/script.php?script_id=273)

również w vim, można użyć CTRL-], aby przejść do definicji (: h CTRL-]):

  1. pobieranie żywiołowy Ctags http://ctags.sourceforge.net/
  2. wykonaj instalację kierunki i umieścić go gdzieś na PATH
  3. z „root” katalogu kodu źródłowego, tworzyć plik tagi z muszli „ctags -R”
  4. (upewnij się, że: set noautochdir, i upewnij się, że: pwd jest katalogiem root fr krok om 3)
  5. iść do Vima, kursor nad jakąś funkcję lub nazwa klasy, uderzył Ctrl]

Domyślnie, jeśli nie ma wielu meczach za znacznikiem, to pokazuje, wszędzie był importowany i gdzie został uznany

jeśli znacznik ma tylko jeden mecz, to natychmiast skacze do niej

... następnie użyć Ctrl + O i Ctrl + i, aby przejść tam iz powrotem z którym byłaś

(powtórz powyższe kroki dla kodu źródłowego parti Biblioteki cular użyć, ja zwykle trzymać osobnego okna Vima otwarte uczyć rzeczy)

+2

+1 dla Exuberant Ctags. Oryginalnym "IDE" było 'vi' plus' ctags', a 'vim' jest nawet lepsze niż' vi', a Exuberant Ctags jest nawet lepszy od oryginalnego 'ctags'. – steveha

+0

Należy zauważyć, że 'ctags -R' może nie działać na OSX, który jest dostarczany z wersją' ctags' bez opcji '-R'. Zobacz http://stackoverflow.com/questions/8996387/am-i-even-using-exuberant-ctags. – nofinator

5

Używam ipython? polecenie

Po prostu musisz dowiedzieć się, jak zaimportować rzeczy, które chcesz wyszukać, a następnie dodać? na końcu nazwy modułu lub klasy lub funkcji lub metody, aby wyświetlić ich kod źródłowy. Uzupełnianie poleceń pomaga również w wykryciu długich nazw.

-1

Spróbuj czerwoną pigułkę: https://github.com/klen/python-mode

+1

To jest zła odpowiedź. Jest to 1) odpowiedź tylko na link 2) do własnego projektu plakatu 3), który jest martwy. –

+0

Aktualizacja: ten link nie jest martwy. Słyszałem wiele dobrych rzeczy o trybie Pythona. Używam go od kilku dni i naprawdę to lubię. –

Powiązane problemy