7

私は日常業務の中で、ほとんどの時間を Python/Django と Objective-C/CocoaTouch と js/jQuery に費やしています。

私が選んだエディターはvim、Python/Django と js/jQueryxcode用、および Objective-C/CocoaTouch 用です。

私の開発速度のボトルネックの 1 つは、既存のコード、特に使用しているオープン ソース ライブラリを読むペースです。

たとえば、Python/Django では、django 開発者によって導入された新しい機能に遭遇すると、好奇心を持ってコード ベースを手動で調査し始めます。たとえば、クラスベースのビューが django 1.3 以降から導入された場合は、https: //docs.djangoproject.com/en/dev/topics/class-based-views/ を参照してください。示されているサンプル コードを確認します。

from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"

そして、私のプロジェクトの 1 つで試してみてください。さらに重要なことに、舞台裏で何が起こっているのか興味があるので、ソースコードを掘り下げます -

# 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

TemplateViewここから、django/views/generic/base.py ファイルまでさかのぼってトレースし、クラスが何をするかを正確に調べます。

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)

そして、これはclass がandクラスTemplateViewから継承されていることを示しています...さらに掘り下げ続けます...など...TemplateResponseMixinView

問題は、これが非常に非効率的で遅いプロセスであることです (手動でクラス階層を「たどり」、途中で各ファイルを開くため)。

問題は、特定のプロジェクトの Python コードを解析し、読みたい特定のクラスを「クリック」することで簡単に検査できるクラス階層を視覚化する簡単な方法/UI ツール (またはその他の視覚的ソリューション) があるかどうかです。約?

私は IPython シェルを認識していますが、視覚的な表示ツールほどユーザーフレンドリーではないようです。

たとえば、F-ScriptObjective-C/iOS/Mac プログラミングの世界では、シェル (Python や IPython シェルとよく似ています) を提供するだけでなく、開発者がクラス階層を内省するための視覚的な方法を提供します。

参照スクリーンショット:-

ここに画像の説明を入力

それで、クラス階層の視覚化ツールはありますか(具体的にはPython用ですが、汎用的でさまざまな言語に使用できる場合はさらに優れています)??? オープンソースのソースコードを効率的に読む方法は何ですか???

更新しました

ctags以下のアドバイスに従って、vim プラグインを試してみたところ、次のように vim でサイド バッファを開くtaglistために使用できました。:TlistOpen

ここに画像の説明を入力

:TlistOpen現在開いているバッファで使用できるすべてのクラスと関数が基本的に表示されるので、これは非常にクールに見えます。

Ctrl]私の問題は、カーソルがオンのときに実行しようとするとTemplateView、次のエラーが発生することです:-

ここに画像の説明を入力

私は何を間違っていますか?私のdjangoソースコードがにあるからvirtualenvですか? ctagsまたは、djangoソースコードを作成/ taglist「認識する」ために私がしなければならない特定のことがありますか?

4

3 に答える 3

4

タグは確かに非常に良いスタートです。(あまりにも多くの情報がそこら中にあるので、検索用の追加のキーワードを 1 つだけ提供します: ctags.)

Vim では、(基本的なケースでは)Ctrl+]クラス/関数定義に移動しCtrl+Tて戻ることになります。

于 2012-04-28T08:03:50.760 に答える
3

私はvimのタグリストであふれんばかりのctagsを使用しています。現在のウィンドウのクラス定義にジャンプするために使用し、分割ウィンドウの定義にジャンプするために使用します。ctrl]ctrlw]

あなたは自作を介してあふれんばかりのctagsをインストールすることができます:

brew install ctags

で古いもので/usr/local/binはなく、自作でインストールされたものを使用してください。ctags/usr/bin

Pythonファイルのインデックス変数とインポートをスキップする--python-kinds=-viことも役立ちます。~/.ctags

別の方法は、のバリアントを使用することcscopeですが、オプションを有効pyscopeにしてvimをコンパイルする必要があります。cscope

于 2012-04-28T08:14:55.163 に答える
3

Python に含まれる IDLE エディターには、特定のモジュール内のすべてを効率的にナビゲートする効果的なクラス ブラウザーがあります。inspect モジュールpyclbr モジュールの助けを借りて、そのツールを変更して完全なクラス階層をナビゲートすることは難しくないと思います。

于 2012-04-28T08:22:48.347 に答える