اشکالات استفاده از queryهای Linq به شکل عادی
فرض کنیم ما میخواهیم از لیست اشخاص (personsList) اونایی که اسمشون "امید" هست رو پیدا کنیم و برای این کار از linq استفاده می کنیم:
personsList.Where(p => p.Name == "امید")
خیلی از مواقع پیش میاد که ما میخوایم این کد رو جاهای دیگه هم استفاده کنیم و یا اینکه رو اسمهای مختلف همین جستجو رو داشته باشیم.(مثلا اونایی که اسمشون "نوید" هست)
personsList.Where(p => p.Name == "نوید")
در بعضی مواقع هم میخوایم یه جستجوی ترکیبی داشته باشیم مثلا اونایی که اسمشون "امید" یا "نوید" هست رو پیدا کنیم.
personsList.Where(p => p.Name == "نوید" || p.Name == "امید")
مشکل اینجاست که منطق این کدها یکی هست و ما داریم اونو تکرار میکنیم که برخلاف اصل DRY می باشد و علاوه بر این قابلیت نگهداری (Maintenance) این کدها هم خیلی پایینه!
همچنین امکان نوشتن Unit Test برای این queryها نیست. (اگر هم باشد، خیلی پیچیده است و کد را ناخوانا می کند)
با استفاده از الگوی Specification این مشکلات حل خواهد شد که در مطالب جداگانه به معرفی و تشریح این الگو می پردازیم.
- ۹۲/۰۹/۲۹
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.