14

プログラマーとして、私たちは書くことよりも読むことの方が多いです。私は、いくつかの「大きな」Python パッケージを使用する会社で働き始めました。KLOC が高いパッケージまたはパッケージファミリ。適切な例: Zope。

私の問題は、このコードベースをすばやく簡単にナビゲートできないことです。私の現在の戦略は、

  • 変更/理解する必要があるモジュールを読み始めます
  • 詳細を知る必要があるインポートにヒットしました
  • インポートの後に Python デバッグ (pdb) ステートメントを配置し、モジュールをエコーすることで、そのインポートのソース コードがどこにあるかを調べます。これにより、それがソース ファイルであることがわかります。
  • シェルまたは Vim ファイル エクスプローラーで、そこに移動します。
  • ほとんどの場合、モジュール自体がさらに多くのモジュールをインポートし、それを知る前に、「プレート上に」10KLOC を持っています。

または:

  • もっと知りたいメソッド/クラスがある
  • コードベース全体でそのメソッド/クラスの定義を検索 (ack-grep) します (コードベースの一部が ~/.buildout-eggs にあるため、これは面倒な場合があります)。
  • そのメソッド/クラスを定義する 1 つ以上のコードを見つけました
  • 私はそれらのどれが私が読む必要があるものであるかを推測しなければなりません

これには多くの時間がかかりますが、これは大きなコードベースでは理解できます。しかし、大規模で未知の Python コードベースをナビゲートすることは、十分に一般的な問題であると感じています。

そこで、この問題に対する技術的なツールや戦略的な解決策を探しています。...

筋金入りの Python プログラマーが上で概説した戦略を使用しているとは想像できません。

4

3 に答える 3

10

Vim では、NERDTree (ファイル ブラウザ) と taglist.vim (ソース コード ブラウザ --> http://www.vim.org/scripts/script.php?script_id=273 )が好きです。

Vim でも、CTRL-] を使用して定義にジャンプできます (:h CTRL-]):

  1. あふれんばかりの ctags をダウンロードhttp://ctags.sourceforge.net/
  2. インストールの指示に従って、PATH のどこかに配置します。
  3. ソース コードの「ルート」ディレクトリから、シェルからタグ ファイルを作成します: "ctags -R"
  4. (:set noautochdir があることを確認し、:pwd がroot手順 3 のディレクトリであることを確認してください)
  5. Vim に入り、関数またはクラス名の上にカーソルを置き、CTRL-] を押します。

デフォルトでは、タグに複数の一致がある場合、インポートされた場所と宣言された場所が表示されます

タグが 1 つしか一致しない場合は、すぐにそのタグにジャンプします。

...次に、Ctrl+O と Ctrl+I を使用して、現在の場所から前後に移動します

(使用する特定のライブラリのソースコードについて上記の手順を繰り返します。私は通常、別のVimウィンドウを開いて勉強します)

于 2012-08-02T19:44:54.997 に答える
5

私はipythonの??を使用します 指図

探したいものをインポートする方法を見つけて、?? を追加するだけです。ソース コードを表示するには、モジュール、クラス、関数、またはメソッド名の末尾に追加します。また、コマンド補完は、長い名前を理解するのにも役立ちます。

于 2012-08-02T13:18:24.697 に答える
-1

赤い丸薬を試す: https://github.com/klen/python-mode

于 2012-08-24T17:40:44.483 に答える