コードフォーマッタを適用して一歩上の開発体験、成果物に仕上げよう


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

これでやっと、人様に見てもらえるコードのスタートラインに立てます。
厳しいようですが、現場だと機械に弾かれることも多く当然のレベルになります。

ショートカットを覚えるとか自動的にフォーマットを掛けるとか工夫して息を吸うようにフォーマットを掛けるとスムーズに開発できるようになります。

終わりに

  • エンジニアは何らかのルールに従った統一感を大事にします。
  • それに従うには機械が自動的に直してくれたり、チェックしてくれたりします。
  • 機械の助けを得ることはスムーズに開発する上でも重要。このへんはあんまり教えてくれる人がいない印象。