構造的に機能を付け加えにくいプログラムに、新規機能を追加しなければならない場合には、まず機能追加が簡単になるようにリファクタリングをしてから追加を行うこと。リファクタリングに入る前に、しっかりとした一連のテスト群が用意できているかを確認すること。これらのテストには自己診断機能が不可欠である。リファクタリングでは小さなステップでプログラムを変更していく。そのため、誤ったことしても、バグを見つけるのは簡単である。コンパイラが理解出るコードは誰にでも書ける。すぐれたプログラマは、人間にとってわかりやすいコードを書く。リファクタリング(名詞):外側から見たときの振る舞いを保ちつつ、理解や修正が簡単になるように、ソフトウェアの内部構造を変化させること。リファクタリングする(動詞):一連のリファクタリングを適用して、外部から見た振る舞いの変更なしに、ソフトウェアを再構築すること。3三度目になったらリファクタリング開始。早期にインタフェースを公開しないこと。スムーズなリファクタリングのために、時にはコードの所有権のポリシーを変えることも必要。コメントの必要を感じたときにはリファクタリングを行って、コメントを書かなくとも内容がわかるようなコードを目指すこと。テストを完全に自動化して、その結果もテストにチェックさせること。テストをひとそろいにしておくと、バグの検出に絶大な威力を発揮する。これによって、バグの発見にかかる時間は削除される。結果長い名前になるのは問題ないと思いますよ。意図が明確な名前にするその意図が明確な名前を付ける。いうだけなら簡単なことです。ここで、しっかりと胸に刻みつけておいて欲しいのは我々が名前付けを大変重要なことだと思っているということです。よい名前を付けるのには時間がかかりますが、それによって、より多くの時間を節約できます。それ故、名前を付けるときには注意深く、そして後でよりよいものが思い浮かんだら、変更してください。することで、あなたのコードを読む人(あなた自身を含めて)を幸福にすることができます。変数、関数、クラス名は、次の大命題に応える必要があります。それが存在するのか、何をするのか、どのように使用するのか。名前に解説が必要なら、その名前は、意図が明確とはいえません。名前に情報を詰め込む名前をつけるときには、それが変数であっても、関数であっても、クラスであっても、同じ原則を当てはめることができる。名前は短いコメントだと思えばいい。短くてもいい名前をつければ、それだけ多くの情報を伝えることができる。今日のPythonコードも日本語にするとこんな感じかな。非プログラマでも日本語が読めればなんとなくやってることわかるとも思うんですよね。個人的に非プログラマがコード見てウッってなるのはアルファベットや数字の羅列に対するアレルギー反応みたいなもんじゃないかと思ってるんですけどね。代表的なスタイルとしてPascal形式、Camel形式あとハンガリアン記法なんてのもあります。Pythonにはスタイルガイドがあるのでそれに従いましょう。時間となりますので本日のふりかえりに入りましょう。実演をして以下のコードを作成しました。unittest.main()型プログラミングの型というのは、プログラミングの問題を解くためにキーボードやマウスの動きの練習である。実際に問題を解くわけではない。解き方はすでにわかっている。問題を解きながら体の動きや意思決定の練習をするのである。ここでも完全に限りなく近づくことが目標となる。脳や指に動きや反応を覚えさせるために、何度も練習するのだ。練習するうちに、自分の動きや解決策が少しづつ改善・効率化されることに気づくだろう。型を使った練習は、ホットキーや操作のイデオムの学習に適している。TDDやCI(継続的インテグレーション)などの規律の学習にも優れた方法である。重要なのは、よくある問題と解決策の組み合わせを潜在意識に植えつけることで、現実のプログラミングの問題解決方法がわかるようになるということだ。武術家のようにプログラマは複数の型を知り、定期的に練習することで、記憶に残るようになる。