Ruby on Railsチュートリアルを9章の途中まで進めています。
ここまでで特に疑問になった点を記事にしました。
いろいろな記述方法を紹介している
「9.1.1 記憶トークンと暗号化」ではクラスメソッドの書き方が紹介されます。
class Hoge
def Hoge.fuga
# なにかする
end
end
演習問題では更に2つの記述方法が紹介されます。
class Hoge
def self.fuga
# なにかする
end
end
class Hoge
class << self
def fuga
# なにかする
end
end
end
これらはどれも同じ動作をする記述として紹介されていますが、
「どの記述が正解なのか」はチュートリアルの中では明言されていません。
Rubyのコーディング規約
では、Rubyの開発現場ではどうやってコードを書いているのか。
例えば、コーディング規約はあるのか。
ぐぐってみると、公式としてのコーディング規約は存在しないようです。
また、この記事で述べられてますが、まつもとゆきひろ氏はコーディング規約には否定的なようです。
https://blog-ja.sideci.com/entry/2018/03/02/120636
まつもと : コーディング規約を決めてくれないと仕事できないよ!っていうような人もいて、「君、本当に仕事してる?(笑)それは自分で考えようよ」と思っちゃう。ただ、インデントの幅とかスペースかタブかみたいな話は、修正するとdiffが大量に出てくるのでそれは事前に考えておいたほうがいいと思いますね。
氏のブログの古い記事にはコーディングスタイルに触れたものがありました。
これが受け継がれて各開発現場のコーディング規約の基になっているのではと思います。
https://matz.rubyist.net/20041006.html
また、この記事には当時の勤務先だった会社のコーディング規約へのリンクがあり、
その規約ではクラスメソッドには self. を用いるルールになっていました。
一例として参考にできそうです。
https://shugo.net/ruby-codeconv/codeconv.html
まとめ
チュートリアルではWebサイトを作成しながら、Rubyの記法を少しづつ紹介しています。
それらは開発現場によっては禁じられていたり、人によって書き方が違っているかも知れません。
柔軟に対応できるように、チュートリアルを進めながらRubyの言語仕様を細かく把握しておく必要があると思いました。