‫مزایای الگوی MVP

خیلی وقت پیش چیزهایی راجع به استفاده از الگوی MVP‌ در صفحات ASP.NET WebForm شنیده بودم. مزایایش را می‌دانستم و کمی هم امتحانش کرده بودم. اخیراً در یک پروژه وب کوچک ASP.NET WebForm از اون به طور کامل استفاده کرده و تمام مزایای آن را به طور عملی لمس کردم.

یکی از بهترین چیزهایی که MVP برای من داشت این بود که تقریباً به من اجازه نمی‌داد که در صفحات ASPX از کنترل‌های Data Aware مثل Grid و Form به صورت خودکار و markup استفاده کنم. به عبارت دیگر Data Binding و واگذار کردن همه چیز به DataSourceها ممنوع شده بود. این طوری من مجبور شدم همه عملیات مثل نمایش اطلاعات در صفحه یا خواندن اطلاعات از کنترل‌ها از طریق CodeBehind انجام دهم. خوبی این کار در این بود که جلوی بعضی خطاها را همان هنگام compile می‌گیرم. مثل اگر نام فیلدی را اشتباه تایپ کرده باشم یا تعداد پارامترهای دریافتی یک متود را رعایت نکرده باشم، همان زمان کامپایل خطا را می‌بینم. در حالت DataBinding خودکار نام فیلدها، متودها و اطلاعات پارامترها به صورت string غیر قابل کامپایل در فایل aspx/ascx قرار دارد و تا زمانی که صفحه در یک مرورگر باز نشود نمی‌توان متوجه خطا شد.

حس می‌کنم MVP قدرت تقسیم کار و کار تیمی را افزایش می‌دهد. چون همان کاری که همیشه در Codebehind انجام می‌شد، حتی با فرض این که دسترسی به دیتابیس و logic کار در یک لایه جداگانه انجام می‌پذیرد، را هم می‌توان به دو تیکه کاملاً مجزا تقسیم کرده و به افراد مختلف سپرد. این موضوع کار designerها (طراحی صفحات، گرافیک، جاوا اسکریپت) را هم ساده می‌کند. چون می‌توانند به صورت مستقل از برنامه‌نویس‌ها و بدون آن که مجبور باشند کار همدیگر را خراب کنند، با خیال راحت کارشان را انجام دهند. خوانا شدن کد برنامه، خصوصاً آنچه که در Presenter قرار داد، بخش دیگری از مزایای MVP است که من خودم با دستان خودم لمس کردم.

ممکن است دوستان زیادی پیدا شوند که با نگاهی به کدهای MVP دچار این تصور شوند که کدها بیخودی تیکه تیکه شده و در توابع یکی دو خطی تقسیم شده‌اند. جواب به این دوستان بله است. چون به هر صورت MVP مقداری حجم کد را افزایش داده و رفت و آمد بین کلاس‌ها را زیادتر می‌کند اما هر که دیدن طاووس خواهد جور هندوستان کشد.

پ.ن.: به این لینک هم که توضیحاتی کلی راجع به مدل‌های MVP و مشابه MVP است نگاهی بیندازید.