16
7

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 1 year has passed since last update.

Alt(Opt) + Enter だけじゃもったいない! Rider小テク

Last updated at Posted at 2022-12-16

※本記事は、Unityゲーム開発者ギルド Advent Calendar 2022 16日目の記事となります。

みなさん、Rider使ってますか。 良いエディタですよね。
僕の周りにも「Riderはイイゾ」おじさんが沢山います。
(学生さんなら無料で使えるらしいので、使ってないかたは是非)

RiderおよびJetBrains社の生い立ちや、Alt(Opt)+Enterなどの基本情報については他の方々におまかせして

今日はあまり語られる事の無い「ピリオド機能」についてご紹介したいと思います。

What's ピリオド機能

そもそも「ピリオド機能」という名前ではないと思います。
(僕が勝手につけました。)

これは、何かしらの構文に対して、後ろに「.(ピリオド、ドット)」を付けると候補が出てくる例のやつです。
(いわゆるコード補完。VSで言うIntellisense)
もちろん

public class Test{
    public int value;
}

public class Hoge{
    Hoge(){
        var t = new Test();
        t.
    }
}

ここまで打てば
image.png
が候補に出てくるのはご存知の通り。
しかし、よくよく見ると他にも出てきてますよね。

image.png

実はこれらが便利なんですよ奥さん。

変数格納系

.var

このように
var.gif
ローカル変数に格納してくれます(もちろん、変数名は値から推論されたええ感じの変数名)

また、
var2.gif

このように括弧の中にも使えますし、複数で使われている場合は、「**個かあるけどどうする?それらも一括でローカル変数に入れちゃう?」と聞いてくれます。気が効きすぎかよ。

.field

前述の .var で一回ローカル変数に入れてから、リファクタ(環境によりますが、 Ctrl(Command)+Shift+R とか)でフィールドに昇格してもいいんですが、
field.gif

このように一発でフィールド変数を宣言してくれます。

.prop

同じくこれはプロパティを作ってくれます。
prop.gif

条件判定系

.if

これは「.」の前がboolの時のみ使用可能で
if.gif

このように、if文を作成してくれます。

.else

これは .if の亜種で、elseブロックを作る・・・ のではなく、条件を反転させたif文を作ってくれます。
else.gif

if文の後に invert if 使ってもいいけどね

.not

not.gif

あんまり出番無いですが、boolの判定を反転させてくれます。 ↑の .else は実は .not.if をやってくれている感じなんですかね。

.null

これは「nullだった場合if文」を作ってくれます。
null.gif

a == null まで打ってから .if って書いてももちろん良いんですが a.null でもOK
?.?? が使える今となってもUnityにおいてはnullと比較することは大きな意味があるので結構つかうんじゃないでしょうか。

.notnull

同じく、「nullじゃない場合if文」を作ってくれます。
notnull.gif

とっさに出てくるかどうかはキミ次第だ!

.while

ifがあるなら、whileもあります。
while.gif

untilは無いので。 .not .while って打ちましょう。 そんなやつおるか?

列挙系

.for

配列などのindexアクセス可能な構文に対して使えます。
for.gif
Listだとちゃんと、.Count() 使ってくれます。気が利いてるぅ。

.forr

末尾からアクセスしたいこと。ありますよね?
forr.gif

はいそこ! .for した後に 「Reverse 'for' loop」でも良いとか言わない!

.foreach

自動でforeachブロックを作成してくれる君です。IEnumerable な構文に対して使えます。
foreach.gif

個人的には .foreach でforeachブロック作ったあと、Alt(Opt)+Enter で 「Convert for」ってやったほうが、配列のローカル変数への代入もやってくれるので便利だな。とは思いますよ。ええ(趣旨が崩れる・・・)

その他

.switch

指定した構文を対象としたswitchブロックを作ってくれます。
switchcase.gif

Alt(Opt)+Enterでもちろん対象がenumだったりすれば、case を全部用意してくれるのではい、便利ー。(もうAlt+Enter使い始めちゃった)

.new

new が正しい位置に移動します。
new.gif

これだけ見ると使わなそうですが、カーソル位置がそのまま末尾なのでさらに .var.field 等使って変数に格納することが多いです。

が、
実はクラスに対して .var.field とすると、勝手にnewしつつ変数代入してくれるので、そっちつかってもOK。
newvar.gif

.await

async なメソッド内であればTask(UniTask)に対して .await で、await を正しい場所に入れてくれます。
await.gif

いらなくない? と思うかもしれませんが。
プログラマーの思考的に「待ち受けよう = await」が先ではなくて「**の処理を非同期で」と、「したいこと = Task」が先にあるもんなんです。

加えて気が利いているのが、これまたカーソルの位置がそのままなんですよ。

なので、 .await.var で、awaitした結果をローカル変数に代入。 までがさらっとできちゃいます。

awaitvar.gif

うーん。あわせ技一本。

まとめ

以上、僕が知っている(そして使ったり使わなかったりする)Rider小テクでした。
題名には「Alt(Opt)+Enterだけじゃもったいない」とは書きましたが、上記テク+Alt(Opt)+Enter で もっともっと効率化していくので各自仲良く!

では。 良きUnity+Riderライフを。

16
7
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
16
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?