2008年12月11日木曜日

PyMetric

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
Libraryとして使うことはあきらめたほうがよさそうだ。C++かなんかの悪い癖丸出しでまったくpythonicでない実装だ。読んでいて気が狂いそうだ。名前も滅茶苦茶だし。

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 件のコメント: