صادقی
صادقی
خواندن ۳ دقیقه·۵ ساعت پیش

زینهار ، برحذر باشید از فریم ورکها


زینهار

حتی بهترین فریم ورکها باعث وابستگی coupling می شوند.

سازندگان فریم ورکها تقریبا همیشه مزایای فریم ورک را تبلیغ می کنند. آنها وانمود می کنند یک راه حل جامع در اختیار شما قرار می دهند اما در واقع از اغلب محدودیتها و نگرانی های ویژه شما نا آگاهند چه رسد به اینکه درباره آنها تدبیری بیندیشند.

حتی اگر اکنون با شما همراه باشند ، هیچ ضمانتی نیست که سه یا چهار سال دیگر مسیری بروند که به کار شما زیانی وارد نشود.

به قول نویسنده کتاب Clean Architecture آقای Robert Cecil Martin استفاده شما از یک فریم ورک شبیه یک ازدواج ناهمسان است. یک طرف هیچ قول و تعهدی را گردن نمی گیرد و یک نفر تا مدتها متعهد و وابسته و گرفتار او باقی می ماند و تمام خطرها متوجه اوست. فریم ورک در ابتدا کمک می کند به سرعت به نتایج سریعی برسید و این چون زهر شیرینی است که شما را تشویق به نوشیدن می کند .اما کم کم متوجه خواهید شد ریسمانی که فریم ورک به گردن نرم افزار شما انداخته مدام تنگ تر می شود و دامنه حرکت شما را محدود و به تدریج به زمین میخکوبتان می کند. کم کم متوجه می شوید ارتقای فریم ورک مدام دشوار تر می شود و انجام بسیاری از تغییرات به تدریج طولانی تر و دردناک تر می شود. فریم ورکها دارو هستند نه غذا.

وابستگی یا coupeling پلید ترین و زورمند ترین دیو در راه نگهداری یک نرم افزار است و استفاده نادرست از فریم ورک این دیو را وارد خانه شما می کند.

به قول عمو باب نویسنده کتاب Clean Architecture فریم ورک یک ابزار است نه یک روش زندگی. پند عمو باب این است که با فریم ورک ازدواج نکنید هرگز با آن یک رابطه دایمی برقرار نکیند . اگر می توانید به جای فریم ورک از یک کتابخانه استفاده کنید چنین کنید. اگر هم از فریم ورک استفاده کردید مبادا بگذارید فریم ورک وارد هسته داخلی یا domain model شود. بخش اصلی کد شما که متولی انجام بیزنس است نباید وابستگی به فریم ورک داشته باشد و نباید چیزی از فریم ورک در کدهای این بخش ظاهر شود.

مولوی مثل جالبی دارد که کاملا با توصیه های بالا تطبیق می کند. مولوی می گوید آب تا وقتی زیر کشتی است باعث شناوری و حرکت کشتی است اما اگر وارد کشتی شد آن را غرق و تباه می کند. آب در اینجا فریم ورک است و کشتی بیزنس شما! نگذراید آب وارد کشتی شود !

آب در کشتی هلاک کشتی است …….. آب اندر زیر کشتی ، پشتی است

آب در کشتی هلاک کشتی است …….. آب اندر زیر کشتی ، پشتی است
آب در کشتی هلاک کشتی است …….. آب اندر زیر کشتی ، پشتی است


بخش بیزنسی نرم افزار شما باید بدون وجود فریم ورک کامپایل شود و تستهایش قابل اجرا باشند. از نشانه های یک نرم افزار غرق شونده این است که هیچکدام از بخشهای اصلی آن قابل کامپایل و تست بدون حضور فریم ورک نباشند.

برای آگاهی بیشتر فصل 22 کتاب Clean Architecture درباره فریم ورکها را بخوانید.

مخاطب این نوشته آن مدیر یا برنامه نویسی که یک سیستم را می نویسند و راه می اندازند و یکی دو سال بعد راهی جایی دیگر می شوند نیست. مشکلات ناشی از وابستگی بعد از یکی دو سال خودشان را نشان می دهند. این زهری شیرین است که تا اثر کند دست کم یک سال زمان می برد. مخاطب من کسانی هستند که می خواهند نرم افزاری تولید کنند که ده دوازده سال کار کند و تغییرات را پذیرا باشد و بدون مصیبت به ورژن دو و سه و چهار و بیشتر برسد.

در این روزگاه تبلیغات جذاب فریم ورکها چنان فراگیر است که حتی برای کارفرمایان آشنایی با اینها بسیار با ارزش تر از توانایی کد نویسی درست است.

https://www.amazon.com/Clean-Architecture-Craftsmans-Software-Structure/dp/0134494164


فریم ورکنرم افزار
شاید از این پست‌ها خوشتان بیاید