give IT a try

プログラミング、リモートワーク、田舎暮らし、音楽、etc.

プログラミング初心者はgit commitする前に必ずdiffを自分でレビューするクセを付けよう

プログラミング初心者向けのTipsです。

まあ、タイトルに書いたとおりなんですが、プログラミング初心者は(というか、プログラマならみんな)git commitする前にdiffを自分でチェックするようにしましょう。

それはなぜか?

しょーもないミスを自分で見つけるためです。

しょーもないミスというのは例えば、消し忘れのコメントや、デバッグ用に書き込んだprint文、無駄な空行、おかしなインデント、管理対象外とすべき一時ファイルや隠しファイル等々です。

def create
  @book = Book.new(book_params)
  puts @book.title # ほら、デバッグ用のputsが残ってるよ!!

  if @book.save
    redirect_to @book, notice: '登録しました'
  else
   render :new # インデントが1文字ズレてるよ!!
  end
end

しょーもなくない、深刻なミスもあります。
たとえば、ついうっかり外部APIやAWSのキーとシークレットをdiffに混在させてしまっていた、なんてこともあるかもしれません(怖)。

# これは絶対コミットしてGitHubにpushしたらあかんやつ!!
AWS_ACCESS_KEY=AKIAJTR62TDCMHIFHOGE
AWS_ACCESS_SECRET=9Z/jzM0C+haty7f2hwroK9ADmw06wq/HogePiyoFuga

こういったミスをしないように、git commitのコマンドを打ち込む前にgit diffでこれからコミットしようとしているコードのdiffを自分でレビューするようにしましょう。
もちろんボーッとdiffを眺めるだけではダメです。
レビュアーになったつもりで自分で自分の粗探しをしてください。

f:id:JunichiIto:20210130170500p:plain
しっかり自分でdiffをレビューしよう!!

この時点できちんとミスを見つけ出し、コミット前に修正しておけば、プルリクエストを出したときにレビュアーからの指摘事項を減らすことができます。

チーム開発をしたりするときにしょーもないミスを連発していると、「この子、このままコードを書かせて大丈夫かな?」とレビュアーを心配させてしまうかもしれません。
ミスを可能な限りなくし、先輩エンジニアに「出来る新人」をアピールしましょう😎

コミット前にセルフレビューする実際の様子を動画で見てみる

以下の動画は僕が実際にRailsのプログラミングをする様子をスクリーンキャスト形式で録画したものです。
動画の8分あたりを見ると、僕がコミット前にdiffを確認している様子がわかります。
僕はRubyMineを使ってdiffを確認していますが、考え方自体はRubyMineを使わないときも同じです。


【お試し版】プログラマがコードを書きながら考えること 〜動画でわかるWebクローラー開発〜

なお、こちらの動画の完全版はBOOTHで販売中です〜。(番宣)
booth.pm

RuboCopのようなツールで自動チェックさせるのももちろんOK

目視によるチェックだけでなく、RuboCopやESLintのようなツールを使ってしょーもないミスを自動的に検出するのももちろんOKです!

ただし、ツールだけに頼るのはやめましょう。
ツールでもチェックしつつ、目視によるチェックも併用すべきです。(ツールで検出できないミスもあるので)

また、ツールの自動修正機能を使う場合もどこがダメだったのか、それがどう修正されたのかを確認して自分のコーディング力アップに役立ててください。
(ツールがないと綺麗なコードが書けない、ということにならないように!)

まとめ

というわけで、このエントリでは「プログラミング初心者はgit commitする前に必ずdiffを自分でレビューするクセを付けよう」という話を書いてみました。

ちなみにこれは僕がソニックガーデンに入社したときに先輩エンジニアから教えてもらったTipsです。
それまでは僕自身もそういう習慣を身につけていませんでした。
実際、この習慣を実践するようになってから、しょーもないミスが格段に減ったのを実感しています。

誰でも簡単に実践できる習慣だと思うので、プログラミング初心者のみなさんはぜひ実践してみてください!

あわせて読みたい

フィヨルドブートキャンプのメンター、 id:beta_chelsea さんが書かれたブログです。
ここでもほぼ同じ内容が書かれています。(そして僕もフィヨルドブートキャンプのメンターの一人です✌️)

beta-chelsea.hatenadiary.jp