🎉

[NOTE] Refactoring と Tidying | Kent Beck著書 "Tidy First?"

に公開

Tidy First? ―個人で実践する経験主義的ソフトウェア設計 - FL#84

エクストリームプログラミングの考案者Kent Beckの著書、"Tidy First?"の理解を深められる講演です。"Tidy First?"では「いつ整頓をするべきか?」を判断するための理論として、ディスカウントキャッシュフローやオプション取引などの金融の考え方が紹介されている。この部分はやや理解が難しいので、この講演では特にこの点に焦点を当てて解説されています。

  • エクストリームプログラミングの考案者Kent Beckの著書である"Tidy First?"では、コードを管理しやすく整頓する方法を解説している。

  • ほかにもソフトウェア設計の基礎理論とそれに作用するフォースや大きな変更を小さく安全な手順で始める方法など様々な内容を学べる著書となっている。

Kent Beckの著書 "Tidy First?"について

  • 大きく分けると、3部構成となっている。
タイトル 内容
第1部 整頓(tidying) 整頓(tidying)の事例 1~15章
第2部 管理術 整頓(tidying)の開発ワークフローへの組み込み方 16~21章
第3部 理論 なぜ整頓(tidying)するのか? 22~32章

Kent Beckについて

  • Kent Beckの著書にはほかにも、"テスト駆動開発"がある。

ソフトウェアの要素

「ふるまい(Behavior)」と「構造(Structure)」に大別され、ソフトウェアの設計や開発において重要な概念であり、両者は相互に関連している。

  • ふるまい(Behavior):
    ふるまいは、ソフトウェアがどのように動作するか、つまり、入力に対してどのような出力を生成するか、またはどのような処理を行うかを指す。これは、プログラムのロジックやアルゴリズム、ユーザーインターフェースの反応などを含む。ふるまいは、ソフトウェアの機能や動作を定義する重要な要素。

  • 構造(Structure):
    構造は、ソフトウェアの内部の組織や配置を指す。これは、モジュール、クラス、データ構造、コンポーネントなど、ソフトウェアの要素がどのように組み合わさっているかを示す。構造は、ソフトウェアの可読性、保守性、再利用性に影響を与える重要な要素。

リファクタリング(Refactoring )

  • "リファクタリング(Refactoring)"とは、プログラムの外部から見た動作を変えずにソースコードの内部構造を整理すること。
  • 機能開発の長い中断を指す言葉として使われ始め、技術的負債のような使われ方になっている。

Kent Beckが提唱する、"整頓(tidying)"という新しい考え

  • "整頓(tidying)"は"リファクタリング"のサブセット。
  • "整頓(tidying)"はふるまいを変更せずにコードの構造を変更する。
  • ステートメントを小分けにする。 :小さなコードスニペットごとに改行を入れよう。
  • 将来のふるまいへの準備のための"整頓(tidying)"。
  • デッドコード(使わないコード)は消そう。消していいかわからない場合は、ログを仕込みましょう。
  • "整頓(tidying)"が必要なコードだからといって、必ずしも整頓しなければならないわけではない。
  • "整頓(tidying)"をすると決めた場合でも、「いつ行うのか?」が重要な判断ポイントとなる。
  • 振る舞いの変更の前に整頓を行うのか、それとも後にするのか、あるいは後日に回すのか。
  • タイトルの"Tidy First?"に「?」がついているのは、状況によって最適な判断が変わることを示している。"Tidy First?"では、状況に応じた整頓を行うタイミングが判断ができるようになることを目指して書かれている。

Discussion