در این سری آموزشی که از وبسایت پرووید منتشر میشود در رابطه با روشهای مختلف کاهش cyclomatic complexity در برنامه نویسی صحبت خواهیم کرد. در ابتدا، مفهوم cyclomatic complexity را شرح خواهیم داد. cyclomatic complexity یکی از معیارهای ساده است که با استفاده از آن می توانیم سطح پیچیدگی یک تکه کد را مشخص کنیم. به عبارت دیگر، cyclomatic complexity تعداد مسیرهای اجرایی مستقل از هم است که یک تکه کد میتواند به آن روش ها اجرا بگردد. این معیار یکی از معیارهای استاندارد است که در مشخص کردن سطح پیچیدگی کد مورد استفاده قرار میگیرد و نمایانگر این است که در یک تکه کد چه تعداد تصمیم های مختلف و روش های مختلف اجرا که اصطلاحاً آنها را execution path و یا مسیر اجرا نیز مینامیم وجود دارد. در رابطه با cyclomatic complexity میتوانید در سایت ویکی پدیا اطلاعات بیشتری کسب کنید.
در زبان های برنامه نویسی استفاده کردن از ساختارهای مختلف باعث افزایش cyclomatic complexity می شود. برای مثال جملات شرطی که تحت آنها دو مسیر اجرایی مختلف ایجاد می گردند cyclomatic complexity را به اندازه دو واحد افزایش می دهند. همانطور که می دانید با استفاده از جملات شرطی برنامه میتواند در دو مسیر اجرایی مختلف قرار بگیرد و تحت یکی از آنها و با توجه به یک شرط اجرا بگردد. حلقه های تکرار از قبیل حلقههای for و while نیز میتوانند به cyclomatic complexity کد کمک کند و این دلیل از این موضوع نشأت میگیرد که حلقه های تکرار مسیرهای اجرایی منحصر به فردی را در خود بدنه ی حلقه و در بیرون از آن منجر میشوند. علاوه بر این، جملات شرطی که به صورت تودرتو نوشته می شوند و یا جملات شرطی که درون حلقه های تکرار قرار داده میشوند میتوانند به cyclomatic complexity کمک کنند. در این مقاله و دیگر مقالاتی که در این راستا منتشر خواهد شد تکنیک هایی را معرفی و پیاده سازی می کنیم که با استفاده از آنها می توانیم cyclomatic complexity را کاهش بدهیم. برای مثال؛ نحوه ی اجتناب کردن از نوشتن جملات شرطی میتواند به کاهش cyclomatic complexity کمک کند.
مخاطبین دوره آموزشی:
برنامه نویسانی که در سطوح بسیار پیشرفته قرار دارند و با موضوعاتی از قبیل الگوهای طراحی، مباحث مربوط به شی گرایی و تکنیک های ریفکتورینگ آشنا هستند، میتوانند از این دوره آموزشی استفاده کنند. این دوره آموزشی برای تمامی افرادی تنظیم شده است که سالیان سال تجربه توسعه نرمافزارهای پیچیده و موفق را دارند و حال میخواهند با استفاده از الگوهای طراحی مختلف، روشهای صحیح تر پیادهسازی نیازمندیها را فرا بگیرند.
پیش نیازها:
برای درک هرچه بهتر موضوعات مطرح شده در این آموزش پیشرفته، می بایست موضوعاتی از قبیل الگوهای طراحی و مباحث مربوط به شی گرایی را بدانید. در این رابطه، توصیه میکنیم از آموزش الگو های طراحی (Design Pattern) ها در سی شارپ و آموزش شی گرایی OOP در سی شارپ دیدن کنید. موضوعات مربوط به کدنویسی تمیز نیز، میتوانند در درک هرچه بهتر موضوعات مطرح شده در این دوره آموزشی به شما کمک کنند. در این رابطه نیز می توانید از آموزش رایگان کد نویسی تمیز Clean Coding در سی شارپ و آموزشکدنویسی تمیز: نوشتن کد برای انسان ها دیدن کنید.