プログラマーは矛盾する問題を解決していますか(コードアーキテクチャ)

製品を掲載したウェブサイトがあるとしましょう。Product::getProducts



製品の配列返すメソッドがあります。





それからマネージャーが私たちのところに来て言った:私たちはサイトでプロモーション(割引、販売)をしたい。各プロモーションには商品が添付されます。メソッドを書きましたAction::getProductsByActionId(actionId)







それからマネージャーがまた来て、商品が付いている記事がもっと必要だと言いました。メソッドを追加しましょうArticle::getProductsByArticleId(arcticleId)







あなたが言う-パラメータを使って1つのメソッドを作りましょう。わかりました、それについて説明します。





そして注意:マネージャーが私たちのところに来て言った-私たちはサイト上の製品を無効にできるようにしたいのです。それら。値true / falseを持つ製品のアクティブフラグを追加する必要があります。偽のフラグが付いた製品は、サイトに表示しないでください。





結論:コード内で製品を取得するすべての場所を見つけ、どこにでもロジックを追加して、active = trueフラグを持つ製品のみが返されるようにする必要があります。それら。3つの方法を修正する必要があります。



Product::getProducts,







Action::getProductsByActionId(actionId),







Article::getProductsByArticleId(arcticleId)







間違った場所でコードを修正する必要があるという事実は、重大なエラーです-ある場所では、修正するのを忘れていました。





さて、商品を入手できる場所が1つだけになるようにしましょう。そうすれば、そのようなエラーは発生しません。





: , : Product::getProducts(actionId = null, articleId = null)



. , Product::getProducts



, articleId, Action::getProductsByActionId(actionId)



, ..





, , .. .





: . . , , Store::getProducts



— - , . - Product::getProducts



. ( , , - - ), - .





: : , active. . . 1 — Product::getProducts



active=true.





. — . 1 , — . . , Product::getProducts



-, active . 1 .





1 — , — . — -, - . . , — .





UPD:





, 1 : Product::getProducts, Product::getProductsV2, Product::getProducts , , , .





: , 1 private Product::getProducts. public , , .. - Product::getProductsForCatalog, - Product::getProductsForAction, : Product::getProductsForArticles, Product::getProductsForStore .. - 1 , 1 . 1 ( ), .








All Articles