エンジニア的なネタを毎週書くブログ

東京でWebサービスの開発をしています 【英語版やってみました】http://taichiw-e.hatenablog.com/

"Rename Hackathon"をしてみました

チーム内で、お祭り的なイベントとして、"Rename Hackathon"というイベントをチーム内でしてみました。

ルール

  • 参加者は30分間ひたすらプルリクエストを送り続ける
  • 「リネーム」のみ許可。名前を変更する対象は、クラス、メソッド、変数名、パッケージ名 など何でも良い
  • 1つのプルリクエストは、1単語だけ直して良い。複数の単語を修正したプルリクエストはルール違反として却下*1
  • 30分後の「リネームタイム」の後に通常のコードレビューを行い、Approveされたものだけがマージされる
  • 同じ箇所を複数人が直した場合は投票でどちらを選ぶか決める
  • 最もマージされた数が多かった人は表彰

結果

  • 参加者 : 6人(因みに…4名は日本オフィス。2名はインドオフィス。リネームタイムはリモートで同時に。)
  • 30分間に出された総プルリクエスト数 : 32
    • ルール違反 : 2件(複数箇所修正、パッケージを1回層削除)
    • 重複したため投票で却下 : 2件
    • コードレビューで却下 : 8件(まだ一部レビュー中なので増えるかも)
    • ということで残ったプルリクエスト数 : 12 ~ 20
  • 修正の例
    • クラス
      • 不要(しかも意味不明)な接頭辞や接尾辞の削除
      • 省略されすぎていて分かりにくい名前を展開
    • メソッド
      • booleanを返すcheckXXXX メソッドを isXXXXX メソッドに
    • 変数
      • i などの無意味な名前を 意味のある名前に

所感

楽しかった

お祭りみたいで楽しかったです。ある程度ゲーム性のあるルール*2をしっかり作ったので、数を競うのも楽しんでくれた感がありました。

コードがきれいになった

これはもちろん。本来なら最初のコーディング時に埋め込まれるべきでない名前もちらほらありましたが、どうしてもできてしまうのは避けられないもの。
また、開発者のドメインナレッジが増すことによってより良い名前を後から思いつくこともあります。
そういった、普段のもやもやを片付けられた良い機会でした。

初級者の学びに

32件中8件はコードレビューで却下ということで、たかだかRenameなんですが、意外と他の人の了承を得られていないんですね。*3
「良い名付けとはなにか」の学びができた、良い機会になったと思います。

*1:プルリクエスト単位でマージの可否を判断するため

*2:本来の目的は安全にリファクタリングをするため

*3:レビューは参加者同士の相互レビューです