2016-05-10 8 views
-2


私は、PythonプログラミングとIntelliJを使った非常に大きなPythonモジュールの開発には全く新しいです。私は、複数の場所から呼び出される静的メソッドがあるかどうかと、このメソッドのシグネチャを別のものを受け入れるように変更するのかどうか疑問に思っていました。議論の私はいくつかの場所で実際のメソッド呼び出しを修正するかもしれないが、他のいくつかの呼び出しを変更することがあります。 Javaでは、私はコンパイル時のエラーを受け取りますが、Pythonは解釈されるので、実行時に(おそらく本番環境では)いつかだけ解明されます。今まで私は 'python -m compileall'コマンドを使用していましたが、JavaのようにIntelliJの構文エラーを取得する方法はありますか?Pythonでランタイムエラーが発生しないようにする方法

+0

ユニットテストは理由のために作成されました –

+0

@ Jarrod Roberson同意して、良いプログラマーの編集者でした。あなたの関数の名前が正しく指定されていれば、すばやくすべての呼び出しを見つけて調べることができるはずです。 –

答えて

1

pylintなどのユニットテストとスタティックコード解析ツールが役立ちます。 pylintは、関数に渡される引数の数が正しくないことを検出できます。

Python 3を使用している場合は、関数の注釈が便利であり、mypyは、注釈付きの関数呼び出しをタイプすることができます(明らかに私は使っていません)。

一般に、依存コードを破棄せずに既存の関数シグネチャを変更する戦略は、キーワード引数を使用することです。あなたは、関数に新しい引数を追加するキーワード引数として追加したい場合たとえば、:今すぐにと新しい引数なし​​で呼び出す

#def f(a): 
# """Original function""" 
# print(a) 

def f(a, b=None): 
    """New and improved function""" 
    print(a) 
    if b is not None: 
     print(b) 

は動作します:もちろん、これの

>>> f('blah') 
blah 
>>> f('blah', 'cough') 
blah 
cough 

常に機能するとは限りません。引数が削除された場合、または関数のセマンティクスが既存のコードを壊すように変更された場合。

関連する問題