ソースコード実装における定量的な指標に関して

はじめに

github.com

上記のソースコードがなんとなくもやもやして気に食わない。このもやもや感の原因は自分の中でどんなコードが良いかというソースコード実装の哲学がないからだと思う。そもそも良い悪いを議論する指針が無いから判断しようがないのが問題。今の自分に必要なのは具体的なソースコード実装の指針なんですよね。

いくつか参考になりそうなサイトを下にひっぱってきた。

プログラミング中級者に読んでほしい良いコードを書くための20箇条 | anopara

定量的な議論

抽象的な話は脇にひとまずおいておいて定量的な話を抜粋すると、

  • クラス中のメソッド数を少なくする

 →1クラス中の平均メソッド数は6.5くらい、全体の8割にあたるクラスのメソッド数が10以下。

  • メソッド中のステップ数を少なくする

 →大体のメソッドが10行未満、どんなに多くても30行には満たない。

  • クラスはコンパクトに実装する

 →クラスの行数は平均200行程度。

  • ネストは小さくする

 →ネストの深さは2つまで。

  • テスト可能なコードを書く

 →クラスとメソッドは、ユニットテストツールによってテスト可能になっていることが理想。

(注意)テスト可能でないとは、実際にプログラムを動かし、操作しないと試験できないような状態を指す。より具体的に言えば、クラスAの試験するときに、アプリケーションを起動して、ボタンAを押し、テキストボックスBに文字列Cを入力してOKを押す・・・という方法以外に試験を行うすべがないような状態のこと。

ということは準正常系や異常系の処理も当然ながらソースコードに実装しUT工程で実施しておくべきなんですよね(こんなの当然ですが...。)

またテスト工程を考慮するとクラス設計においてはできるだけ変数や内部状態を減らすべき

他にも気になった格言の抜粋

良いコードは自然とコメントの量が少なくなると思っているので、コメントがたくさん必要になったときはわざわざ遠回りして複雑なことをしていないか?と疑ってみるべき。