web-dev-qa-db-ja.com

サードパーティによって提供された質の悪いコードをどのように処理しますか?

私は最近、最も重要なプロジェクトの1つを管理するように昇進しました。このプロジェクトのコードのほとんどは、私たち自身ではなく、私たちのパートナーによって書かれています。

問題のコードは非常に疑わしい品質です。コードの重複、グローバル変数、6ページの長い関数、ハンガリアン記法など、名前を付けます。そしてそれはCにあります。

私はこの問題について何かしたいのですが、特にコードがすべての問題に対して「うまくいくのではないか」という理由で、私はパートナーをほとんど活用していません。

さらに悪いことに、私たちは現在このプロジェクトの終わりに近づいており、まもなく出荷する必要があります。私たちのパートナーは、このプロジェクトに一定の工数を費やしており、それ以上の時間を費やすことはありません。

この状況に対処する方法について、アドバイスやアドバイスをいただければ幸いです。

4
lindelof

最初に準拠する必要のあるコーディングガイドラインが設定されていなかった場合、できることがたくさんあるとは思えません。

もちろん、低品質がセキュリティの問題を引き起こしている、または単に機能していない場合を除いて、一般的なセキュリティの問題をチェックすることが最善の策かもしれません。

3
DBlackborough

絶対です:

  • 品質要件を自分で設定します。品質は非常に主観的であり、あなたが定義する必要があります。
  • リポジトリからコードを読み取って、頻繁にコードレビューを行います。それはあなたの責任です。サードパーティ企業は最終的な品質レビューを行うことができません。

この回答に加えて、これを読むことをお勧めします 外部委託プロジェクトに取り組む際の落とし穴のヒント

2
user2567

サードパーティになぜそのように実装したのかを尋ね、彼らが行ったことを実行する際にどのような動機があったかを学び、彼らの推論に問題がない場合は、あなたのアプローチとあなたの会社が従う慣行を説明してください。

0
Rachel

@ G3Dが指摘したように、被害が発生した後にプロジェクトを保存しようとすることは、せいぜい困難です。あなたの会社の誰かがすでに下請け業者からの成果物(のほとんど)を受け入れている場合、損失を回復するための合法的な方法さえないかもしれません。

下請け業者が事前定義された受け入れ基準を満たしている場合(ただし、これらは低かった)、あなたは負けます。そこにいくつかの問題が見つかった場合(つまり、事前定義された基準に従って厳密に受け入れが行われなかった場合)、それらにいくらかの圧力をかけることができ、より明確な品質保証とともに、より良い品質を得ることができます。ただし、後で不適切に記述されたコードを改善することは常に大きな作業であり、誰がそれを行うかに関係なく、多くの時間と労力を要します。

0
Péter Török

それはビジネス/管理/法的な問題であり、プログラミングとはあまり関係がないと思います。あなたが製品を販売し、あなたのパートナーがこの製品のパッケージを配達するとします。包装が悪すぎる場合はどうすればよいですか?

  • より高品質なものを提供するためにパートナーと交渉し、
  • あなたのパートナーによって行われていることの低品質にそれを適応させることを試みるためにあなたの製品を変えてください、
  • あなたのパートナーを訴えなさい。

最後のケースでは、契約が十分に正確である場合にのみそれを行うことができます。たとえば、この種の問題を回避するには、品質とスタイルの要件を契約に参加させることをお勧めします。たとえば、私はコーディングのスタイルと品質が非常に重要な会社で働いているため、下請け業者と取引する場合、契約では常にFxCopとStyleCopへの準拠が必須であることが正確です(C#の場合、CSSまたはHTMLのコーディング標準もあります)コードなど)、および準拠していないコードは受け入れられません。

現在の契約にそのようなものがない場合は、品質とスタイルのガイドラインを今すぐ作成して、請負業者にそれらを使用させることはできません。

したがって、他の2つのソリューションを使用します。パートナーと比較して強い立場にある場合は、より高品質のコードを交渉できます。または、すべての場合において、より多くのお金やその他の利点のためにより良い仕事を提供するように依頼するか、既存のコードを自分で強化するために時間を費やすことができます。

0

コードをどのように使用する必要があるかはわかりません。ほとんどの場合、それをブラックボックスとして扱うことができる場合、それがどのように記述されているかは現在重要ではありません。変更する必要がある場合は、さらに問題が発生します。

あなたのパートナーはまだコード機能に責任がありますか、それともバグや機能の欠如の場合に完全にオフフックですか?それがどれほど醜いものであっても、それは今のはずのことをしますか?その機能は将来変更される可能性がどのくらいありますか?

述べられた状況の下で、あなたはそれが好きかどうかにかかわらず、物を出荷する準備をしなければならないでしょう、そしてあなたはそれが伴うことを私たちがするよりもよく知っています。将来的には、契約交渉に参加できますか?

0
David Thornley