自分の興味の赴くままにIT技術系のネタを取りとめもなくメモっています。
Ruby言語やLinuxのネタが多いです。

October 15, 2006 [長年日記]

[Ruby] メソッド(関数)化の基準

今日、メソッド(関数)の細分化について

「コメントを残したくないから、機能の一部をメソッド化してメソッド名で機能の内容を表現する」

という意見を聞いた。面白い考え方だと思ったけど、他からは全く使われないだろうメソッドだし、その内容自体が数ステップのもの、名前が長すぎた、等の理由で、メソッド化するのをやめてその呼び出し元に入れこんでコメントを残すように直した。

でも、そもそも、メソッド化する基準ってのはなんなんだろう?

ということで自分なりに考えてみた。

  1. 再利用するかどうか
    再利用するかどうか、というとちょっと大げさかもしれないから、他から複数回呼び出されるかどうかって言い直しても良いかもしれない。基本はこれだよね。APIとして外部に提供する場合はもちろんのこと一つのクラスの内部であっても再利用する場合は別出しにすることが多いな。再利用する可能性があれば1ステップで収まるような内容であってもメソッド化する時があるし。
  2. オーバーライドされるかどうか
    まぁ、上のとほとんど同じなんだけど、サブクラス化したときはこの部分をオーバーライドするだろうなぁ、と思ったところはメソッド化しておくかな。
  3. 再帰呼び出しなどの実装上の都合
    まぁ、再帰の場合は広義に見れば再利用してると言えるのかも。
  4. 長すぎるメソッドの分割
    長すぎてよくわからなくなりそうなとき、その機能をいくつかのサブ機能毎にわけることはあるなぁ。でも、実は純粋に分割するだけ、ということは少なくて、大抵は他のやり方に従っていると回避できるし、本当にそれがヒトカタマリならば多少大きくなっても1メソッドにしてしまうなぁ。必要悪的な使い方かな。

皆さんはどのような基準でメソッドを構成しているんでしょう。

[Ruby] コメントを書く基準

もう一つ。最近、コメントはなるべく書かないようにする傾向がある。それは「ソースを読めばわかるようなきれいなソースを書けばよい」ということなんだと思ってるんだけど、一方で「ファイルをオープンする」みたいなコメントが大量生産されていた頃(今も?)のアンチテーゼという側面もあるんじゃないかと思う。

でも「何でその実装をしたのか(Why)」というのが(他の人が見て)一目でわからないと想定される場合は積極的にコメントを残すべきだと思うなぁ。そうしないと後から自分で見てもわかんなくなっちゃうよ。

なーんて、えらそうなことを書いたけど、今日のこの2つの基準は自分の中でも達成できていないケースがあるなぁ。しょせん人間なんてそんなもんですな。