タスクのデザインをしているとき、私はこのしつこい気持ちと戦い続けます。それは、一般的なアウトラインであるだけでなく、結局は無視されるというものです。例を挙げましょう。
読み取り/書き込み操作が可能なデバイスのフロントエンドを作成していました。クラス図では、読み取りおよび書き込み機能を提供することは完全に理にかなっています。しかし、実際にそれらを書くことになったとき、コードが1行だけ変更された(読み取りと書き込みの関数呼び出し)文字通り同じ関数であることに気づきました。コードの重複を避けるために、区別するパラメーターを持つdo_io関数を実装しました。オペレーション。さようならオリジナルデザイン。
これはひどく破壊的な変更ではありませんが、頻繁に発生し、プログラムのより重要な部分でも発生する可能性があるため、少なくとも概要の場合よりも、一般的な概要よりも詳細に設計する必要があるかどうか疑問に思わずにはいられません。プログラムのアーキテクチャーになります(明らかに、APIを指定するときは、すべてを詳しく説明する必要があります)。
これは設計の経験不足のせいかもしれませんが、一方で「はるか先の計画をあきらめて、とにかく数日ですべてが変わる」というようなアジャイルな方法論があります。私がどう感じるか。
それでは、設計をどの程度正確に「使用」する必要がありますか
do_ioそのクラスの内部実装の詳細のようです。パブリックインターフェースは、今後もそうでread(...)あり、おそらくそうであるはずwrite(...)です。それは、呼び出しの意図についてより詳細であるためです。