質問: (C++)メソッドの機能分割を進めていくと,メソッドをヘッダファイルとソースファイルに分けるメリットが感じられないのですが,そういうものでしょうか.
回答: 一体どのくらいの数について多い少ないといっているのかわかりませんが、それが負担になるくらい多いとすれば数十とか百とかのメソッドを持ってしまっているのでしょうか。で、この質問のような疑問を持つということは、それが特殊な例として出てくるのではなく日常的にそうなってしまっているということでしょうか? 私の思うところでは、ヘッダとソースを分けるメリットってモジュール(C++ならクラスと言っていいのかな)のインターフェースを明らかにすることです。とすれば、privateメソッドがいくら増えたとしてもそのメリットは減ずるものではないし、publicメソッドが増えるとしたら分割のメリット云々を論ずる以前にそもそも設計を間違えているんじゃないでしょうか。ユーティリティ的なクラスならともかく、通常のオブジェクトはそんなにたくさんのpublicメソッドを持つことは少ないと思います。 また、privateメソッドがやたら増えるとしたら、水平方向の「機能分割」ではなくて垂直方向に「階層化」をしっかりして機能をくくり出して新しいクラスにまとめるなどするべき状態なのかも知れません。 あとは、「機能分割」をしすぎで粒度が細かくなりすぎていないか、とか。むやみに分割するんじゃなくて「分析」してから設計していけばそんな無茶に細かくなることはないと思うのですけど。この辺の基準は感覚に頼ることになるのかな。 他に一般に言われるヘッダとソースの分離のメリットと言えば、ソースを修正した場合の再コンパイルの手間が修正したソースだけで済む、というのもあるでしょう。このメリットもメソッドの数とは無関係。 いずれにしても、メリットを考えてもなおデメリットの方が大きい、というほどのメソッド数があるのならば、それは設計を見直した方がいいのではないか、と思います。