FreeBSDのカーネルソースをいじってPHABRICATORでレビューしてもらってheadにマージしてもらったのですが、Style(9)を何度か指摘されました。
私のコーディングスタイルは、ほぼ一から開発するようなケースはなく、類似のコードをコピーするところから始めます。大昔にシーナ&ロケッツの鮎川誠さんがイベントで、ホームページでJavaScriptを使っている事を聞かれて、「良さそうなページからコピーしてる。ロックの基本はコピーです。」とか言われて、私もロックな気持ちでプログラミングしています。:)
コピーから始めるときにいろいろなコードを見る事がうまくいく手助けになることがあります。SOCのネットワークコードを作ったときにTulip互換なのでdev/deのコードをベースにしようとしてうまくできませんでした。これはdeのコードはいろいろなデバイスのサポートのために、コードの見通しが悪くなっているためです。代わりにsys/mipsにあったコードをベースにしてどうにか作る事ができました。socベースのコードはそのデバイスのみのサポートになるので、比較的見通しが良いコードが多いです。
レビューの話に戻すと、PHABRICATORのツールのarcでもLINTは実行しているようなのですが、それ以上の項目がStyleでは指定されています。具体的に指摘された点は以下の通りです。
- defineの後の空白はスペースでなくタブで
- if,forの後には空白を入れる
- 演算子の前後にも空白を入れる
- //を使わない
- 変数の宣言と初期化は別にする
- 変数定義が無い関数は{の後一行開ける
既存コードにも違反しているものあって、それをコピーして指摘されるとちょっと凹みます。とはいえ、FreeBSDのコードの奇麗さにも貢献している事だと思うので、ちゃんと守っていきたいです。
私の場合、ロシアの方々が指摘してくれたのですが、manを見るよりも指摘された方が理解が早くありがたく思います。
Style対応のlintツールみたいなものがあったら良いのにと思ったりします。
ではでは。