私の経験では、最良の方法はホールチームにコードレビューを行わせることです。各プロジェクトでコミットメーリングリストを使用し、バージョン管理システムへのすべてのコード変更を追跡できます。開発者のほとんどは、コードの変更に関心があるため、プロジェクト固有のメーリングリストに登録しています。
誰かが新しいソースコードで悪い方法に気づいたとき、彼はコミッターが訓練生であればコミッターにもっと良い方法を説明するか、より経験豊富なコミッターであればそれについて議論を始めます。
もちろん、この方法は、特にチームメンバーの誰もが各コードの変更を追う余裕がないストレスの多い時期に、すべての新しいコードがレビューされることを保証しません。また、すべての開発者が責任を持ってすべての開発者が自分の仕事を成功させることを保証するわけではありません。これだけでは、レビューされることを保証できません。しかし、少なくとも私たちのチームには、常に技術的な品質を担当する技術マネージャーがいます。
コードレビューが次のスコアに適合する場合、私はコードレビューの真のファンです。
- すべての開発者は、自分の意見に対するすべてのコードと議論をレビューする可能性があります
- 誰も他のコードを悪用する権利はありません
- 悪いコードは議論を活性化するだけでなく、良いコードも有効にします
- 議論はすべての関係者の幸福で終わります
- レビューはほぼリアルタイムで、少なくとも機能が完了する前に行われます
私が学んだことは、あなたがコードの各行をレビューし、コードのフォーマットやコード効率の点でコード品質のようなものを管理する必要があると思う人なら、マシンができることをするので、あなた自身は非常に非効率的であるということです君は。目標は、各コードコントリビューションのビルドとコード品質を制御する継続的統合システムを使用することです。このシステムがレポートを生成し、それらを寄稿者に送信する場合、すべてが完璧です。
制御する必要があるためにコードを確認する必要がある場合、またはプログラマーの品質をランク付けする必要がある場合、私の提案は意味をなさないことを認めなければなりません。この場合、ソースコードを1行ずつ確認することもありません。次のようなことを確認します。
- セキュリティ関連の問題はありますか
- 使用されるAPI
- コードは指定されたアーキテクチャを適用しましたか
- 彼は有用なテストを書きましたか(ただし、暗黙的に指示された場合のみ、私は学ぶ必要がありました)
- ドキュメンテーション
- ビルドプロセス
- ...その他
あなたが経験豊富な開発者であれば、ループのようなものを見つけて、パフォーマンスを向上させることができます。もちろん、他の人にそのような知識を説明することは有用ですが、これはレビューセッションの一部ではありません。重大なパフォーマンスの問題がある場合、彼(または彼女)がリストタイプの効率の低いバリアントを使用したためではありません。
最初の質問は、なぜ一部の人々が他の人々よりも良いレビューをするように見えるのかということだったので、実際のレビューが始まる前にこれらの人々はおそらくプレビューをすることを答えます。