Narzędzia ułatwiające programistom szybsze czytanie hierarchii klas

Przeważnie spędzam czas na Python / Django i Objective-C / CocoaTouch i js / jQuery w trakcie mojej codziennej pracy.

Moim edytorem jestvim dla Python / Django i js / jQuery ixcode dla Objective-C / CocoaTouch.

Jednym z wąskich gardeł na mojej szybkości rozwoju jest tempo, w jakim czytam istniejący kod, szczególnie biblioteki open source, których używam.

Na przykład w Pythonie / Django, gdy napotykam nowe funkcje wprowadzone przez programistów django, ciekawi mnie i zaczynam ręcznie badać bazę kodu. Na przykład, gdy widoki oparte na klasach zostały wprowadzone od wersji 1.3 django, odwołanie -https://docs.djangoproject.com/en/dev/topics/class-based-views/ - Sprawdzę pokazany przykładowy kod:

<code>from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"
</code>

I wypróbuj go na jednym z moich projektów. Co ważniejsze, jestem ciekawy, co dzieje się za kulisami, więc wkopię się w kod źródłowy -

<code># django/views/generic/__init__.py file

from django.views.generic.base import View, TemplateView, RedirectView
from django.views.generic.dates import (ArchiveIndexView, YearArchiveView, MonthArchiveView,
                                     WeekArchiveView, DayArchiveView, TodayArchiveView,
                                     DateDetailView)
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView


class GenericViewError(Exception):
    """A problem in a generic view."""
    pass
</code>

Odtąd prześledzę go wstecz do pliku django / views / generic / base.py i dowiem się dokładnie, coTemplateView klasa robi: -

<code>class TemplateView(TemplateResponseMixin, View):
    """
    A view that renders a template.
    """
    def get_context_data(self, **kwargs):
        return {
            'params': kwargs
        }

    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)
</code>

I tutaj to pokazujeTemplateView klasa dziedziczy zTemplateResponseMixin iView klasy ... i dalej kopię dalej ... i tak dalej ...

Problem polega na tym, że jest to niezwykle nieefektywny i powolny proces („śledzenie” hierarchii klas ręcznie i otwieranie każdego pliku po drodze).

Pytanie brzmi - czy istnieje narzędzie łatwe w obsłudze / UI (lub inne rozwiązanie wizualne), które analizuje kod Pythona w konkretnym projekcie i wizualizuje hierarchie klas, które mogę łatwo sprawdzić, klikając „klikając” na konkretnej klasie, którą jestem zainteresowany przeczytać o?

Uwaga że znam powłokę IPython, ale nie wydaje się ona tak przyjazna dla użytkownika jak wizualne narzędzie do wyświetlania.

Na przykład jestF-Script w świecie programowania Objective-C / iOS / Mac, który nie tylko zapewnia powłokę (podobnie jak powłoka Pythona lub IPythona), ale zapewnia wizualny sposób dla programistów do introspekcji klas.

Zrzut ekranu odniesienia: -

Czy jest więc narzędzie do wizualizacji hierarchii klas (specjalnie dla Pythona, ale nawet lepiej, jeśli jest ono ogólne i może być używane dla różnych języków) ??? Jakie są twoje metody szybkiego zwiększania prędkości podczas czytania kodu źródłowego open source ???

AKTUALIZOWANY

Zgodnie z poniższą radą wypróbowałemctags i wtyczka vimtaglist i mogłem użyć:TlistOpen aby otworzyć bufor boczny w vimie w ten sposób: -

To wygląda naprawdę fajnie:TlistOpen teraz zasadniczo pokazuje mi wszystkie klasy i funkcje, które są dostępne w moim aktualnie otwartym buforze.

Moim problemem jest teraz, gdy próbuję to zrobićCtrl] gdy kursor jest włączonyTemplateView, Pojawia się następujący błąd: -

Co ja robię źle? Czy to dlatego, że mój kod źródłowy django jest w avirtualenv? Czy jest coś konkretnego, co muszę zrobić, żeby to zrobićctags/taglist „świadomy” kodu źródłowego django?

questionAnswers(3)

yourAnswerToTheQuestion