いつでも起こりそうな普遍的なエラーの原因を並べておく【随時追記】【自分戒め用】

今はrubyを勉強しているので主にrubyの話になるが、
どの言語でも同じようなことはありうるというか
結局元をたどるとパーソナリティのせいというか
ズボラな面が顔を見せがちなエラーを並べておいて
たまに見返してウッってなって
同じ過ちを繰り返さないように心を正したい。

①シンプルにスペルをミスる

焦ってタイピングして同じ文字が並んじゃってたり
(userがuseeerになっているとかしゃれにならんレベルの)、
ふつうの英単語とかでさえミスっていたりする
(requireがrequeireとかになってて気が付かなくて1時間位ハマった)。
これでも今までの仕事では英語を使うこともあったので、
目とかは英語になれてるはず。(目とか?)
なのにコード上になるとしょっちゅうスペルをミスっている。なんでだろう。

今まで勉強してきたはずの英語の記憶が
コーディングの土俵に立つとすべてリセットされるのだろうか?
これまで培ってきたものをまっさらにして取り組もうみたいな気持ちが
なんだか空回りして悪い方にいっちゃっているのだろうか?
いずれにせよケアレスミスに間違いないので慎重に書くようにする。

②メソッド閉じ忘れ

rubyはメソッドを定義するとき
def メソッド名〜 で始まり 〜end で終わる。

def greeting
  puts "Hello"
end

よくendを忘れる。
よくこのエラー画面と目が合う。

syntax error, unexpected end-of-input, expecting end


言い訳じゃないけど昔ちょっとかじったJavaのメソッドは{}で囲んでた。

public static void greeting(){
    System.out.println("Hello");
  }

テキストエディタってとってもかしこいので、波括弧のはじまり{ を打つと
勝手に }もくっつけてくれる。
中身だけ書いておけばいい。
defはdefって書いても勝手にendはくっつかない。
メソッドの終わりにeを打つとendが出て来て、控えめだけど気が利くみたいな顔で
インデントを一歩前にさっと動いてくれるのはありがたい。けど、
そもそもendを書く習慣が身についてない。
多分Javaの }を書く習慣も身についてなかったんだろうな。(;は必死で書く)


【追記】
VScodeでendを補完してくれる拡張機能見つけた。
endwise - Visual Studio Marketplace
ないほうが、ちゃんとendを書く癖が付きそうな気もするけど、
今後もexpecting endとよく出会いそうな気もするのでとりあえず有効化しておく。
知識としてendをつけるっていうのはわかっているからいいや。
それ以外のエラーとも死ぬほどやり合うことになるのと思うので
エディタに頼って潰せるものは潰しておく。


③:のつけ忘れ

これはただ単純にシンボルの使い所をちゃんと理解できていない。
hoge: :hogeとか並ぶとすごい違和感感じている時点で理解できてないんだろう。
ハッシュと最初に接したときくらいはまだ理解できていた(はず)。
文字列っぽく扱えるけど数値だから処理速い的なことらしく、
そのへんのフレキシブルな感じがrubyすげえ!って思った覚えがある。
Javaで最後の方にちらっとenumを使ったときの感動に似ている。
え?めっちゃ日本語なのに””で囲まなくていいの?っていう)

それがrailsやっててもシンボルっぽいのがバンバン出てきて
それがシンボルなのか何なのかもよくわからなくなってきてしまっている。
今書いているコードはモデル名なのか?コントローラーなのか?
テーブルの名前なのか?カラム名なのか?アクションなのか?メソッドなのか?
そこらへんがいつも迷子。

まずはちゃんとシンボルを押さえるところからやるか。