メニューを閉じる

テクノモバイルグループ

メニューを開く

2014.11.28

プログラミング

C# メソッドチェーンもどき

こんにちは、KTです。

C#でメソッドチェーンもどきの書き方を紹介します。(多分批判はいろいろあると思いますが、私がこういう書き方好きなのでということで)

改めて紹介するレベルじゃないかもしれないですが。。。

 

ご存知の通り、メソッドチェーンとは

 

のようにあるオブジェクトのメソッドを連続して呼ぶ方法のことですね。

これを実装するには

 

のように、メソッドの最後で自身のインスタンスを返すようにすることで実現出来ます。

 

話は変わって、こちらはJavaScriptのSocket.IOというライブラリを使う時のコードです。

メソッドチェーンと思いきや、jsonやbroadcastにメソッド呼び出しの()が付いてないですよね?

 

メソッドチェーンで

としてしまうと、json、broadcast、emitが全て同列に見えてしまいます。(jsonしてからbroadcastしてからemit。。というように)

 

と書いた方がjsonやbroadcastは、emitというメソッドの動作を指定するためのいわゆる形容詞的な存在であり、あくまでここで行いたいのはemitであるということが分かりやすくなりますよね。

 

さて、これをC#でも実現しましょう。

といっても実現するのはとても簡単です。

getterメソッドを使えば良いのです。(上述のSocket.IOのjson、broadcastも正体はgetterメソッドです)

getterメソッドは、その名の通り変数に値をセットするためのメソッドであり、特徴として()無しで呼び出すことが出来ます。これを利用して()無しで呼び出せるメソッドを作りましょう。

 

このように、getterでフラグを変更して自身のインスタンスを返すようにすると

 

のように、json、broadcastを()なしで呼び出すことが出来るようになります。

 

冒頭にも書いた通り、今回の内容はおそらく批判される方が結構いると思います。

本来のgetterメソッドの用途とは全く異なる方法で使用していますし、濫用すれば途端に読みにくく、解読しにくいコードになる可能性が高いですしね。

ただ、それでも適切に使えばコードの可読性をあげることが出来る方法だと思います。

用法、用量をお守りくださいってやつですね。

 

この内容に批判的な方でも、こんな書き方をしてるコードに出会った時に「???」ってならないように、知っておいて損はないと思いますよ。

 


【テクノモバイルではエンジニア/デザイナーを積極採用中です!】

下記項目に1つでも当てはまる方は是非、詳細ページへ!
  • 自分でアプリを作ってみたい
  • ITで世の中にワクワクを生み出したい
  • 使いやすさ、デザインにこだわったWebサイトを開発したい

採用情報の詳細はこちら


Qangaroo(カンガルー)

  • 徹底した見やすさと優れた操作性で、テストの「見える化」を実現。
  • テストの進捗が見える。開発がスマートに進む。
  • クラウド型テスト管理ツール『Qangaroo(カンガルー)』
https://qangaroo.jp/

最近の記事

SNS共有

X CLOSE
X CLOSE
X CLOSE