gallu’s blog

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

メソッドに切り出さないほうが好みなのかも

人のソースを見てふと気付いた。
あんだけ言っている割に*1、基本おいちゃんは「処理をメソッドに切り出す」のが、嫌いなのかも。


ん…大まかな概念チックなプログラムもどき。ある「1 class」を想定。
MagicWeapon的にはmodel、cakePHPとかだとcontrollerとか呼ばれるようなあたりを連想いただけるとありがたい。

class とあるクラス extends modelとかcontrollerとかの基底クラス {

public function マウントポイントっていうか実行ポイント() {

  // ここでしか発生しない処理1(短め)
  // ここでしか発生しない処理2(長め)
  // いくつかのmodel/controllerで発生する処理1
  // ここでしか発生しない処理3(短め)
  // いくつかのmodel/controllerで発生する処理2
}

} // end of class


こんな感じの場合。
ん…まず「いくつかのmodel/controllerで発生する処理」が切り出されてメソッド化しているのは、議論の前提。っつかこれを「コピペする」とかいう話はあり得なさすぎるので、論外。
実装場所は当然ながら「modelとかcontrollerとかの基底クラス」。


で…議論したいのは「ここでしか発生しない処理」。
ちなみにパターンとしては
・全部メソッドに切り出す
・長いのだけをメソッドに切り出す
・全部切り出さない
の3パターン。
実はおいちゃんは、ここを「全部切り出さない」ほうが、どうも好みらしい、ことに気付いてきた。


一応もっともらしく「関数(メソッド)をcallすると、厳密には、プログラムカウンタとかスタックとかで実行速度が」とか言ってみてもよいのですが。
コンパイラ系言語であればおそらく「コンパイル時の最適化でンなもん吹き飛ぶ」可能性も高く、普段使いであるPHPあたりだと「ンなことより先にやるべき"速度上げ"が山盛りであるだろうっていうかそこまでの速度考えるんならまずPHPやめろや」で終了してしまう程度、だと、思う(苦笑
なので、その辺ではなく、純粋に「好みとして」切り出さないのが好きだなぁ、と。


ん…おいちゃんの頭ん中を切り出すと。
「丁寧にメソッドに切り出された」プログラムって、こんな風に見えるざんす。
内容がものすごく偏ってるのは、きっと気のせいw


カレーの作り方
・ブイヨンを作ります。 ブイヨンの作り方はP28参照
ブーケガルニを作ります。ブーケガルニの作り方はP52参照
・タマネギを切ります。タマネギの切り方はP12参照
・タマネギを適切に炒めます。タマネギの炒め方はP109参照
以下略


こんな感じ?
いやまぁ、ブイヨンとかブーケガルニはきっと「他でも使う共通」なので、メソッドに切り出してもらってよいのですが。
「カレー用のタマネギの切り方とか、チャツネにする用の炒め方」は、別に参照にせんで、ここに書いていただいてもよいのではないかなぁ、と。


特に「ソースを読む」時に、メソッドに切り出されてるより、縦に「一気呵成に読める」ほうが、何となく、読み心地がいいんですよね(苦笑
あと。自分の癖があるので、メソッドになってると「他でも使う」ことを前提に「どんなインタフェース切ってるか?」「それは他でも使えるのか?」とか、余計な思考が割り込んでくるのも、おいちゃん的に「可読性が落ちるように感じる」一因なのかもしれない。


あと。書くときに「いつでも、カット&ペーストで切り出せる」ような書き方の癖がしみついてきたので。
切り出すコストが「ほとんど考えなくても良い」ようになったのも、もしかすると「必要になるまではメソッド化しなくていいじゃん」になる一因なのかも。


と、まぁ、そんなこんなで。
最近「メソッドに切り出さない方が好みかも」という、本人的には「結構意外な」好みに気付いてみたので、めも。


みなさんはどうですか?
純粋に「好き嫌い」の話でいいので、結構聞いてみたかったり。

*1:…そんなに言ってない気もするけど