私は、各「コミット」操作が単一のまとまりのある変更を表すように努めています。バグ修正全体または機能全体である場合もあれば、より大きなものへの途中での単一の小さなリファクタリングである場合もあります。ユニットが何であるかを直感で判断する簡単な方法はありません。また、チームメイトにも同じことをお願いしています。
これが適切に行われると、次のような多くのメリットが得られます。
- 変更について、高品質で詳細な説明を書くことができます。
- 各変更の説明の最初の行を読むと、コードの流れが理解できます。
- 変更の差分は読みやすく、理解しやすいものです。
- 変更によってバグ/ビルドの中断/その他の問題が発生した場合、必要に応じて切り分け、理解、取り消しが容易になります。
- 変更の途中で途中で中止することにした場合でも、それほど失うことはありません。
- 次にどのように進めればよいかわからない場合は、いくつかのアプローチのそれぞれに数分を費やしてから、気に入ったものを選択し、他のものを破棄することができます。
- 同僚は私の変更のほとんどをより早く認識し、マージの問題を大幅に簡素化します。
- 大きな問題で立ち往生していると感じたときは、自信を持っていくつかの小さなステップを踏むことができます。そのステップをチェックインすることで、大きな問題を少し小さくすることができます。
このように作業することで、小さなブランチの必要性を減らすことができます。これは、自信を持って小さな一歩を踏み出し、それを検証し、コミットしてから繰り返すためです。ステップを小さく自信を持って行う方法について説明しましたが、これが機能するためには、検証フェーズも迅速に進める必要があります。高速できめ細かい単体テストと、高品質で高速なアプリケーション テストの強力なバッテリーを持つことが重要です。
チェックインする前にコードレビューが必要になる前に私が取り組んだチーム。これによりレイテンシが追加され、私の小さなステップの作業スタイルが妨げられます。コード レビューを緊急性の高い割り込みにすることは有効です。ペアプログラミングへの切り替えも同様です。
それでも、私の脳は重いマルチタスクを好むようです。それを機能させるには、複数の進行中の変更が必要です。複数のブランチ、複数のローカル コピー、複数のコンピューター、および保留中の変更のバックアップを作成するツールを使用しました。それらのすべてが機能します。(そして、それらはすべて同等であり、さまざまな方法で実装されています。) 複数のブランチが私のお気に入りだと思いますが、サーバーに負担をかけることなく、新しいブランチをすばやく簡単に作成できるソース管理システムが必要です。BitKeeper はこれが得意だと聞いたことがありますが、まだ確認する機会がありませんでした。