هل يحل المبرمجون المشكلات المتضاربة (هندسة الكود)

لنفترض أن لدينا موقعًا إلكترونيًا يحتوي على منتجات. لدينا طريقة تقوم Product::getProducts



بإرجاع مجموعة من المنتجات.





ثم جاء إلينا مدير وقال: نريد عمل عروض ترويجية في الموقع (خصومات ، تخفيضات). سيتم إرفاق المنتجات بكل عرض ترويجي. كتبنا طريقةAction::getProductsByActionId(actionId)







ثم جاء إلينا المدير مرة أخرى وقال إننا بحاجة إلى المزيد من المقالات التي تم إرفاق البضائع بها. دعونا نضيف طريقة Article::getProductsByArticleId(arcticleId)



.





أنت تقول - دعنا نجعل طريقة واحدة مع المعلمات. حسنًا ، سنصل إلى ذلك.





ثم الانتباه: جاء إلينا مدير وقال - نريد أن نكون قادرين على تعطيل المنتجات على الموقع. أولئك. من الضروري إضافة علامة نشطة للمنتجات ، والتي لها القيمة صواب / خطأ. يجب عدم عرض المنتجات ذات العلامة الخاطئة على الموقع.





الخلاصة: نحتاج إلى العثور على جميع الأماكن في الكود التي تحصل على المنتجات وإضافة منطق في كل مكان بحيث يتم إرجاع المنتجات التي تحتوي على علامة active = true فقط. أولئك. 3 طرق تحتاج إلى تصحيح:



Product::getProducts,







Action::getProductsByActionId(actionId),







Article::getProductsByArticleId(arcticleId)







حقيقة أننا بحاجة إلى تصحيح الشفرة في المكان الخطأ هي أخطاء مدهشة - في مكان ما نسوا تصحيحها.





حسنًا ، دعنا نجعلها بحيث يكون لدينا مكان واحد فقط للحصول على البضائع منه. ثم لن يكون هناك مثل هذا الخطأ.





: , : 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