それはプロジェクト全体がどれだけ大きくなるかにかかっていると思います。
極端な例として、1 Mlocプロジェクトがあるとします。その大規模なプロジェクトの場合、関係するすべての領域で1人の個人が「専門家」になることはほとんどありません。したがって、この場合、各主要コンポーネントの既存のコードスタイルを使用します。新しい開発者は領域を選択し、それを学習します。異なるコードスタイルを持つ他の多くのコンポーネントが表示されることはほとんどありません。
プロジェクトがはるかに小さく、個人にコードベース全体を理解させる可能性が高い場合は、主要なコードスタイルを選択し、それを使用します。この場合、新しい開発者はプロジェクトのすべての領域で作業する可能性が高いため、プロジェクト全体で一貫性を保つ方が理にかなっていると思います。
中規模のプロジェクトは、おそらくこの決定を下すのが最も難しいでしょう。この場合、各アプローチのコストを検討し、長期的に最も安価であると考えるアプローチを決定する必要があります。中規模プロジェクトは、通常、完全なスタイルのリファクタリングが法外に高価に見えるほどに成長していることが課題です。特定のコードスタイルをグループ化するように配置できるかどうかを確認するには、コードツリー構造をもう一度確認することをお勧めします。
いずれにせよ、最終的な決定は、このパッケージをまとめるチームに任せる必要があります。
上から私の推論を変えるかもしれない外れ値のいくつか:
1つ以上のモジュールがひどいスタイルを持っている場合、大規模なプロジェクトであっても、それを維持する意味はありません。はい、スタイルは主観的ですが、あなたとあなたのプロジェクト参加者が本当に、特定の領域の流れ方が気に入らない場合は、古いスタイルを核にしてより良いものにします。
すべてのスタイルが互いにかなり近い場合、「これが新しい方法です」と宣言し、すべての新しいコードと重要なリファクタリングにそれを使用するのも同じくらい簡単かもしれません。これはレビューに少々苦痛をもたらすかもしれませんが、私の経験では、ほとんどの人はこのアプローチに適応するのにかなりの能力があります。また、古いコードがどこにあるかを示す明確な印も提供します。
言語に追加された新しい機能に基づいてスタイルが変更される場合があります。C ++は長年にわたって多くの機能を採用しています。古いスタイルを、必要に応じて、これらの機能を利用する新しいスタイルにリファクタリングすることは理にかなっています。
一部のライブラリには、特に慣用的なアプローチまたはスタイルがあります。もしそうなら、それがプロジェクトの他の部分と衝突するかもしれないとしても、私はそのライブラリーのためにそのスタイルを使い続けます。ここでの意図はfrobnosticators
、他のプロジェクトで作業している誰かがあなたのプロジェクトでも作業する可能性を高めることです。
一部のコメントでは、命令型およびオブジェクト指向のスタイルが考慮事項として言及されました。
特定のスタイルで「重い」モジュールは、モジュールが中規模またはそれ以上のサイズである場合、おそらくそのままにしておく必要があります。私は3つの主要なスタイル(命令的、客観的、および機能的)を扱い、重い命令的スタイルをOOスタイルにリファクタリングしました。中程度またはそれ以上の量のコードでは、リファクタリングが(例外的に)困難になる可能性があります。リファクタリングを支援するためのツールのサポートがなかったため、私の経験は混乱しました。
非常に命令的なスタイルのモジュールと、特定の開発ニッチで慣用的なモジュールとの間に高い相関関係があると想像します。これは、外れ値で指摘した最後のポイントに戻ります。したがって、その機能で見つけられるモジュールはすべてそのようになり、そのドメインの専門家がプロジェクトでも簡単に作業できるようにしたいとします。しかし、オプションがあり、チームがそのモジュールのスタイルを気に入らない場合は、オプションを調査します。
同様に、OOスタイルのモジュールを使用して、OOの原則が過度に適用され、誤って使用されています。例として、インターフェースは多重継承の代わりとして使用されていました。そして、ご想像のとおり、これは大まかな実装でした。そのモジュールのリファクタリングを合理的に進めることができましたが、代わりに使用できるより良いパッケージを見つけたので、最終的にそのアプローチを放棄しました。