カプセル化、依存性注入、最小知識の原則、そしてあなたはそれを必要としないことによって、「1つのことをする」という部分を理解することができます。しかし、2番目の部分「うまくやる」をどのように理解できますか?
与えられた例は、同じYAGNIの記事で与えられた完全性の概念でした:
たとえば、アイテムの追加、アイテムの削除、またはアイテムの変更を可能にする機能の中で、完全性を使用して「アイテムの名前変更」を推奨することもできます。
しかし、私はそのような推論がフィーチャークリープに簡単に悪用され、「1つのことをする」部分に違反する可能性があることを発見しました。
したがって、機能を確認するためのリトマス試験とは、「うまくいく」カテゴリ(したがって、関数/クラス/プログラムに含める)または他の「1つのことを行う」カテゴリ(したがって、除外する)に属します。 ?
最初の部分である「1つのことを行う」は、UNIXのls
コマンドを介して、出力をフォーマットするための過剰な数のフラグが含まれていることの反例として最もよく理解されます。これは、別の外部プログラムに完全に委任されているはずです。しかし、2番目の部分が「うまくやる」のを見る良い例はありません。
それ以上の機能を削除すると「うまくいかない」という良い例は何ですか?