0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

「レガシーコードからの脱却」読書メモ その3

Posted at
Page 1 of 27

レガシーコードからの脱却
ソフトウェアの寿命を延ばし価値を高める9つのプラクティス

David Scott Bernstein 著
吉羽 龍太郎、永瀬 美穂、原田 騎郎、有野 雅士 訳
オライリー・ジャパン 2019年
https://www.oreilly.co.jp/books/9784873118864/


第Ⅱ部 ソフトウェアの寿命を延ばし価値を高める9つのプラクティス
 7章 プラクティス3 継続的に統合する
 8章 プラクティス4 協力しあう
 9章 プラクティス5 「CLEAN」コードを作る
を読んだメモ


プラクティス3 継続的に統合する


従来のやり方

最後に統合する
→最後になってバグや不具合が出る
修正のコストが膨大になる


発想を変える


早期から頻繁に統合する

統合するのが遅れるほど面倒になる
→頻繁に統合し、問題が小さなうちに対処する


いつでもリリース可能にする

・顧客が実際に目にするまで、それが「欲しかったもの」かどうかわからない
・いつ何をリリースするかはビジネス側の領域


やり方について

・ビルド、テスト、受け入れテストの自動化
 →継続的インテグレーションのツールを活用
・バージョン管理
 →ソースコードだけでなく、ビルドに必要なすべてを管理
 →ブランチは避ける(フィーチャーフラグでの無効化)


プラクティス4 協力しあう


ソフトウェア開発は社会的活動

コミュニケーションと協働が必要不可欠


プログラミングは1人でやる作業?


ペアプログラミング、スパイク、スウォーム、モブ...などもある


ペアプログラミング

チームに知識を広げる最も早い方法
割り込みが減ってコーディングに集中できる
コードの共同所有をする
→一人で作るとコーディングスタイルが統一されず保守性が下がる


コードレビュー

コーディングしたペアだけでなく、他のメンバーにもコードを理解してもらう
→コードの共同所有をする(2回目)


ふりかえり

何をやったか、どうやったか、なぜやったか、もっとうまくやるにはどうするか
対応可能な課題を発見し、チーム全体を改善する


知識を広げチームと共有する

学ぶ最高の方法は教えること
常にメンター、メンティーであれ

ソフトウェア業界に、これ以上秘密結社はいらない。


プラクティス5 「CLEAN」コードを作る


良いソフトウェアの土台となるコード品質


1つのことだけをやる

Cohesive: 凝縮性
限られた機能を持つ小さなクラスからプログラムを構成する
凝縮性が高いオブジェクトは命名しやすい
抽象-詳細の階層を持つ


取り換え可能にしておく

Loosely Coupled: 疎結合
抽象クラスやインターフェースを使用して実現
※密結合が絶対悪ではない。「意図的でない結合」が良くない。


やり方は言わない

Encapsulated: カプセル化
やろうとしていること(インターフェース)とどうやってやるか(実装)を切り離す
呼び出し側の視点で設計する


自分は自分、他人は他人

Assertive: 断定的
対義語は「好奇心旺盛」
自分自身の仕事を他のオブジェクトに肩代わりさせない
他のオブジェクトをいたずらに参照しない


同じことを別の所でしない

Nonredundant: 非冗長
冗長性とは意図の繰り返し


明日のベロシティのために今日品質を上げる

「CLEAN」なコードはテストがしやすい
「CLEAN」は互いに関連しており、ある1つの観点で改善すれば他も改善される
→著者のおすすめは「凝縮性」(適切な名前は理解を助ける)
コード品質を高めることで、ソースコードは理解しやすくなる


私には汚くする時間がない

著者の友人である料理人の言葉
速く働けば働くほどきれいになる


つづく

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?