2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MENTAについて語ろう!Advent Calendar 2021

Day 9

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

Last updated at Posted at 2021-12-08

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 の終わりでまだ続きがあります。

せっかく作ったポートフォリオがこんなでは、例えちゃんと動いたとしても以下のマイナスイメージを強く持たれてしまいます。

  • 詳しく見る気がなくなる
  • 開発効率が悪そうに見える(≒ 仕事が遅い)
  • インデントがわかってない(≒ 技術力が低い)

機械の力に頼る

一つ一つ丁寧にインデントをチェックし直していく…そんな時代ではなくなりました。
機械の力に頼ってきれいに整えましょう。

image.png

例えば 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

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

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

終わりに

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?