YAGNI - 命名してはいけませんアジャイルプラクティス? [閉まっている]
-
21-08-2019 - |
質問
、YAGNIは(「あなたはそれを必要とするつもりはない」)、ますます重要になっているようです。見当違いの優先順位をフィルタリングし、がが次の仕事にはないものを決定するための最も効果的なルールの一つであると私には思える。
しかしYAGNIはかろうじてについてここSOで囁かれている概念であると考えられます。私は義務検索を実行し、それだけで一つの質問のタイトルに表示 - その後、二次的な役割で
。これはなぜでしょうか?私はその重要性を過大評価しているか?
免責。私は異議に入るだろうと確信していた応答を先取りするために、私はYAGNIはを素早くて汚いのの反対であることを強調しましょう。それはあなたが右必要ですか部品を得ることにあなたの貴重な時間と労力を集中するあなたを奨励しています。
ここではいくつかのオフトップの継続的な質問は1つが頼むかもしれないです。
私のユニットテストは、ユーザーの要件、または骨格構造に基づいて選択されていますか?
私は、彼らが枠組みから外れるためにのみ存在するユニットテストをインストール(とテストと保守)のでしょうか?
どのくらいの私のフレームワークによって生成されたコードのは、私は見たことがありません(まだにもかかわらず、YAGNI、1日私をかむかもしれない)?
どのくらいの時間、私は、ユーザーの問題ではなく、私のツールに取り組んで過ごすのですか?
場合はペアプログラミング、観察者の役割値はしばしば「YAGNI」にあります。
あなたはCRUDツールを使用していますか?あなたが1つまたは2つだけを必要とするときには、_RU_ツール、またはC__Dツールとしてそれを使用することができます(いや、奨励)、またはあなたは、コードの4個(プラス4ユニットテスト)を作成していることができていますか?
解決
TDDが邪魔にYAGNIを包含しています。あなたが適切にTDDを行う場合、つまり、唯一の必要な機能になり、それらのテストを記述し、テストに合格するための最も簡単なコードを開発し、あなたは、デフォルトではYAGNIの原則を以下の通りです。私はTDDボックスの外へ出ると、私はYAGNIに違反するテストに合格する最も簡単な方法は以上でのテスト、私は本当に必要としないもののためのテスト、またはコードの前にコードを書き始めるとき、私の経験では、それだけですます。
TDDを行う際に、私の経験では、後者は、私の最も一般的な失言である - 私は先にジャンプして、次のテストに合格するためのコードを書き始める傾向にあります。それは多くの場合、必要なものの要件をテストするのではなく、私のコードに基づいて先入観を持つことにより、残りのテストを損なう私になります。
YMMVます。
他のヒント
YAGNIとKISS(愚か、それをシンプルに保つ)、本質的に同じ原理です。残念ながら、私は頻繁に私が「YAGNI」を参照してください約KISSが言及見ています。
荒野の私の部分では、プロジェクトの遅延や失敗の最も一般的な原因は、不要成分の不適切な実行であるので、私はあなたの基本的な感情に同意します。
をドライブYAGNI をを変更する自由。滝のプロジェクトでは、マントラは、スコープを制御します。スコープは、顧客との契約を確立することにより制御されています。その結果、顧客は、彼らは契約が締結された後、スコープの変更は困難であろうことを知っスコープ文書に考えることができるすべてを詰め込みます。その結果、あなたは機能の洗濯物のリストではなく、価値を持っている機能のセットを持っているアプリケーションで終わるます。
アジャイルプロジェクトでは、製品の所有者は、優先順位付け、製品バックログを構築します。開発チームは、優先度、すなわち、値に基づいて機能を構築します。その結果、最も重要なものは、最初に建てられます。あなたはユーザーによって評価されている機能を持つアプリケーションで終わります。重要でないものは、リストから落ちるか、行われません。それはYAGNIです。
YAGNIは練習ではありませんが、それは優先順位のバックログリストの結果です。ビジネスパートナーは、彼らが変更と反復から反復までの製品バックログを再び優先順位づけできることを考えると、ビジネスを与え、柔軟性を値。 YAGNIは、我々が容易にしても後半過程で、変更を受け入れたときに得られる利点であることを説明するのに十分である。
私は見つけるの問題は、人々も(すでにあなたのコードベースであること持っていない限り)YAGNI下DIコンテナを使用して、工場を書くバケットに傾向があることです。私はそこJB王に同意します。私はYAGNIで働いてきた多くの人々のためにずさんなコードを書くために/コーナーをカットするためのライセンスのようです。
たとえば、私は複数のモデル/メーカーのPINPADを抽象化するためのPINPADのAPIを書いていました。私は全体的な構造をしていない限り、私も私のユニットテストを書くことはできません発見しました。私はTDDの非常に経験豊かな実施者じゃないかもしれません。私は私がやったことはYAGNIであるかどうかについて意見が異なることだろうと確信しています。
私はSO YAGNIの形、または少なくともydniy(あなたはまだそれを必要としない)である時期尚早の最適化を参照して上の記事をたくさん見てきています。
私は本当に、迅速かつ汚いの反対としてYAGNIが表示されません。必要とされているだけで何をしていないし、これ以上とない誰かが50年続くことがあり書き込みソフトウェアのように計画しています。少なくとも私の心に、その周りに聞いて、多くの質問が本当に存在していないので、それはめったに来ないかもしれません。一般的になるが、必ずしも解剖し、101個の方法で分析されていない「自分を繰り返さないでください」と「それを維持する簡単な、愚かな」ルールに似ています。いくつかのものは、それは通常、少し練習をした後すぐに得ていることを十分に簡単です。いくつかのものは、舞台裏で開発を取得し、あなたが好転して見れば、あなたは彼らが状態のものに別の方法かもしれないことがあります。