“Don’t Repeat Yourself” خودتو تکرار نکن
به طور خلاصه این اصل میگه که: از کد های تکراری پرهیز کن. رفتار یک کد در سیستم باید یکتا باشد.
هدف DRY کاهش تکرار الگوریتم ها و الگو ها، برای حفظ یکتایی و دوری از افزونگیه. اما فقط به اینجا ختم نمیشه.. برای DRY عجله نکن برو سمت WET:
“Write Everything Twice” یا “Write Every Time” هر بار بنویس یا هر چیزی رو دوبار بنویس
چیزی که توی ذهن شما در مورد DRY میگذره:
ویکی پدیا: DRY مخفف عدم تکرار یک کد دوبار است.
شما: آهان، باشه من همه تکرارهام را با abstraction جایگزین می کنم.
به نظر راه حل خوبی میاد، اما اینطور نیست. این abstraction معمولا اشتباهه. چرا؟
تبریک میگم، شما یک abstraction اشتباه ایجاد کرده اید.
کد دیگه یک abstraction واحد و مشترک رو نشون نمیده. این یک abstraction پر از شرطه. درکش سخت و پایداریش کم میشه و هر ویژگی جدید کد رو پیچیده تر می کنه.
پس چیکار باید کرد؟ “Write Everything Twice” همه چیز را دوبار بنویس.
اینو یادت باشه:
تکرار به مراتب کم هزینه تر از یک انتزاع اشتباه است.
برای هر نیازمندی جدید یه abstraction ایجاد کن. همه قسمت های تکراریش رو کپی کن. عیبی نداره. بعد از مدتی میتونی نیازمندیهای جدید رو پیشبینی کنی، کدت رو تجزیه و تحلیل کنی و abstraction های مناسب رو استخراج کنی.
Keep It Simple, Stupid” یا “Keep It Stupid Simple“ اون رو خیلی احمقانه، ساده نگه دار. یا جمله اولی میگه: احمق! اونو ساده نگه دار.
این اصل میگه که باید طراحی کد رو تا جایی که ممکنه ساده کرد، تا جایی که حتی احمق ها هم اونو متوجه بشن! رعایت این اصل این مزیت ها رو داره:
مارتین فلور یه حرف جالبی میزنه:
هر احمقی می تواند کدی بنویسد که کامپیوتر آن را بفهمد. برنامه نویسان خوب کدی را می نویسند که انسان بتواند آن را بفهمد.
YAGNI
“You Aren’t Gonna Need It” تو به آن نیاز نخواهی داشت
این هم یه اصل دیگه توی توسعه نرم افزاره که میگه: همیشه چیزها را زمانی که واقعا به آنها نیاز دارید اجرا کنید، نه زمانی که فقط پیش بینی می کنید که به آنها نیاز دارید.
شاید شما موقع شروع توسعه نرم افزارتون تصور کنید چیز های زیادی هست که بعدا بهشون نیاز پیدا خواهید کرد. اما نباید تا وقتی که واقعا لازمشون دارید پیاده سازیشون کنی.