Upgrade to Pro — share decks privately, control downloads, hide ads and more …

若手が可読性を上げるために気を付けたこと / 20210707_readablelt_nazato

若手が可読性を上げるために気を付けたこと / 20210707_readablelt_nazato

Cdf97a1b1b132c56582773c3ba09a3a6?s=128

Rakus_Dev

March 14, 2022
Tweet

More Decks by Rakus_Dev

Other Decks in Technology

Transcript

  1. 若手が可読性を上げるために 気を付けたこと 名里 梨佐

  2. 自己紹介 • 氏名 • 名里梨佐(ナザトリサ) • 所属 • 株式会社ラクス •

    仕事 • Mail Dealerの開発をしています
  3. 本日のお話 個人でプログラムを書くことしかしていなかった人間が、 グループの一員として開発に関わるようになって2年と少し。 可読性を良くするために考えさせられたことを 多かった指摘のコメントランキングと共にお話します。

  4. 第3位 コメントが(不要です/必要です)

  5. コメント • 自分一人しか見ないコードは結構コメントを適当に書いていた • コメントの要否の判断の重要性 • 短いコードにいちいちコメントを付ける必要はない • 複雑な処理をしているコードや関数は意味が分かるようにコメントを付ける →

    致し方なくこういうコードにしなければならなかった背景・理由など
  6. 第2位 名前が分かりにくい

  7. たかが命名、されど命名 • 接頭辞を使う • isXXX • hasXXX • canXXX •

    具体的な名前を使っているか • Get()は使いやすいが、状況によってはDownload()などの方がより明確に伝わるか も • Itemなども便利ではあるが、汎用的なので分かりにくい時もある。 例)「checkItem()」→「checkSortItem()」
  8. たかが命名、されど命名 • 一般的な単語を使っているか 命名時 翻訳してみよう→そのまま使うはNG 簡潔な単語を使っても、一般的に使われる単語でなければ、他の人が分からない ただ、逆に簡単な言葉を使って分かりにくくなるケースも… 例)項目名が正しいかをチェックする関数を作りたい 「checkItemName()」 →

    「validateItemName()」 checkは便利だが、何をチェックしているかわからない 正しいことをチェックすることがわかるようにしないといけない
  9. 第1位 冗長です

  10. 何日か後の自分は他人です • 何日か後の自分が読みにくいコードが、他人に読めるはずがない • ネストが深いコードは読みにくさがMAX → 何か月か後に自分が書いたコードだと思って修正しようとすると 思ったより読めない • 対策

    • 関数として切り分ける • 複数の処理を関数内で持たせるのは避ける • 複雑にせざるを得ない場合はコメントを残す 特に試行錯誤してやっとできたコードほど読みにくくないかを確認すべし!!
  11. early return • メソッドの先頭で渡された引数が不正な値でないかチェックして、もし不 正な値であれば return で即メソッドを抜ける →その後の処理は引数に不正な値でないか気にする必要がなくなるので、 コードがスッキリ

  12. コメントでコーディング • 状況に応じた粒度で実装の流れを書いてみる →やりたいことが明確になる //実行権限のチェップロードしたファイル関連のチェック //実行権限のチェック //アップロードしたファイル関連のチェック //ファイルの存在確認 //ファイルを読み込めているかチェック //空チェック

    //項目数のチェック //項目のデータのチェック //登録処理 イメージ(ファイル関連の処理)
  13. まとめ 可読性の高いコードを書く方法については段々つかめてきたが、 コードを書くということは可読性だけを気にしていたらいいわけではない 次は保守性、拡張性との戦いへ…

  14. ご清聴ありがとうございました!!