کد کثیف چیست ؟ چگونه کد تمیز بنویسیم ؟
اولین بار کین بک kent beck یک انسان شناخته شده در دنیای نرم افزار بود که از این اصطلاح استفاده کرد و بعد از اون هم martin flower در کتاب هاش بیشتر از این اصطلاح استفاده کرد و توضیحاتی راجب این که چه موقع این کد کثیف به وجود میاد صحبت کرد. اگه این دونفر در دنیای مهندسی نرم افزار نبودند ما بسیاری از مفاهیم که برای بهتر شدن در دنیای نرم افزار یا طراحی وب یا اپلیکیشن بود رو ما نداشتیم .
و به طبع آن بسیاری از تکنولوژی ها به وجود نمی آمدند. به عنوان مثال بحث unit testing را برای اولین بار kent beck مطرح کرد و کم گم این موضوع گسترده شد.
خوب به این نکته توجه کنید ممکنه برنامه تحط وب همه چیزش درست کار بکنه ولی هم چنان شامل کد کثیف بشود . هر کدام از این کدها شامل رعایت نکردن طراحی است که ما در کدهامون آین موارد را رعایت نکرده ایم . این موارد میتواند نزدیک به 30 مورد نیز برسد اما اصلی ترین موارد را بهش می پردازیم . بسیاری از این موارد خیلی ساده است ولی نباید آن ها را دست کم گرفت چون در دراز مدت شما رو به چالش میکشاند.
1- long parameter list
تعداد پارامترهای ورودی شما نباید از یه حدی بشتر شود مثلا بشود 10 مورد . تو این حالت کد شما خیلی پیچیده خواهد شد در نیتیجه زمانی که دارید کد خودتون را توسعه میدهید یا دیباگ میکنید خیلی سخت خواهد شد و این مورد میتواند نشانه این باشد که متد شما داره بیشتر از یک کار را انجام میدهد.
برای رفع این مشکل باید چه کار کنیم (چگونه کد تمیز بنویسیم)؟ اگر شما مجبور هستید که این همه پارامتر ورودی داشته باشید میتوانید تمام ان را در یک ابجکت قرار دهید و به جای انکه حدود 10 تا scalar value به متد پاس دهید تنها یک ابجکت رو به متد میفرستید و در اینده که میخواهید کد خودتون رو بهبود بدید یا ری فکتور کنید مشکلی به وجود نمیاد .
Long methods-2
اولین مورد باید از متدهای طولانی استفاده کنید به طور معمول متدهای شما شامل 10 الی 12 خط باشد . حالا اگر متد شما فرض کنید شد 40 خط شد مشکل از کجاست؟ هر قسمت از کد شما باید تنها یک کار را انجام دهد خوب اینجا متد شامل یک بخش از کدهای ما است حالا وقتی متد شما شد 40 خط پس احتمال زیاد داره بیشتر از یک کار را انجام میدهد.
راه رفع این مشکل چیست ؟ شما باید متدهای خودتون را به متد کوچکتر تبدیل کنید و مطمئن شوید هر قسمت داره فقط یک کار را انجام میدهد.
3-Dead cod
فرضی کنید کدی را از قبل در برنامه نوشته اید و بعد مدتی لاجیک عوض شده یا خواسته های کارفرما عوض شده دیگه به ان تیکه کد نیازی نیست پس آن کد را پاک کنید نه کامنت کنید و یا بزارید همون جا باشه خیلی موارد برنامه نویسها به دلایل مختلف کد پاک نمی کنید و میگن بعدا ازش استفاده میکنیم اما اگر شما از سورس کنترلر استفاده کنید دیگر نیاز نیست که کد بزارید هم جا باشه اگر از سورس کنترلر استفاده نمیکنید که دیگه به خودتون برمیگرده و توصیه میکنم مقاله اهمیت سورس کنترلر رو بخوانید.
حالا چرا میگن dead cod رو پاک کنید ؟ زیرا در اینده اگر همکار شما یا خود شما بخواهید نرم افزار یا وبسایت خودتون رو توسعه بدید ، یا تغییراتی را انجام بدیهید وجود این کدها شما رو دچار سردرگمی خواهد رد.
4- نام گزاری صحیح متد، کلاس ، فانکشن ، id و ….. بسیار دیگر
این مورد بسیار مهمه مثلا در یک پرژه طراحی سایت وقتی دارید فانکشن قیمت محصول مینویسید از اسم صحیح و واضح استفاده نمیکنید و صرفا به اختصار یک اسمی فقط مینویسید وو پیش خودتون میکنید اره همین خوبه و بعد از مدتی مطمئنن اسم فانکشن خودتون رو فراموش میکنید و به مشکل در اینده خواهید خورد و باید کد خودتو رو دیباگ کنید این مورد بار ها و بارها دیده شده .
اگر اسم صحیحی انتخواب کنید دیگر نیاز به کانت کردن نیز ندارید . این مورد توجه کنید شما کد رو فقط برای ماشین نمینویسید این کد برای انسان نیز نوشته میشود ماشین ها مهم نیست براشون که شما کد چطوری مینویسید انها کد ها رو کامپایل میکنند. ولی برای انسانها مهمه و انسان است که کد رو توسعه میدهد.
5-duplicate code
وقتی شما یک قطعه کد دارید یا یک فانکشن یا یک لاجیک پیچیده دارید و چندین بار این قطعه کد را در جاهای دیگر کپی و پیست میکنید و یا به نحوه دیگرری همون منطق رو پیاده سازی کرده اید . ببنید ما یک اصلی در مهندسی نرم افزار داریم به نام don’t repeat yourself یا همان DRY یعنی هیچ وقت کد تکراری ننویسید.
راه حل چیست؟ ان بخش از کد تکراری را میکشید بیرون و در یک متد دیگر جای میدهید و هر جایی که از ان کد تکراری داره استفاده میکنید صرفا فقط همان متد را صدا میزنه .
دیدگاهتان را بنویسید