blog.fuktommy.com

コーディング規約とメタ仕様(仮用語)

堅牢なコーディングルールを策定する方法(2) - 都元ダイスケ IT-PRESSまぁつまり「Javadocに書かれていない挙動をしたらバグ」です ってのはどんな頓知だよ、というか、 僕の興味のあるところとは微妙にレイヤが違うなあと思った。 なので以降は興味のあるレイヤについて書きます。

関数がどういう挙動をするべきかというのを仕様だとすると、 その上に「どういう仕様を定めるべきか」という問題があって、 それを仮にメタ仕様と呼んでみます。 実際には「意図」って言ってることが多い気がする。

関数の引数にヘンなものを渡したらどうするべきなのか。 nullを返す? falseを返す? 例外を発生させる? 例外は組み込み例外を使う? ユーザー定義の例外を使う? なんとなくPHPを想定。 コメントに書いてあるのが正しいというのはその通りだけど、 さて、どの方針で行きましょうか。そういうレイヤの話ですね。

コーディング規約としては、このレイヤが重要な気がする。 もっと一般的な例だと、どういう基準で関数を分割する? クラスの分割は? みたいなことかな。 括弧の付け方、スペースの入れ方は、実はそんなに読みやすさに影響しないと思う。 肥大化した関数、逆によくわかんない基準でこま切れになった関数、これは困る。

ソースコードレベルの仕様は実装しながら決まっていくのだから、 いかにして仕様を定めるかということが重要になるはず。 この辺は規模・開発体制・システムの設計に依るところが大きいと思うけど。 つまり個々の開発者にどの程度の裁量があるの、という話。

んで、開発者同士は互いの意図について把握しておくべきだろうな、と思うのね。 でも規約として意識する必要もなくて、 「誰それが何月に開発した、何々モジュール」みたいな単位で、 首尾一貫している程度でよいと思ってる。 その程度の首尾一貫性があれば誰でもメンテできる。 これ以上粒度の細かいチーム開発はしたことないからよくわかんない。

Copyright© 1998-2014 Fuktommy. All Rights Reserved.
webmaster@fuktommy.com (Legal Notices)