1

モンキーパッチがいかにクールであるか、またはモンキーパッチが地球上で最悪のものであるかについて、私は多くのああとああを聞いたことがあります。あるコードを書いて、他の誰かがその機能を変更して何か他のことをするのは良くないという考えがあります。しかし、私はこれが本当にあなたを傷つける可能性がある状況の具体的な例を探しています。つまり、私は常にコードを記述し、それから同僚がそれを変更します。では、モンキーパッチはそれとどう違うのですか?起こりうる最悪の事態は何ですか?

4

4 に答える 4

9

プログラミングは、ローカルの動作を理解するためにグローバルな状態を理解する必要があるコーディング手法から、ゆっくりではあるが確実に離れていきました。いくつかの例:

  • goto を使用すると、特定の行に到達する方法を確認するためにコードを遠くから見る必要がある場合があるため、制御の流れについて推論するのが難しくなります。
  • プログラムのどの部分でも、他の部分に影響を与える状態を変更できるため、グローバル変数も嫌われます。
  • 関数型プログラミングがサポートされているのは、関数の動作を理解するために関数の外部の状態を気にする必要がないことを意味するためです。

モンキー パッチとは、プログラム内のコード行を 1 行おきに見ない限り、コード行が何を行うのかを知る方法がないことを意味します。何かを素早く終わらせることは役に立つかもしれませんが、それでは大規模なプログラムが理解できなくなります。非常に多くの大きなプログラムが小さなプログラムとして開始されるため、モンキー パッチはおそらくやめたい習慣です。

于 2009-03-30T21:59:34.093 に答える
4

モンキーパッチは、オブジェクトへの変更をオブジェクトの残りの部分やオブジェクトのドキュメントから隠します。そのオブジェクトを使用するのは非常に簡単です。ドキュメントをチェックして、期待どおりに動作することを確認してから、後でそのオブジェクトが完全に機能しないことを確認してください。

これは、開発者の解約が見られるプロジェクトで作業している場合は特に悪いことです。このプロジェクトでは、新しい開発者をコードベースに対応させる方法についてもっと心配する必要があります。新しい開発者はパッチのニュアンスに気付かないため、結果としてパッチから適切なコードを取得するのに苦労することになります。

発生する可能性のある最悪の事態について、アプリにバグがある場合に発生する可能性のある最悪の事態は何ですか?機器の一部が正しく機能していないために誰かが死ぬ可能性はありますか?間違った請求書を送ったり、アカウントに請求しすぎたりして、誰かの信用格付けを台無しにすることはできますか?

于 2009-03-30T21:46:13.733 に答える
1

それは環境に依存します。つまり、他の誰かとコードを共有していますか。ただし、Smalltalkなどで実行できることを検討してください+。演算子の意味を変更します。たとえば、ある引数を別の引数から減算+する関数を導入すると、物事は華やかで予期しない方法で壊れます。

于 2009-03-30T21:47:02.280 に答える
0

まあ、それは本当にあなたが何を意味するかによって異なります...

あなたが何らかのコードを書いた後、他の誰かがその機能を変更して別のことをするのは良くありません

要件は何ですか?今も昔も。要件が変更され、コードの結果セットを変更する必要がある場合、これは維持または拡張と呼ばれます。「モンキー パッチ」が効果的なコードに実際に遭遇することはめったにありませんが、それはコードを書いた人や、どのくらい前に作成されたかなどにも大きく依存しています。変数が多すぎて、本当に効果的な答えを出すことができません。 . 要するに、それが顧客が望むときに顧客が望むものを提供するために必要なことである場合、それはおそらく良いことです。それはすべてあなたの聴衆についてです。

于 2009-03-30T21:51:26.747 に答える