Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

リーダブルコード勉強会

  • Be the first to comment

リーダブルコード勉強会

  1. 1. セッション in Javaで実践するリーダブルコードぷらす 2013.06.29 松本礼永
  2. 2. 自己紹介 • 名前: – 松本 礼永 • 普段の仕事: – 主にJavaで Webアプリケーション開発してます。 • 最近興味あること – Ruby, Scala (え、今更 !? )
  3. 3. リーダブルコード本 • 著 – Dustin Boswell – Trevor Foucher • 訳 – 角 征典
  4. 4. リーダブルコードって? 『読みやすいコード』(※) どうなったらリーダブ ルなの? 誰が判断する の? (※)書籍から抜粋
  5. 5. これってリーダブル? If ( !isNotEmpty(str)){ }else{ do(); } それって、なくはないよね
  6. 6. どっちがリーダブル?
  7. 7. リーダブルの定義 『コードは他の人が最短時 間で理解できるように書か なければならない。』(※) (※)書籍から抜粋
  8. 8. 今日やりたいこと 他の人が最短の時間 で理解できるようなコード の書き方を改めて見直す。 他の人のため? コードの品質、何より 未来の自分のため
  9. 9. どうすればリーダブルになるか?
  10. 10. リーダブルにするための要素 • 名前 • コメント • 制御フロー • 処理の分割と構成
  11. 11. リーダブルにするための要素 •名前 • コメント • 制御フロー • 処理の分割と構成 情報をつめこむ。 誤解されない名前。
  12. 12. 名前に情報をつめこむ 明確で正確な単語
  13. 13. ページを外部から読み込み取得する × ○
  14. 14. 名前で人のリストを検索する × ○
  15. 15. 名前に情報をつめこむ より具体的な名前
  16. 16. 文字列Listの中からヒットしたindexのリスト を返す × ○
  17. 17. DateからyyyyMMdd形式の文字列に変換 する。 × ○
  18. 18. 名前に情報をつめこむ プレフィックス と サフィックス
  19. 19. ファイルサイズをチェックする。 × ○
  20. 20. 名前に情報をつめこむ 本当に省略してもい いのか?
  21. 21. 意味不明な省略 × ○
  22. 22. 意味が伝わる省略 『新しいチームメイトはその名前の意味を理 解できるだろうか』 ○ ○ ○ ○
  23. 23. 誤解を生まない名前を付ける
  24. 24. 指定した文字列を含む要素を除外する × ○
  25. 25. ファイル上限のサイズをチェックする × min, max / first, last (以上、以下) / begin, end(以上、未満) ○
  26. 26. booleanの変数やメソッド名 × ○ is,has,can,shouldな どを頭に
  27. 27. 名前を付ける時のポイント 『名前に情報をつめこむ』(※) –複数の名前の候補から正確 で明確なものを選ぶ (※)書籍から抜粋
  28. 28. 名前を付ける時のポイント 『最善の名前とは誤解されな い名前である』(※) –読み手が自分の意図を正しく理 解できる名前か –他の人の意見も参考にする (※)書籍から抜粋
  29. 29. リーダブルにするための要素 • 名前 •コメント • 制御フロー • 処理の分割と構成 ・意図を伝える ・伝わりやすい形
  30. 30. 意図を伝える 価値のないコメント をしない
  31. 31. コードをみればすぐに分かること ×
  32. 32. 不要な変更箇所コメント ×
  33. 33. むしろコードを直す × ○ 優れたコード > > ひどいコード + 優れたコメント
  34. 34. 意図を伝える 自分の考え を記録する
  35. 35. コメンタリー ○
  36. 36. 欠陥に対するコメント ○
  37. 37. 定数値の背景 ○
  38. 38. 意図を伝える 読み手を意識 してコメントする
  39. 39. 質問されそうなことへの回答をあらかじ め書いておく ○ はまりそうな罠、 全体像に関するコメントなど
  40. 40. 伝わりやすく 簡潔にコメントする
  41. 41. 代名詞を使わない 歯切れをよくする。 『情報の密度を高める。』 × ○ ○
  42. 42. 伝わりやすく 正確に伝わる コメントを書く
  43. 43. 動作を正確に記述する × ○
  44. 44. 実例で補足する。
  45. 45. コメントを書く時のポイント 『コードの意図を読み手に 理解してもらう』 (※) –無駄なコメントをしない –自分の考えを記録 –読み手の立場で考える (※)書籍から抜粋
  46. 46. コメントを書く時のポイント 『コメントは領域に対する情 報の比率が高くなければな らない』 (※) –簡潔に、正確に (※)書籍から抜粋
  47. 47. リーダブルにするための要素 • 名前 • コメント • 制御フロー • 処理の分割と構成 ・自然な流れで立ち止り、読み 返しをなくす
  48. 48. 自然な流れ 条件式の引数 の並べ方
  49. 49. 変化する方を左に置く。 調査対象(変化) 比較対象(固定) × ○ × ○
  50. 50. 自然な流れ if/elseブロック の並び
  51. 51. ifの条件を素直に × ○ If-elseの条件は、 否定より肯定
  52. 52. 自然な流れ ガード節で ネストを浅く
  53. 53. メソッドでは早めにリターン ×
  54. 54. メソッドでは早めにリターン ○ ループでは break,continueで早 めに返す。
  55. 55. 制御フローを書く時のポイント 『制御フローはできるだけ自 然にする。コードの読み手 が立ち止まったり読み返し たりしないように書く』 (※) (※)書籍から抜粋
  56. 56. リーダブルにするための要素 • 名前 • コメント • 制御フロー •処理の分割と構成 一度に1つのことをやるように分割 コードのレベルをそろえるように構成
  57. 57. 一度に1つのことをやる タスクを列挙 して 処理を分割する 『一度に1つのタスク』
  58. 58. コードのレベルをそろえる 無関係の下位問題 を 抽出する 『高レベルの目標に直接効果が あるのか?』
  59. 59. 処理の分割と構成をするポイント 『コードは1つずつタスクを行 なうようにしなければならな い。』 (※) – タスクの列挙 – 処理の分割 (※)書籍から抜粋
  60. 60. 処理の分割と構成をするポイント 『無関係の下位問題を積極 的にみつけて抽出する』 (※) – コードのレベルをそろえる (※)書籍から抜粋
  61. 61. リーダブルにするための要素 名前 コメント 制御フロー 処理の分割と構成
  62. 62. まとめ • リーダブル = 読みやすさ • 読みやすさ = 理解しやすさ • リーダブルなコードをかくと…
  63. 63. 『やったもん勝ちなんや!! やらんもんは…勝たれへん!』 (※) (※)書籍から抜粋
  64. 64. ご清聴ありがとうございました。

    Be the first to comment

    Login to see the comments

  • kohjiinoue7

    Dec. 29, 2013
  • YukiAwano

    Feb. 23, 2014
  • rzpqyo

    Feb. 25, 2014
  • takayukiyoshida94

    Feb. 26, 2014
  • hideaki_honda

    Feb. 28, 2014
  • tchikuba

    Mar. 6, 2014
  • moritalous

    Apr. 17, 2014
  • kskomori

    Jun. 13, 2014
  • clowdish

    Jul. 18, 2014
  • mitsuru793

    Nov. 2, 2014
  • ssuser1fd8fb

    Jan. 2, 2015
  • kaicyo

    Mar. 16, 2015
  • cocoa_dahlia

    Apr. 29, 2015
  • RyotaOki

    May. 23, 2015
  • MPEG_M

    Dec. 31, 2015
  • osamyamashita

    Jan. 22, 2016
  • yoichichikahara

    Aug. 11, 2016
  • keisuketameyasu1

    Nov. 20, 2016
  • ShunsukeIwamoto

    Jul. 12, 2017
  • KousiItou

    Nov. 2, 2017

Views

Total views

12,151

On Slideshare

0

From embeds

0

Number of embeds

250

Actions

Downloads

44

Shares

0

Comments

0

Likes

28

×