昨日のコーディングテクニックの話。
まずはサンプルソース。例によって処理内容はまったく意味が無い。
class TestClass { private: int mNum1; int mNum2; public: TestClass* SetNum1(int i) { mNum1 = i; return this; } TestClass* SetNum2(int i) { mNum2 = i; return this; } }; int main() { TestClass* pTest = (new TestClass) ->SetNum1(123) ->SetNum2(456); }
あるクラスのメソッドの戻り値を自分自身にしておけば、それらのメソッドをつなげて書くことが出来るというわけ。
昨日はクラスの定義を見る前に上のソースのようにメソッドが並べてあるのを見たため、あれ?と思ってしまった。今まであまり見かけない書き方だったので。
サンプルを書いていて以前にこういうテクニックがあるというのをどこかで見たことを思い出した。ということは割とありふれているテクニックなのかも。というよりテクニックと呼べるほどのものでもないのか。
クラスを作ったときに値を設定するようなメソッドは並べて書けるので、ぱっと見て何を設定しているのかわかりやすいコードになりそうだ。
ちょっと気になるのは自分が使っているエディターだと前の行にセミコロンが無いため、次の行が改行したときにインデントが一つ深くなってしまうこと。ま、そんなのすぐに自分で揃えればいいんだけど。