دانستنی‌ها

استفاده از الگوهای برنامه نویسی در چه شرایطی مفید و در چه شرایطی مضر است؟!!

مطابق با تعریف ارائه شده در [1]، “الگوها راه حل های اثبات شده برای حل مشکلات تکرارشونده در یک زمینه ی خاص هستند”. در حوزه ی مهندسی نرم افزار، الگوها (Patterns) در مراحل مختلف ایجاد نرم افزار (از جمله تحلیل، طراحی، و کدزنی) قابل استفاده هستند.

 

در شرایطی که ایجادکنندگان نرم افزار با مشکلی مواجه شوند، می توانند بررسی کنند که با توجه به شرایط موجود (در این زمینه ی خاص) تاکنون راه حل موفقی برای این مشکل تجربه شده است که بتوانند از این راه حل استفاده ی مجدد کنند یا بایستی راه حل جدیدی برای این مشکل پیدابرگرفته از http://www.123rf.com/ کنند. نکته ی مهمی که در استفاده از الگوها باید در نظر گرفته شود این است که لازم است قبل از اعمال راه حل، بررسی شود که شرایط اعمال راه حل وجود داشته باشد؛ به بیان دیگر، ممکن است برای یک مشکل، در شرایط مختلف راه حل های مختلفی وجود داشته باشد و در صورتی که یک راه حل بدون توجه به شرایط موجود اعمال شود، ممکن است تبعات منفی به دنبال داشته باشد (مضر باشد!).
در مقابل مفهوم الگو، مفهوم پادالگو (Anti-Pattern) بیان می شود. پادالگوها “راه حل های رایج اما اشتباهی هستند که تبعات منفی را به دنبال دارند” [2]. آگاهی از تبعات استفاده از پادالگوها مانع از تکرار راه حل های رایج اشتباه خواهد شد.
الگوهایی که در سطح زبان های برنامه سازی تجربه شده اند، اصطلاحاً idiom نامیده می شوند. John O’Hanley در [3] چهار مورد از الگوهایی که از دیدگاه وی به اشتباه در زبان جاوا رایج شده اند را به همراه راه حل های صحیح بحث کرده است. نکته ی جالبی که در بخش نتیجه گیری در [3] آورده شده است، این است که نویسنده بر مبنای تجربه ی چندین ساله ی خود پیش بینی می کند که علی رغم اینکه برای نظرات خود دلایل قانع کننده ای ارائه کرده است، احتمالاً به دلیل رایج بودن الگوها، از این گونه نقدها استقبال نخواهد شد. بنابراین آگاه بودن از پادالگوهای برنامه سازی کم اهمیت تر از آشنایی با الگوهای برنامه سازی نیست و استفاده ی مجدد از روش های تجربه شده مستلزم شناخت دقیق و صحیح شرایط موجود و نیز روش های اشتباه محتمل است.

 

 

 

منابع:

[1] S. Henninger and V. Corrêa, “Software pattern communities: Current practices and challenges,” in Proceedings of the 14th Conference on Pattern Languages of Programs, 2007, pp. 1–19.
[2] W. H. Brown, R. C. Malveau, and T. J. Mowbray, AntiPatterns: refactoring software, architectures, and projects in crisis. John Wiley & Sons, 1998.
[3] http://www.javaworld.com

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا