class ComputeMetrics( object ):
""" Class used to compute basic metrics for given module."""
def __init__( self, metricInstance, context, runMetrics, metrics, pa, so, co ):
""" Initialize general computational object."""
paってparseargumentかなんかの略語で、素敵なことに標準のOptParseを使っていてくれてない。だいたいなんでmodelであるはずのComputeMetricにapplicationの引数のパース結果を丸ごと渡しているんだ?必要以上の情報をオブジェクトに渡すのは極悪です。不要な結合が発生して、切り出して使おうとすると困るじゃないか。コメントも糞の役にも立ちません。名前と関数名と引数の名前を見ればわかります。astかなんか使って実装するのが普通ですが、parserを自前しているようです。
マッチョコーディング丸出しでキモイです。死んでくれって感じです。metricがないとマトモなコードにならない人が書くからこういうことになるのだろうなぁ・・・。なんだろう、来ない電車を待つやつはいないじゃないけど。
どーすんべか。以下idea.
- black boxなscriptとして使用する。必要に応じて出力をparse(涙)して使う
- 仕様を抽出してMcCabeとslocの計算法がわかればいいかなぁ。
- indentのcheck, defaultは4space、optionで2spaceを許容。tabは常に禁止。
- PEP8に準拠かどうかをチェックする
- spell/case/naming checker、できる範囲で品詞もチェックしたい。
- 変数のscopeと変数の語長の関係をチェック。広いスコープには長い名前、短いスコープには短い名前
- search and kill poor comments.
0 件のコメント:
コメントを投稿