ume

現役エンジニアの方にコードレビューで指摘していただいたこと

前書き

  • この記事は私自身の忘却録として記事に残します。

class内の処理はメソッド名の位置に揃える

NG例 defとendに邪魔されメソッドの中の処理(@number)がみにくい

def initialize
@number
end 

OK例 メソッド名の下から処理が書かれている方が見やすい

def initialize
    @number
end 

定数と変数の使い分けをする

定数とは?
⇨後に変更されないデータを入れておく箱のイメージ.
例 曜日

WEEKS = ["月","火","水","木","金","土",”日”]

⚠️定数名は大文字で定義する.

変数とは?
⇨後に変更されるデータを入れておく箱のイメージ.
例 年齢

age = 28

⚠️小文字で変数名を定義する

変数を文字列と連結する際+メソッドではなく"#{}"式展開を使う

NG例

month = 12 

puts month.to_s + ”月”
⇨出力結果12月

OK例

month = 12 

puts "#{month}月"
⇨出力結果12月

どちらも同じ結果なのになぜ"#{}"式展開でないといけないのか?

理由①.to_sのつけ忘れによるエラーを防止できる

⇨出力時に自動的に#to_sが適用されるので+メソッドのつけ忘れでエラーになることはない

理由②変数の中の型に限らず連結できる

+メソッド(nilを連結する場合)

name = nil

puts name + "です"
⇨出力結果  undefined method `+' for nil:NilClass (NoMethodError)

エラーになる.

"#{}"式展開の場合

name = nil

puts  "#{name}です"
⇨出力結果 です

エラーにならない.
つまり式展開を使う場合変数の中身の型を気にせず実行できる。

まとめ

  • 1つ1つはすごく細かいことだが記述量が増えると露骨に可読性を下げるので常に誰かに見られる意識を持ってコードを書く