私は本当に好きです コード/キャンプサイトをあなたが見つけたよりも良い状態にしておくことに関するこの記事 -コードの清潔さを維持することは現実の世界では実際的なアプローチのようです。
また、機能を分離して開発する方法として 機能ブランチ が本当に好きなので、気に入らない場合は簡単にマージできません。
ただし、機能ブランチで作業していて、醜いコードを見つけた場合は、修正する必要がありますか?
それを修正するにはいくつかの欠点があるように感じます:
逆に言えば、ファイル内にいるときに実行しなかった場合、ブランチをマージする数日後に実行することを忘れてしまいます。
これは意見に基づくものであると警告されました(タイトルにshould
が含まれているという事実から離れていると思います)が、答えがあるように感じます(確かに人々は両方のアプローチを使用しているため、答えがあります)。また、development methodologies
に関する質問も話題になっています。ある程度の意見が必要だと思います。
機能の一部としてコードを変更する場合は、機能ブランチのコードを「修正」するだけです。
例えば。 「ウサギの印刷」機能に取り組んでいますが、プリンターコードを見つけました
Public class Printer(string type)
{
If(type=="bunnies")
{
//print a bunny
}
.....
}
私はそれを次のように変更します:
Public class Printer(string type)
{
PrintFunctionDictionary[type].Print();
}
なぜ:
私はランダムにコードベースの他の部分にぶつかって、これを「より良くする」ことはしません:
リファクタリングを現在の機能ブランチから「独立して生きる」ようにしたい場合は、そこで変更しないでください。代わりに、メインの開発ブランチでリファクタリングを実行してください(チームで変更を直接devブランチに適用しないことが一般的である場合は、「リファクタリングブランチ」)。そのため、チーム(あなたを含む)の誰もが、変更内容を、作業中のアクティブな機能ブランチにマージできます。ただし、最初に同僚に許可を求めることなく、「コードベースの半分」全体にグローバルリファクタリングを適用しないように注意してください。リファクタリングが現在の作業に干渉しすぎていると、彼らはそれほど満足できない場合があります。
例外は、ここで行うのは、コードブランチの機能ブランチで正確に触れた部分にローカルな改善があり、それらに「新機能」とは異なるライフサイクルを与えることは意味がないということです。
branch
タイプの目的は、それらを処理するための意図を提供することです。 GitFlowスタイルの分岐を使用している場合は、feature
、hotfix
、release
などのタイプが存在する可能性があります。機能ブランチの場合は、 intentionは、この機能が何であるか、マージを担当する開発者を示す別のブランチ(つまりdevelop
)へのマージをカプセル化することです。クリーンアップするコードがその機能の一部ではない場合は、変更しないでください。
代わりに、醜いコードが含まれている可能性がある最も低いブランチを見つけ(おそらくdevelop
)、そこからブランチします。コードを変更し、機能としてマージすることを提案します。作業中のコードが必要で、特にマージの競合を回避したい場合は、そのブランチをYOURブランチにマージします。
これは、さまざまな戦略のかなり良い説明です: https://www.atlassian.com/git/tutorials/comparing-workflows/
機能ブランチで作業していて、醜いコードを見つけた場合、それを修正する必要がありますか?
プロジェクトのテンポやコードの「醜さ」などによっては、「醜いコード」を一目で修正しても問題ないかもしれませんが、機能ブランチ自体ではこれを行わないようにしてください。
git add -p
を使用できます修正を行うには、その変更をコミットしますonlyで、マージ/プッシュする前に(実際、できれば次のコミットの後で)、インタラクティブなリベースを使用して、そのコミットをブランチの最も早いポイントに移動します。おそらく、あなたの歴史にもよりますが、開発にチェリーピックすることさえできます。私はまた、開発ブランチを「修正」している他のあらゆるものでこれを行います(「修正」とは、コードが標準に準拠していることを確認するためにあなたまたは他の開発者が一目で行う変更です)。これは役立ちます...