2012年7月20日金曜日

"!"は破壊的・非破壊的メソッド両方がある時に付ける。/コマンド・照会の分離について

以前、delete_ifって破壊的メソッドなのか…って記事を書いた。

記事の中で、
もしかして、"!"は、あくまで破壊的なメソッドと非破壊的なメソッド両方がある場合に両者を区別しやすくする時に付ける物であって、元々破壊的なメソッドしか無い場合には付けないものなのか....?
って書いたけどやっぱりそうっぽい。

どなたがどんな経緯で公開している資料か分からないけど、Rubyコーディング規約の「メソッド名」の項目に、
破壊的なメソッドと非破壊的なメソッドの両方を提供する場合、破壊的なメソッドには`!'を付ける。
って書いてあった。

ところで、本題からずれるんですけどreject!とかdelete_ifって、オブジェクトの状態を変えた上で戻り値を返すから、clean codeにのっていたコマンド・照会の分離原則に反するような気がするんだけど…

0 件のコメント:

コメントを投稿