Stop using self.when, don't use reserve words #44
takaokouji
started this conversation in
ADR (Any Decision Record)
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
-
Stop using self.when, don't use reserve words
Sorry, this is written in Japanese.
self.whenからself.を取り除いたRubyの命令を検討する
イベントカテゴリの
フラグが押されたとき、[スペース▼]キーが押されたときなどの各種イベントに対応したブロック(以下、イベントブロック)は、self.when(:flag_clicked) do ~ endのように Ruby ではSprite#whenメソッドにマッピングされる。self.whenには次の課題がある。self.を省略するが、whenは予約語であるため、常にself.を記述する必要があるイベントブロックは多用されるため、これが不自然なものであれば、スモウルビーを通じてRubyの文法を学習するときに問題となることを懸念している。
そこで、イベントブロックから Ruby の命令へのマッピングとして
self.whenではない別の選択肢を検討する。判断基準や制限
選択肢
when_%event_type%(%args%)When(:%event_type%, %args%)_when(:%event_type%, %args%)on(:%event_type%, %args%)決定
採用:
when_%event_type%(%args%)on(:%event_type%, %args%)と迷った各選択肢の良い点と悪い点
when_%event_type%(%args%)+増えた記号が_で減った記号が:なので+-0+self.分、タイプ数が減る+メソッド名がブロックの英語表現と類似しているwhen [loudness▼] > 10がwhen_greater_than("loudness", 10) do+メソッドが分かれるのでRubyからブロックへの変換処理の実装が簡単になる-メソッドが増えるself.whenの場合はwhenメソッドのみだったWhen(:%event_type%, %args%)+self.を記述しなくてよい+self.whenからの変更が少ない-Ruby にはメソッド名を大文字から始める習慣がないため、Rubyの初学者に誤った知識を与える可能性がある-Rubyの初学者がまったく動作の異なる予約語whenをこの When メソッドだと勘違いして覚えてしまう可能性がある_when(:%event_type%, %args%)+self.を記述しなくてよい+self.whenからの変更が少ない-(Whenと同様に ) Ruby にはメソッド名を_から始める習慣がないため、Rubyの初学者に誤った知識を与える可能性がある-(Whenと同様に ) Rubyの初学者がまったく動作の異なる予約語whenをこの When メソッドだと勘違いして覚えてしまう可能性があるon(:%event_type%, %args%)+self.を記述しなくてよい+self.whenからの変更が少ない+onはイベントハンドラとして違和感がないメソッド名である+タイプ数が少ない-メソッド名がブロックの英語表現とは異なるwhen :flags: clicked、when [loudness▼] > 10など。Beta Was this translation helpful? Give feedback.
All reactions