در مطلب قبلی درباره مضرات کد کثیف صحبت کردم هر چند که اگر کسی که کدنویسی کرده باشد می داند کد کثیف چیست ولی در این مطلب این موضوع را بیشتر بررسی می کنیم. برای درک بهتر کد کثیف، در ابتدا با تعریف کد تمیز از منظر اساتید برنامه نویسی آشنا می شویم.
خالق سی پلاس پلاس (Bjarne Stroustrup) :
استاد اعظم Grady Booch :
نویسنده و یکی از امضا کنندگان مانیفست اجایل (Dave Thomas ):
یکی از پدیدآورندگان اکس پی (Ward Cunningham ):
مارتین فولر نیز جمله جالبی دارد که می گوید :
“هر احمقی میتواند کدی بنویسد که کامپیوتر درک کند. برنامهنویسان خوب کدی مینویسند که انسانها قادر به درک آن باشند.”
حال که با کد تمیز آشنا شدیم اگر بخواهم سریع و کوتاه کد کثیف را معرفی کنم می گویم کد کثیف کدی می باشد که :
هنگامی که می خواهید یک بخشی از کد را ویرایش کنید. باید حواستان به کد سایر جاهای دیگر نیز باشد. باید آنها را نیز ویرایش کنید. در حالی که آنها ربطی به تغییر شما ندارند. کد وابسته کدی است که وابستگی بین بخش های کد به هم بسیار می باشد. در این نوع کدها شما نمی توانید یک تغییر ایزوله ایجاد کنید.
کد شکننده بسیار بدتر از کد وابسته می باشد. حداقل در کد وابسته هنگام کامپایل به خطا برمی خوریم. در کد شکننده ، اگر شما یک قطعه کوچک از کد را در یک ماژول تغییر دهید، یک ویژگی کاملاً متفاوت را در یک ماژول کاملاً متفاوت دچار مشکل می شود. و هیچ راه آسانی برای یافتن این خطاها در طول توسعه وجود ندارد.
به عنوان مثال، وقتی شما بخواهید یک ویژگی جدید را در پروژه خود پیاده کنید که همان کاری است که همکار شما برای یک پروژه متفاوت انجام داده است. اما شما به راحتی نمی توانید از کد همکارتان در پروژه خودتان استفاده مجدد کنید زیرا این کد به برخی دیگر از ویژگی های نامربوط پروژه آنها بستگی دارد که به نوبه خود به سیستم زیرساختی و یا پایگاه داده ای که در پروژه خود ندارید هم بستگی دارد. و بهتر است که پیاده سازی خود را برای آن ویژگی بنویسید.
این مشکل معروف به “گوریل و موز” است:
“شما یک موز می خواستید اما آنچه که گرفته اید یک موز در دست یک گوریل همراه با کل چنگل می باشد.”
در انتها یک جمله را یادآور شوم و آن اینست که :
کد تمیز کدی است که توسط کسی که به آن اهمیت می دهد نوشته شده است.
در مطلب بعدی از سری “کد تمیز” منابعی مفیدی برای یادگیری کد تمیز را معرفی خواهم کرد.
نظر شما درباره تعریف کد تمیز و کد کثیف چیست؟ شما روش های دیگری را برای شناسایی کد کثیف دارید؟ لطفا در بخش نظرات تجربیات خود را با ما درمیان بگذارید.
برای ثبت نام می توانید اینجا مراجعه کنید