16

あなたはプレッシャーの下でいくつかの重要な機能を提供するための大量のコードを作成しました。いくつかのコーナーをカットし、いくつかのコードを、SerialIndirectionShutoffManager.. のような名前の過度に肥大したクラスにマッシュアップしました。

あなたは上司に、これを片付けるのに1週間かかると伝えます.

「どうしたの?」

「私のコードは豚小屋です!」

「もっとバグ修正があるということですか?」

「そうじゃなくて、もっと…」

「もっと速く走らせますか?」

「そうかもしれませんが、そうではありません..」

「それなら、機会があればきちんと書いておくべきだった。今はあなたがここにいてくれてうれしいです。はい、先に進んで、今週末に来てくれるように頼まなければなりません..」

Matin Fowler の本を読んだことがありますが、この問題に関する彼のアドバイスに同意できるかどうかはわかりません。

  • 定期的なコード レビューを奨励して、リファクタリング作業が開発プロセスの自然な部分として奨励されるようにします。
  • 言わないでください、あなたは開発者であり、あなたの義務の一部です。

これらの方法はどちらも、上司とのコミュニケーションの必要性から逃れています。

上司に何と言いますか?

4

18 に答える 18

25

元の見積もりにリファクタリングの時間を含めることが重要です。製品を納品した後で上司のところに行って、実際には終わっていないと言うのは、終わったことをうそをつくことです。成果物の締め切りに間に合わなかった。外科医が手術を行った後、すべてを元の状態に戻すことを確認していないようなものです.

開発のすべての部分 (リファクタリング、ユーザビリティ調査、テスト、QA、改訂など) を元のスケジュールに含めることが重要です。最終的に、これは管理の問題ではなく、プログラマーの問題です。

ただし、混乱を受け継いでいる場合は、プロジェクトをドアから追い出そうと急いでいる最後のプログラマーのセットが手抜きをして、足を引きずっていることを上司に説明する必要があります。問題をしばらくの間バンドエイドすることはできますが (彼らがそうであったように)、それぞれのバンドエイドは問題を遅らせるだけであり、最終的には問題を修正するのにはるかに費用がかかります.

上司に正直になり、プロジェクトは完了するまで完了ではないことを理解してください。

于 2008-09-16T21:58:24.250 に答える
22

彼が理解できる言語で話してください。

リファクタリングは設計負債を支払うことです。

上司に、会社のクレジット カードの請求書を毎月支払うのではなく、徴収通知があるまで支払わない理由を尋ねてください。リファクタリングは毎月の支払いをするようなものだと彼に伝えてください。

于 2008-09-16T21:18:38.480 に答える
7

それを実行して、通常のプロセスにスケジュールするだけです。新しい変更の開始または変更の終了までのリファクタリング時間を見積もる (理想的)。最初に新しいコードを調査している間 (メソッドの抽出など)、常にリファクタリングを行います。

于 2008-09-16T21:18:33.990 に答える
7

嘘。新しい技術の研究だと彼に伝えてください。それから、コストが利益を正当化しないと判断したことを彼に伝えてください。彼はあなたが素晴らしい仕事をしたと思うでしょう。

笑 @人はモッディング/攻撃をマーキングします。

本当に、それが安いソフトウェアから良いソフトウェアを理解していないペニーピンチの上司である場合、彼が知らないことは最終的に彼を幸せにします. もし私だったら、会社を辞めて、開発者が優れたコードを書く能力を尊重してくれる場所に行くでしょう。繰り返しになりますが、これが私が上級職にいる理由です。

于 2008-09-16T21:15:20.797 に答える
5

ソフトウェア プロジェクトに関連するコストの 80% は、ライフサイクルのメンテナンス フェーズで発生すると彼に伝えてください。将来の問題を軽減するために現在行われているリファクタリングといくつかの例は、後でそのコードを維持する必要が生じたときに、実質的なコスト メリットをもたらします。

これは、プログラマーの虚栄心のためではなく、何らかの理由でリファクタリングを行っていることを前提としています。

于 2008-09-16T21:18:22.537 に答える
3

リファクタリングは常に行う必要があります....だから、それを正当化する必要はありません。

大きな混乱のクリーンアップ/再設計には、それを制御するためのリファクタリングが含まれる場合がありますが、「リファクタリング」ではありません

リファクタリングは一瞬で終わるはずですが、ツールのサポートがない場合は数分で済みます。

于 2008-09-16T21:17:14.320 に答える
3

Robert Glass の最近の本の 1 つで (参考文献を調べる必要があります)、彼は適切に保守されたコードのコストに関する研究について言及しました。彼らが発見したのは、適切に管理されたコードは、適切に管理されていないコードよりも頻繁に編集されるということです。それは直感に反するように聞こえますが、彼らがさらに深く掘り下げると、その理由が発見されました。

よくメンテナンスされたコードには、メンテナンスが不十分なコードよりも多くの機能が同じ時間枠で追加されます。

あなたの上司は機能が好きですか? 確かに、彼らは皆そうします。コードの保守性をさらに改善すれば、限られた予算でより多くの機能を提供できるようになります。

于 2008-09-16T21:21:50.500 に答える
2

Martin Fowler による「リファクタリング」での回答が気に入っています。上司に、自分が知っている最速の方法でソフトウェアを開発するつもりだと伝えてください。ほとんどの場合、ソフトウェアを開発する最速の方法は、リファクタリングを行うことです。

上司に伝えるべきもう 1 つのことは、将来の改善のためにコストを削減していることです。

于 2008-09-16T21:17:44.817 に答える
0

いけません....あなたともっと同期している場所で新しい仕事に就きましょう。

于 2008-09-16T21:39:23.453 に答える
0

上司に言わずに始めればいいと思います。これは本当に私が最善の仕事をした方法です。私は上司に自分が何をしているのかを伝えず、時間があるときに悪い/レガシーコードをゆっくりと置き換えます。

それは私のお尻を何度も実際に救ってくれました。

于 2008-09-16T21:42:55.553 に答える
0

上司は、開発者を信頼して、正しい技術的決定(いつリファクタリングするかを含む)を行う必要があります。

その信頼を確立するか、上司を置き換えるか、開発者を置き換えます。

于 2008-09-16T22:13:01.050 に答える
0

上司がコードをリファクタリングまたはクリーンアップする必要性を理解していない場合は、上司がエンジニアリングマネージャーになるのに十分なエンジニアリング知識を持っているかどうか疑問に思う必要があります。

于 2008-09-16T21:48:49.500 に答える
0

リファクタリングの時間を与えてくれる上司を見つけることはめったにありません。

于 2008-09-16T22:00:54.417 に答える
0

リファクタリングするためのお金が減りました...

または、後で問題が発生した場合に修正し、リファクタリングするためのより多くのお金。

于 2008-09-16T21:19:20.663 に答える
0

私の意見では、リファクタリングの最も単純なケースは、過度に複雑なコードを修正することです。問題のソース コードの McCabe 循環的複雑度を測定します (ソース モニターは、このような問題に対する優れたツールです)。循環的複雑度の高いソース コードには、相関関係の強い欠陥と不適切な修正が含まれています。これが簡単に言えば、複雑なコードは修正が難しく、不適切な修正が行われる可能性が高いということです。これがマネージャーにとって何を意味するかというと、製品の品質が低下する可能性が高く、バグの修正が難しくなり、プロジェクトのスケジュールが最終的に悪化するということです。ただし、複雑さをリファクタリングすることで、コードの透明性が向上し、あいまいな/困難なバグの可能性が減少し、保守が容易になります (たとえば、保守プログラマーは、このため保守の範囲を広げることができます)。

さらに、新しい要件がプロジェクトに追加されたときに、複雑さを軽減することでアプリケーションの拡張が容易になるというケースを作成できます (メンテナンス サイクルでデッド プロダクトでない場合)。

于 2008-09-16T22:06:19.957 に答える
0

時には、ちょうど新しい仕事を得る時が来ました。あなたに「やり遂げて」ほしいだけの特定の人がいます。あなたがそのような状況に陥ったことがあり、私がそこにいたことがあるなら、ただ立ち去ってください.

しかし、ええ、将来のコストなどに関する他のすべてのことは良い考えです。ほとんどの上司は、自分が欲しいときに欲しいものを欲しがっていて、将来何が起こるかを見ることができないため、自分自身に嘘をついていると思います.

それでは、ご主人様頑張ってください。うまくいけば、彼または彼女は合理的です。

于 2008-09-16T21:34:07.803 に答える
0

私が最近行ったのは、コードの順序と構造が改善され、速度を改善できる可能性があるため、リファクトリ プロセスが新しい機能の開発を加速し、新しいバグの可能性を減らすのに役立つことをビジネス カウンターパートに説明することです。以前よりも簡単にコードを検査できるからです。

ビジネス担当者がそれを理解したとき、彼らが賢明であれば、定期的なリファクトリー プロセスを実行するように促します。

建物の比喩でそれを説明できます。リファクタリングを行わないと、コアの悪い粗末な建物になってしまうため、パイプ、窓、ドアに問題が発生します。

于 2012-07-19T15:40:52.880 に答える