✅ پستی با مسما از کانال Sadra
آدرس کانال https://t.me/lnxpylnxpy
یه جمله خیلی بامسما در کتاب Clean Code in Python هست که میگه:
Having maintainable software is not about anticipating future requirements (do not do futurology!)
ترجمه: داشتن یه نرمافزار قابلنگهداری به معنی پیشبینی نیازمندیهای آینده نیست. (آیندهپژوهی نکنید!)
اینجا “پیشبینی” به معنی تخصیص انرژی و زمان واسه ساخت یه بستر برای توسعه سادهتر در آینده با توجه به نیازمندیهایی هست که بعدها ممکنه بوجود بیان.
منظور اینه که بجای اینکه بیایم ذهنیت، معماری و دیزاین رو محدود به آینده کنیم، سعی کنیم نیازمندیهای فعلی رو برطرف کنیم.
یه مثال کاربردی میزنم تا درک این قضیه سادهتر شه. فرض کنید شما یه Shop طراحی کردید و فقط یه متد پرداخت دارید و اونم PayPal هست. درحالی که دارید کلاس PayPal رو طراحی میکنید، این فکر به ذهنتون خطور میکنه که شاید بعدها متد پرداخت Stripe هم به سیستم اضافه شد. اونوقت من باید یه کلاس عین PayPal واسه Stripe درست کنم.. چرا از همین الان یه Base Class درست نکنم و PayPal و Stripe از اون بیسکلس ارثبری نکنن؟
موضوع اینه که هنوز نه به باره.. نه به داره.. استرایپ کو؟! داری عملا از دیزاینپترنی استفاده میکنی که اصلا نیازی بهش نداری. بله. درسته. این یه دیزاین OOP پرفکت هست و بهتره که همچین حرکتی رو بزنی ولی آیا الان؟!
اینجاست که Over-engineering کار دست آدم میده. بنظرم این دو موضوع Overengineering و Overthinking در کنار هم میان. تمرکزتون رو بذارید روی نیازمندیهای فعلی و سعی کنید سلوشن خوب برای الان بدید.. بعدا با تغییر نیازمندیها، میتونید سراغ دیزاینپترنها و متدلوژیها و معماریهای پیچیدهتر هم برید!