IntelliCode を使ってみて戦慄した
Buildで発表されていたIntelliCodeを試してみたら思ったよりスゴかったので書いてみた。
インストール
MarketPlace から .vsix をダウンロードしてインストールする方法と、VisualStudio の「拡張機能と更新プログラム」からインストールする方法の二通りがあります。
特にこだわりが無い限り「拡張機能と更新プログラム」から入れるで良いと思います。
拡張機能と更新プログラムで Visual Studio Marketplace を選択し、"IntelliCode" で検索すると出てきます。VisualStudioが最新版でない場合は出てこないので、VisualStudioのバージョンが古い場合は先にアップデートを掛けましょう。
使ってみる
現在はC#のみ対応です。
よく使うであろうメソッドが★付きで上位に出てきます。地味に嬉しいですね。
IntelliCodeのココがスゴイ
そしてここからがスゴイ所。今までの IntelliSense は例えばクラスインスタンスと. を入力した時に入力候補となるメソッドやプロパティがアルファベット順に出てきますが、IntelliCode は前後のコンテキストから多く使われるであろうものを自動的に前の方に出してくれます。
つまりどういうことだってばよというと例えばこんな感じ。
普通に HttpClient で何かダウンロードするコードを書こうと思います。
適当に HttpClient を確保して GetAsync() で HttpResponse を持ってきます。
で、「response.」まで入れて次の入力候補に出てくるのはこんな感じ。
ほう、オススメは StatusCode ですか・・・
普通はステータスコードをチェックしてから処理すると思うのでステータスコードをチェックしてから処理するコードにしましょう。
if文の中だと第一候補が IsSuccessStatusCode に変わりました。「HttpResponse取った後で if(response. まで書いたら後に続くのは当然 IsSuccessStatusCode だよね?」と言われている気がします。
そして、ステータスコードをチェック後そのブロックの中で「response.」を入力すると・・・
すっご!!
そうですよね! HttpResponse 取って成功かチェックしたら次に見るのは普通 Content ですもんね!
つまり従来の単純な入力候補を出すものに対し、前後の文脈から「こういうコードの後ではこれが使われる事が多い」というのを判断し場所によって最適と思われる入力候補が上位に出てくるという事ですね。
感想
ちなみにここまでいい感じに動くのは HttpClient とか一般的に良く利用されるクラスやメソッドだけで、あまり利用されていないクラスや(GitHubで公開されているソースから学習しているらしい)、そもそも自分で定義したクラスだとそこまで気が利いた動きはしません。
とはいえここまで頭良く補完の候補が出るのなら定型的な処理ならほぼ手を動かさずにコーディングできちゃう日も遠くはないと期待してしまいます。