مزایا و معایب استفاده از یک Framework در توسعهٔ نرم‌افزار

مزایا و معایب استفاده از یک Framework در توسعهٔ نرم‌افزار

همواره دولوپرها، به‌خصوص کسانی که تازه‌کار هستند، بر سر این دوراهی قرار می‌گیرند که آیا از فریمورک‌ها (خواه برای طراحی فرانت‌اند باشد خواه برای کدنویسی بک‌اند) برای طراحی سایت، نوشتن یک برنامه یا اپلیکیشن موبایل و ... استفاده کنند یا شخصاً اقدام به کدزنی کنند. این مسأله در مورد طراحی ظاهر سایت خود را بیشتر نشان می‌دهد چرا که ظاهر سایت مستقیماً مسئول Look & Feel سایت است (به طور کلی، منظور از Look & Feel، ظاهر و همچنین نحوهٔ تعامل کاربران با یک سایت، نرم‌افزار یا اپلیکیشن است.)

اگر بخواهیم فرانت‌اند یک سایت را مد نظر قرار دهیم، فریمورک‌هایی همچون Bootstrap و Foundation هستند که کار را خیلی ساده کرده‌اند حتی برای کسانی که در عمرشان طراحی سایت انجام نداده‌اند. درست است که فریمورک‌هایی از این دست فرایند طراحی ظاهر سایت را خیلی سرعت بخشیده‌اند، اما در عین حال دارای یکسری نقاط ضعف نیز هستند.

سؤالی که در اینجا مطرح می‌شود این است که آیا همواره آسان‌ترین راه‌کار بهترین روش است یا خیر؟ معمولاً اکثر افراد به دنبال راه‌کاری هستند که در عین سادگی، از سرعت بالایی هم برخوردار باشد اما همان‌طور که در ادامهٔ این مقاله خواهیم دید، چنین رویکردی دارای نقاط ضعف خاص خود نیز هست (لازم به ذکر است که موضوع این مقاله پیش از این در مقالهٔ دیگری تحت عنوان استفاده از فریمورک‌ یا کدنویسی از پایه: مسئله این است! نیز مطرح شده است).

مزایای استفاده از فریمورک‌ها 
یکی از دلایلی که بسیاری از برنامه‌نویسان، دولوپرها و طراحان سایت و اپلیکیشن به دنبال فریمورک‌ها می‌روند این است که فریمورک‌ها دارای مزایای زیادی هستند که در ادامه با برخی از مهم‌ترین آن‌ها آشنا می‌شویم:

- نیازی نیست تا شما برنامه‌نویس باشید: هر فریمورک توسط تعدادی برنامه‌نویس حرفه‌ای نوشته شده است. لذا، مثلاً اگر قصد ورود به حوزهٔ فرانت‌اند را داشته باشید، صرفاً با یک دانش سطحی در مورد HTML و CSS، به سادگی خواهید توانست سایتی زیبا و اثربخش طراحی کنید (البته این قضیه در مورد فریمورک‌های بک‌اند اصلاً صدق نمی‌کند).

- صرفه‌جویی در زمان: همان‌طور که پیش از این گفته شد، با استفاده از فریمورک‌ها به طرز قابل‌توجهی می‌توانیم زمان طراحی یک سایت یا اپلیکیشن را کاهش دهیم.

- عملکرد Plug & Play: در فریمورک‌ها یکسری کلاس، متد و ... نوشته شده است که صرفاً با فراخوانی آنها خواهیم توانست از عملکردهای مختلفی بهره‌مند شویم. از این جهت نام Plug & Play به این سری از کلاس‌ها و متدها اطلاق می‌شود که به سادگی قابل استفاده هستند.

- کدهای قابل اعتماد: زمانی که شما یک فریمورک را مورد استفاده قرار می‌دهید، می‌توانید این اعتماد را داشته باشید که کدها پیش از این به خوبی تست شده‌اند و هیچ‌گونه باگی ندارند. به طور مثال، اگر از فریمورک‌های طراحی فرانت‌اند استفاده کنید، می‌توانید این اعتماد را داشته باشید که سایت شما در مرورگرهای مختلف به خوبی نمایش داده می‌شود و یا اگر از فریمورک‌های بک‌اند استفاده می‌کنید، می‌توانید این اطمینان را داشته باشید که فریمورک مد نظر به مراتب ایمن‌تر از کدنویسی شخصی است (البته این مسئله منوط به این است که جامعهٔ توسعه‌دهندگان آن فریمورک زیاد و فعال بوده تا به محض مشاهدهٔ یک آسیب‌پذیری، به سرعت پچ‌های آن را عرضه کنند).

- آپدیت‌های منظم: اکثر فریمورک‌های معروف به طور منظم آپدیت می‌شوند که در این آپدیت‌ها نه تنها برخی باگ‌های احتمالی حذف می‌شوند، بلکه ویژگی‌های جدیدی هم به آن‌ها افزوده می‌شود.

- برخورداری از پشتیبانی: اکثر فریمورک‌های معروف دارای یک پشتیبانی قوی هستند به این شکل که اگر در حین استفاده از آن‌ها به مشکلی برخورد کنید، به سادگی می‌توانید مشکل خود را در فوروم‌های مربوطه مطرح کرده و جواب‌های متنوعی دریافت کنید.

همان‌طور که مشاهده می‌شود، استفاده از فریمورک‌ها دارای مزایای گسترده‌ای است اما نکته‌ای که در اینجا نیاز به توجه دارد این است که اکثر این قابلیت‌ها مرتبط با زمان توسعهٔ یک سایت یا اپلیکیشن هستند و به طور قطع نمی‌توان گفت که محصول نهایی که توسط یک فریمورک ساخته شده است محصول باکیفیتی خواهد بود. بنابراین در اینجا نیاز هست تا با نقاط ضعف استفاده از فریم‌ورک‌ها هم آشنا شویم.

نقاط ضعف استفاده از فریمورک‌ها 
اگرچه که فریمورک‌ها دارای مزایای نسبتاً قابل‌توجهی هستند، اما این در حالی است که نقاط ضعف آنها را هم حتماً می‌بایست مد نظر قرار داد که برخی از مهم‌ترین آنها عبارتند از:

- منحنی یادگیری نسبتاً پُرشیب فریمورک: اگرچه که بسیاری از قابلیت‌ها و کلاس‌های یک فریمورک به صورت Plug & Play قابل استفاده هستند، اما شما نیاز دارید تا زمان قابل‌توجهی را به منظور یادگیری نحوهٔ استفاده از این قابلیت‌ها اختصاص دهید؛ به‌خصوص در زمان‌هایی که بخواهید از فریمورک‌های بک‌اند، همچون فریمورک لاراول برای توسعهٔ وب اپلیکیشن‌های زبان برنامه‌نویسی PHP، استفاده کنید.

- کدهای اضافی: از آنجا که اکثر فریمورک‌ها به این شکل نوشته می‌شوند که دغدغه‌های اکثر برنامه‌نویسان در ارتباط با پروژه‌هایشان در آنها دیده شده است، مسلماً کدهای اضافی به سایت یا اپلیکیشن شما تحمیل می‌شود که این مسأله تا حدودی می‌تواند پرفورمنس سایت شما را پایین بیاورد.

- سایتی همانند بسیاری سایت دیگر: اگر شما این توانایی را نداشته باشید که فریمورک خود را شخصی‌سازی کنید، سایت شما شبیه به بسیاری سایت‌های دیگر خواهد بود و این مسأله‌ای است که کمتر طراح سایت یا برنامه‌نویسی به آن متمایل است (اگر توجه کرده باشید، بسیاری از سایت‌ها بدون آنکه نیازی به نگاه کردن به سورس‌کد آنها داشته باشیم، به سادگی قابل تشخیص هستند که از سی‌ام‌اسی همچون وردپرس در آنها استفاده شده است).

- نیاز به یکسری قابلیت‌های جدید: بسیاری از ایده‌های ناب طراحان و برنامه‌نویسان در فریمورک‌ها قابل اجرا نیستند و طراح نیاز دارد تا یکسری پلاگین جدید نصب کرده و یا بدتر از آن، نیاز دارد تا پلاگینی را از صفر بنویسید.

- نداشتن کنترل کافی روی فریمورک: اگر تیم توسعهٔ فریمورک تصمیم بگیرد که برخی قابلیت‌های فریمورک را حذف کند، شما مجبور به قبول آن خواهید بود چرا که دیگر هیچ‌گونه پشتیبانی برای آن قابلیت خاص وجود نخواهد داشت و اگر هم خیلی روی این مسأله اصرار داشته باشید، مجبور خواهید بود تا از نسخه‌های قدیمی‌تر فریمورک مد نظر استفاده کنید که ممکن است دارای یکسری باگ هم باشند (علاوه بر این، نسخه‌های جدید بسیاری از فریمورک‌ها اصطلاحاً Backward Compatible نیست! به عبارت دیگر، با نسخه‌های پیشین آن فریمورک سازگاری نداشته و گاهی‌اوقات دولوپر مجبور به ریفکتور کردن بخش قابل‌توجهی از سورس‌کدش می‌شود).

به خاطر دلایلی که در بالا به آن‌ها اشاره شد، شما این امکان را نخواهید داشت تا یکسری از اهداف منحصر به فرد خود در طراحی سایت یا به طور کلی برنامه‌نویسی نرم‌افزارهای مختلف را به دست آورید. در بسیاری از کتاب‌ها، فوروم‌ها و مقالاتی که در حمایت از فریمورک‌ها نوشته شده‌اند، همواره این سؤال مطرح می‌شود که «چرا می‌بایست چرخ را از نو اختراع کرد؟»

در دید اول، این سؤال معقول و منطقی به نظر می‌رسد اما واقعیت قضیه چیز دیگری است. در حقیقت، اگر افراد از زمان‌های گذشته تاکنون اقدام به اختراع مجدد چرخ نکرده بودند، در حال حاضر ما می‌بایست از همان چرخ‌های اولیه که ۱۰۰٪ هم گِرد نبودند استفاده می‌کردیم. اختراع مجدد چرخ فقط زمانی مشکل‌زا می‌شود که شما چرخ را با همان خصوصیات قبلی اختراع کنید و هیچ چیز جدیدی به آن نیفزایید.

از همین روی، به نظر می‌رسد که اختراع مجدد چرخ چیز بدی نیست اگر اصولی باشد. حال برای آنکه از این دوراهی که در مقابل ما قرار گرفته نجات پیدا کنیم، می‌بایست هدف خود را از طراحی سایت یا به طور کلی توسعهٔ نرم‌افزار مشخص سازیم؛ اگر شما قصد دارید تا یک فریمورک شخصی‌سازی شده برای خود طراحی کنید، می‌بایست بتوانید به سؤالات زیر پاسخ دهید:
- آیا من توانایی ساخت یک فریمورک را دارم؟
- آیا من زمان کافی برای انجام این کار دارم؟
- آیا ساخت یک فریمورک شخصی کار معقولی است؟

اگر پاسخ به هر ۳ سؤال فوق «آری» است، پس می‌توانید اقدام به نوشتن فریمورک شخصی‌سازی شده یا اصطلاحاً Customized خود نمایید و در غیر این صورت، توصیه می‌شود راهی که بسیاری از دولوپرهای مبتدی و حرفه‌ای سراسر دنیا دنبال می‌کنند را پیش گیرد؛ به عبارت دیگر، از فریمورک‌های معروف عرضه شده به بازار استفاده نمایید.

حال نوبت به نظرات شما می‌رسد. به نظر شما مزایای استفاده از فریمورک‌ها بیشتر است یا معایب آنها؟ نظرات، دیدگاه‌ها و تجربیات خود را با ما و سایر کاربران سکان آکادمی به اشتراک بگذارید.



بهزاد مرادی