📑

【初心者向け】arrayとかhashとか引数とかを1行で書くと🚨🚨🚨🚨される理由

2022/07/24に公開

初心者向けと言いつつ、上級者でもやりがちで僕も結構突っ込む事が多いのですが

validates :name, presence: true, length: {maximum: 10, minimum: 20}

こういうコードは基本的に良くないです。もし次にこれをこのように変更した場合

validates :name, presence: true, length: {maximum: 100, minimum: 20}

gitではこのように表示されます

これ1つなら数値を変更したというのはわかりますが、こういう箇所が山のようにあると誤読する可能性も上がりますし、1行が長いとスクロールしないとその箇所が出てこなかったり、1行を2箇所以上変更していても最初の方しか気づかなかったりして将来的な改修コストやレビューコストが非常に高くなります

従って超めんどくさくてもきちんと1行ごとに分割する方が良いです

validates(
	:name,
	presence: true,
	length: {
		maximum: 100,
		minimum: 20
	}
)

上の画像はまたもやgitですが、どこが変更されたのか一目瞭然で「ああ、数値を変えたんだな」というのが一瞬で分かります

ちなみに僕も面倒くさくて個人のプロダクトではやらない事が多いですが、複数人が関わるようなプロダクトだったり他人にコードレビューしてもらうような現場では出来る限りやるべきだと思ってます

同じような話でarrayなどもできる限り行で分割するほうが良いです

🚨🚨🚨
array = [:one, :two, :three, :four]
array = %i(one two three four)

💮💮💮
array = %i(
  one
  two
  three
  four
)

気持ち悪い気がするのも1行で書いた方が収まりがいいのも超絶気持ちはわかるんですが、現代においては人間様よりもgit様にフレンドリーな書き方をするべきなので「この書き方気持ち悪いなー」と思いながらgit様の読み取りやすいように各自書いてもらえると嬉しいです

※この書き方を強制するという話ではなく、こっちのほうがgitフレンドリーであり将来的なコストも下がるので出来れば取り入れたほうが良いよーって話です

Discussion