$30 off During Our Annual Pro Sale. View Details »

コーディング規約で悲しみを生みたくない話

 コーディング規約で悲しみを生みたくない話

第一回 RubyでLTしちゃわナイト(https://corundum.connpass.com/event/140161/) で発表したLTの資料です。

Hirotaka Miyagi

September 13, 2019
Tweet

More Decks by Hirotaka Miyagi

Other Decks in Technology

Transcript

  1. Copy Right © Taimee.inc 2019 - 1
    コーディング規約で悲しみを生み
    たくない話
    株式会社タイミー 宮城 広隆

    View Slide

  2. Copy Right © Taimee.inc 2019 - 2
    自己紹介
    - 宮城広隆
    - GitHub/Twitter @MH4GF
    - 株式会社タイミー
    - Ruby/Rails歴は1年半

    View Slide

  3. Copy Right © Taimee.inc 2019 - 3
    コーディング規約
    みなさんのプロジェクトにはコーディング
    規約はありますか?

    View Slide

  4. Copy Right © Taimee.inc 2019 - 4
    コーディング規約あるある
    - 悲しみを生みがち

    View Slide

  5. Copy Right © Taimee.inc 2019 - 5
    コーディング規約あるある
    プロジェクトに特化したものであるほど辛
    くなっていく

    View Slide

  6. Copy Right © Taimee.inc 2019 - 6
    コーディング規約あるある
    作りたくない

    View Slide

  7. Copy Right © Taimee.inc 2019 - 7
    コーディング規約あるある
    しかし、複数の答えがある場合、チーム
    としてどれかを選択したくなる時がある

    View Slide

  8. Copy Right © Taimee.inc 2019 - 8
    コーディング規約あるある
    その小さな例を紹介します

    View Slide

  9. Copy Right © Taimee.inc 2019 - 9
    Time型のオブジェクトをstringに変換する

    View Slide

  10. Copy Right © Taimee.inc 2019 - 10
    Time型のオブジェクトをstringに変換する
    Time::DATE_FORMATSを定義するとDRYだよ、と新しくチームに参加
    したエンジニアが教えてくれた

    View Slide

  11. Copy Right © Taimee.inc 2019 - 11
    Time型のオブジェクトをstringに変換する
    こうできる

    View Slide

  12. Copy Right © Taimee.inc 2019 - 12
    Time型のオブジェクトをstringに変換する
    - 記述量が少ない
    - 設定を一つのファイルで管理できる
    良さそう

    View Slide

  13. Copy Right © Taimee.inc 2019 - 13
    Time型のオブジェクトをstringに変換する
    数ヶ月後、新しく入ってきたエンジニアが出してくるPR
    にはstrftimeが使われていた

    FYIとしてto_sで変換できるよとレビューをした

    View Slide

  14. Copy Right © Taimee.inc 2019 - 14
    Time型のオブジェクトをstringに変換する
    これが新しいエンジニアが入るたびに続く…

    View Slide

  15. Copy Right © Taimee.inc 2019 - 15
    Time型のオブジェクトをstringに変換する
    別の方法としてI18nがある

    View Slide

  16. Copy Right © Taimee.inc 2019 - 16
    Time型のオブジェクトをstringに変換する
    別の方法としてI18nがある

    View Slide

  17. Copy Right © Taimee.inc 2019 - 17
    Time型のオブジェクトをstringに変換する
    - DATEFORMATより記述量は多いが、I18nはRails
    を使う開発者なら馴染みがある

    View Slide

  18. Copy Right © Taimee.inc 2019 - 18
    チームでの議論が続いた
    - strftime
    - DATE_FORMAT
    - I18n

    View Slide

  19. Copy Right © Taimee.inc 2019 - 19
    ここまで
    プロダクトの価値には何も寄与していない

    View Slide

  20. Copy Right © Taimee.inc 2019 - 20
    チームでの議論が続いた
    チームで議論した結果、基本的にはI18nを使うのがい
    いだろうが、強制はしない、という結果になった

    View Slide

  21. Copy Right © Taimee.inc 2019 - 21
    終わり
    - コーディング規約を作るなら、驚き最小な方を選ぼ

    - 本当に強制するメリットはあるのか

    View Slide