TL;DR フォーマッタを使っていますか?
人間が以下のことを頑張って直す時代は終わりました。
- インデント崩れ
- コーディングフォーマットの統一
機械にやらせましょう。
機械にやらせると楽だし、ミスがありませんし、機械は人間の間違いを指摘してくれたりします。
サンプルコード
極端な例ですが、似たレベルのはよく目にします。
今回の例は Ruby ですが他の言語にも応用が効くものです。
def create
@user =User.new(user_params)
if @user.child?
raise "invalid params"
end
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: "OK" }
format.json {render :show, status: :created, location:@user}
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end end end
何が問題なのか?
def create
@user =User.new(user_params)
if @user.child?
raise "invalid params"
end
このコードはここで create
メソッドが終わっているように見えます。
でも実は
def create
@user =User.new(user_params)
if @user.child?
raise "invalid params"
end
# まだ処理が続くよ!
end
if
の終わりでまだ続きがあります。
せっかく作ったポートフォリオがこんなでは、例えちゃんと動いたとしても以下のマイナスイメージを強く持たれてしまいます。
- 詳しく見る気がなくなる
- 開発効率が悪そうに見える(≒ 仕事が遅い)
- インデントがわかってない(≒ 技術力が低い)
機械の力に頼る
一つ一つ丁寧にインデントをチェックし直していく…そんな時代ではなくなりました。
機械の力に頼ってきれいに整えましょう。
例えば VSCode であれば ドキュメントのフォーマット
の機能があります。
標準ではサポートされない言語はプラグインがあったりします。
他には [言語名] フォーマッター
や [言語名] linter
などで検索してみると良いでしょう。
例えば Ruby だと Rubocop が有名で、以下のように自動的にフォーマットを適用してくれます。上のコードは以下のようになり、一気にコードの品質が上がったように見えます。
def create
@user = User.new(user_params)
raise "invalid params" if @user.child?
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: "OK" }
format.json { render :show, status: :created, location: @user }
else
format.html { render :new }
format.json { render json: @user.errors, status: :unprocessable_entity }
end
end
end
これでやっと、人様に見てもらえるコードのスタートラインに立てます。
厳しいようですが、現場だと機械に弾かれることも多く当然のレベルになります。
ショートカットを覚えるとか自動的にフォーマットを掛けるとか工夫して息を吸うようにフォーマットを掛けるとスムーズに開発できるようになります。
終わりに
- エンジニアは何らかのルールに従った統一感を大事にします。
- それに従うには機械が自動的に直してくれたり、チェックしてくれたりします。
- 機械の助けを得ることはスムーズに開発する上でも重要。このへんはあんまり教えてくれる人がいない印象。