14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Eclipseのコード補完で「えっ?」となったとき ~部分一致型コード補完(substring code completion)でつまづいたら~

Last updated at Posted at 2019-07-28

概要

環境

  • Eclipse IDE 2019‑06

「意図しない補完」とは↓のような場合(見たほうが早い)

Arraysでドット(.)を打つと、コード補完がはしる続いてtostringと入力してエンターを押すとdeepToStringが選ばれてしまう現象発生。

substring_miss_before_.gif

コード補完するときの部分一致(substring)は便利だが

以下のようにstringだけ入力しても、メソッド名の一部にstringが含まれるものを候補としてあげてくれる

substring_ok.gif

修正方法その1:メソッド名の部分一致をオフする

メソッド名の部分一致が悪さをしている面もあるので、この機能を設定からオフしてみる。

EclipseのメインウィンドウからWindow>Preference>Java>Editor>Content Assist の順で選択していくとShow substring matchesという項目image.pngがあるので、それをオフimage.pngする

image.png

部分一致(substring)をオフでつかってみる

なかなか良い感じ。
さっきみたいに意図せずdeepToStringが選択されることはなくなった。

off_substring.gif

あたりまえだけど、部分一致(substring)がオフだと、部分一致で補完できない

ためしに、Arrays.の後にstringと打ってみると、候補が何もでてこなくなった。

off_substring_miss.gif

修正方法その2

まず、さきほどと同じようにWindow>Preference>Java>Editor>Content Assistで設定画面ひらいてimage.pngはチェックを入れる。

これで部分一致をひとまず有効にする。

次に、Content Assistの[+]マークをおして設定を展開してAdvancedを選択する。

image.png

次に↓のようにJava Proposalsにチェックを入れる

image.png

これでOK

コード補完を試す

さて、この設定で再度、コード補完を試す。

意図した動作で動いている模様

proposals_fullmatch.gif

部分一致でコード補完を試す

部分一致のほうもちゃんと動作している。

proposals_partmatch.gif

修正方法2のほうが、より意図した動作(部分一致もつかえて、コード補完も意図どおり)となるようだ。

まとめ

  • Eclipseのコード補完で「意図しない補完になってしまう」と思ったときの現象と対策について説明しました
  • 部分一致でのコード補完(Substring code completion)機能はEclipse NEONで追加された機能ですが、その副作用で意図しない補完になってしまう場合にsubstring code completionをオフにしたり、Java Proposalsを有効にする対策を打つことで副作用を抑えられることがわかりました。
  • コード補完についてはIntellij IDEA(やAndroid Studio)のほうがだいぶ先行してsubstring code completionに対応しており、こうした副作用も無いよう予めチューニングされているようです。
    (Eclipseで遭遇するまであたり前で気づかなかったが、こういうUI工夫・使用感のチューニングで生まれる微差が生産性や品質に影響を与えるんだよなぁ、っと。)
14
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?