چارەسەرکردنی دژەپاتێرنی Arrow Head

1
بابەت بڵاوبکەوە......
Share on FacebookEmail this to someoneShare on Google+Pin on PinterestTweet about this on TwitterShare on LinkedInShare on RedditShare on TumblrDigg this

دژەپاتێرن (AntiPattern) بە چارەسەرێکی باوی کێشەیەک دەگوترێ، کە خۆی لە خۆیدا رێگای چارەسەرکردنەکە ناجێگیری دەخاتە ناو کۆدەکە یان کێشەی دیکە دروست دەکات.

چەندین دژەپاتێرن هەیە لە پڕۆگرامینگ، لەو بابەتە باسی Arrow head دەکەین . ئەو جۆرە دژەپاتێرنە کاتێک درووست دەبێک کە چەندین if-else if-else لە ناو یەکتر دا دەنووسرێن، بەوەش شێوەی سەرە تیرێک دروست دەکەن. بەم شێوەیە:

ئەگەر سەیری ئەو نموونەیە بکەین:

ڕوونترین شت لەو نموونەی سەرەوە ئەوەیە کە کۆدەکە ڕوون نییە! ئەو جۆرە کۆدانە بەبێ هۆ کارەکە ئاڵۆز دەکەن. بەمەش ئەگەری دروستبوونی هەڵە و Bug زۆتر دەبێت. بۆ چارەسەرکردنی ئەو دژەپاتێرنە چەند ڕێگایەک هەن:

ڕێگای یەکەم:

دەتوانین Guarding Clause بەکاربهێنین، واتە یەکەمجار دڵنیا ببینەوە کە هەموو پارامیتەرەکان بەهای تەواویان هەیە، ئەگەرنا  ڕاستەخۆ لە فەنکشنەکە بێێنە دەرەوە بەهۆی return، یانیش Exception یێک هەڵبدەین. بەو شێوەیە:

جوانتر بووە، ها؟ ئێستا کۆدەکە زۆر ڕوونترە، وە خوێندنەوەشی زۆر هاسانترە لەسەر چاوان. بەڵام هێشتاش دەتوانین کورتتری بکەینەوە:

ئێستا تەواو ڕێک بووە. بەڵام دەشکرێ هەندێک کەس ئەو کورتکردنەوەیان پێ باش نەبێت، بەتایبەتی ئەگەر بتەوێ Exception هەڵبدەیت. لەبەرئەوەی ئەوکات ناتوانی ناوی پارامیتەرەکە لە ناو Exception ــەکە بنووسی.

ڕێگای دووەم:

ئەگەر حەزت لەو return نانە نییە، و دەتەوێ هەر فەنکشنەی تەنها یەک returnی هەبێت، دەتوانی گۆڕاوێکی جۆری Boolean بەکاربهێنیت بۆ ئەوەی دیاری بکەی کە هەموو شتێک تەواوە یاخود نا. بۆ نموونە:

چاکی ئەو ڕێگایە لە کاتێک بە دیار دەکەوێت کە ژمارەیەکی زۆر مەرج هەبێت لەسەرەتای فەنکشنەکە. بۆ نموونە:

ڕێگای سێیەم:

ئەو ڕێگایەشیان هەر لە ڕێگای دووەم دەچێت، بەڵام لەبری ئەوەی کە گۆڕاوێکی سەربەخۆ بەکاربهێنی، ڕاستەخۆ بە بەکارهێنانی AND و OR هەموو مەرجەکان لە ناو یەک if دا بنووسی:

بەکارهێنانی ڕێگای دووەم یان سێیەم لەسەر بارودۆخەکە دەوەستێت، ئەگەر مەرجەکان زۆر درێژ بوون دەتوانی ڕێگای دووەم بەکاربهێنی، ئەگەریش نا، ڕێگای سێهەم.

بەکارهێنانی چەند فەنکشنێک:

ئەو ڕێگایانەی سەرەوە بۆ if باشن، بەڵام ئەگەر هاتوو چەند لووپێکمان لە ناو یەکتردا هەبوو؟ بۆ ئەوەش دەتوانین لە بڕی یەک فەنکشنی گەورە، چەند فەنکشنێکی بچوکتر بەکاربهێنین، بۆ نموونە سەیری ئەو پارچە کۆدە بکە:

دەتوانین ئەو فەنکشنە بکەین چەند فەنکشنێکی بچوکتر و کۆدەکە جوانتر بکەین:

کۆتایی

ئەو چەند ڕێگایەی سەرەوە یارمەتی باشتر نووسین کۆد دەدەن. بەڵام لە زۆربەی حاڵەتەکاندا ئەگەر پێویستیت بە زۆرتر لە ٣ لووپ یان مەرج هەبوو لەناو یەکتری، ئەوا بزانە کارەکە بەهەڵەیی دەکەیت. هەموو کات ڕێگایەکی ئاسانتر و سادەتر هەیە، وە کۆد چەند ڕوونتر و سادەتربێت باشترە.

قوتابی بەشی ئەندازیاریی سیستەمی زانیاری لە زانکۆی پۆلیتەکنیکی هەولێر

گفتوگۆ1 لێدوان

لێدوانێک بنووسە