پادالگوها یا Anti-patterns کدامند؟

/, مهندسی نرم افزار/پادالگوها یا Anti-patterns کدامند؟

پادالگوها یا Anti-patterns کدامند؟

پادالگوها یا Anti-patterns الگوهایی در توسعه نرم افزار هستند که به عنوان تکنیک های بد برنامه نویسی شناخته می شوند.

در برابر الگوهای طراحی(Design Patters) که روشهای رایج و خوب برای مسائل رایج بوده و به صورت فرموله شناخته شده و تعریف می شوند، پادالگوها نقطه مقابل و نامطلوب هستند.

برای مثال در برنامه نویسی شیئ گرا(Object-Oriented programming)، ایده اصلی، شکستن برنامه به اجزای کوچکی به نام اشیاء است. یک مثال از پادالگوها یا Anti-patterns در برنامه نویسی شیئ گرا، شیئ خدا (God object) است که تعداد زیادی از توابع را در یک شیئ قرار می دهند که بهتر است هر کدام از توابع در اشیاء گوناگون قرار گیرند.

برای مثال:

class GodObject {
 function PerformInitialization() {}
 function ReadFromFile() {}
 function WriteToFile() {}
 function DisplayToScreen() {}
 function PerformCalculation() {}
 function ValidateInput() {}
 // and so on... //
 }

در مثال بالا شیئی وجود دارد که همه کار می کند. در برنامه نویسی شیئ گرا، بهتر است وظایف مشخصی برای اشیاء مختلف داشته باشیم که باعث شود کد پیچیدگی کمتر و قابلیت نگهداری بیشتری داشته باشد:

class FileInputOutput {
 function ReadFromFile() {}
 function WriteToFile() {}
 }

class UserInputOutput {
 function DisplayToScreen() {}
 function ValidateInput() {}
 }

class Logic {
 function PerformInitialization() {}
 function PerformCalculation() {}
 }

بدین معنا که راه های خوبی برای گسترش نرم افزار وجود دارد با نام الگوهای طراحی (design patters) که الگوهای مورد استفاده متداول هستند. ولی همچنان روش هایی برای طراحی و پیاده سازی نرم افزار وجود دارد که می تواند باعث ایجاد مشکل شود. الگوهایی که به عنوان روش های بد تولید نرم افزار شناخته می شوند پادالگوها یا Anti-patterns هستند.

منابع دیگر:

http://www.dotnettips.info/post/1847/sql-antipattern-1
http://www.dotnettips.info/post/1849/sql-antipattern-2
https://sourcemaking.com/antipatterns
به وسیله |۱۳۹۶-۱-۲۰ ۱۳:۳۲:۲۲ +۰۰:۰۰فروردین ۲۰ام, ۱۳۹۶|برنامه نویسی, مهندسی نرم افزار|بدون ديدگاه

درباره نویسنده :

ثبت ديدگاه

This website uses cookies and third party services. Ok