12.3 コーディング対クリーニング
内容
- コーディング・・・特定のタスクの解決方法を探す作業。テストを通すことに集中する。
- クリーニング・・・動くコードを保守可能にする作業。扱いやすくすることに集中する。
それぞれ、別のタスクとして捉えて進めたほうが効率が良い。
技術的負債は短期的にも長期的にも返済を続ること。
短期的には、テストファースト開発のリファクタリングステップにて。
長期的には、チームの学習をコードに取り込むための定期的なリファクタリング作業の中で。
それでも技術的負債が溜まり続けてしまう場合もある。新しい機能を実装するために設計変更が必要だったり、単にもっと良いやり方を思いついたりする場合だ。その場合、通常数か月ごとに、大規模なリファクタリングを行い、技術的負債の返済作業を行う。この場合でも、ユニットテストが助けとなる。
12.4 ソフトウェアは書かれる回数より読まれる回数のほうが多い
平均してコードは書かれる回数の10倍読まれる。
効率性、拡張性のために読みやすくなければならない。
コードは自分のためではなく読み手のために書け。
コメントの注意点1
わかりやすくするためにコメントを書くことがある。
注意点として、コードが「そうなっている理由」を書くのは良いが、「やっていること」を書くのは良くない。「やっていること」はコードで表すべきだ。
まず、冗長である。
そしてコメントの運用の手間が二重になり、コメントの修正漏れによりコードとの差分が生まれる可能性が発生する。どちらが本来正しいのかがわからなくなる。
コメントの注意点2
「わかりにくい理由」を書く前に、一度わかりやすく出来ないか設計を考えよう。
学び
- 技術的負債のタイミングは、以下3つ。
- テストファースト開発のりファクタリングステップ、
- チームの学習をコードに取り込む定期的なリファクタリング、
- それでも溜まってしまう技術的負債を解消するための大規模なりファクタリング
- コードは平均して、書かれる回数の10倍読まれる。
読めるように書こう。
学びを活かすアイディア・行動
- 大規模なリファクタリング計画と実施
- 現場のコーディング規約づくり