همواره دولوپرها، مخصوصاً کسانی که تازهکار هستند، بر سر این دوراهی قرار میگیرند که خواه برای طراحی فرانتاند و خواه برای کدنویسی بکاند آیا از فریمورک استفاده کنند یا شخصاً اقدام به کدنویسی زیرساخت پروژه کنند که در همین راستا در ادامه به مزایا و معایب استفاده از فریمورکها در فرآیند توسعهٔ نرمافزار خواهیم پرداخت.
اگر بخواهیم فرانتاند یک سایت را مد نظر قرار دهیم، فریمورکهایی همچون Bootstrap و Foundation به صورت رایگان به بازار عرضه شدهاند که کار توسعهٔ رابط کاربری را خیلی ساده کردهاند و در عین حال این پروسه را سرعت بخشیدهاند مخصوصاً زمانی که پای طراحی ریسپانسیو به میان میآید اما سؤالی که در اینجا مطرح میشود این است که آیا همواره آسانترین راه بهترین راه است؟ معمولاً اکثر برنامهنویسها به دنبال راهکاری هستند که در عین سادگی، از سرعت بالایی هم برخوردار باشد اما همانطور که در ادامهٔ این مقاله خواهیم دید، چنین رویکردی دارای نقاط ضعف خاص خود نیز میباشد اما پیش از مطالعهٔ ادامهٔ این پست، توصیه میکنیم به مقالات زیر مراجعه نمایید:
- توسعهٔ فریمورک اختصاصی یا استفاده از نمونههای اپنسورس؟
- توسعهٔ سیاماس اختصاصی یا استفاده از نمونههای اپنسورس؟
مزایای استفاده از فریمورکها چیست؟
یکی از دلایلی که بسیاری از برنامهنویسان، دولوپرها و طراحان سایت و اپلیکیشن به دنبال فریمورکها میروند این است که اساساً دارای مزایای زیادی هستند که در ادامه با برخی از مهمترین آنها آشنا خواهید شد:
- صرفهجویی در زمان: همانطور که پیش از این گفته شد، با استفاده از فریمورکها به طرز قابلتوجهی میتوانیم زمان توسعهٔ یک اپلیکیشن را کاهش دهیم.
- فانکشنهای آماده: در فریمورکها یکسری کلاس، متد و هِلپِر نوشته شده است که صرفاً با فراخوانی آنها خواهیم توانست از عملکردهای مختلفی بهرهمند شویم در حالی که اگر بخواهیم خود از پایه آنها را کدنویسی کنیم، هفتهها و شاید هم ماهها زمان نیاز داشته باشیم.
- کدهای قابلاعتماد: زمانی که فریمورکی را مورد استفاده قرار میدهید، میتوانید این اعتماد را داشته باشید که کدها پیش از این به خوبی تست شدهاند و هیچگونه باگی ندارند (البته هیچ چیزی ٪۱۰۰ نیست!) به طور مثال، اگر از فریمورکهای طراحی فرانتاند استفاده کنید، میتوانید این اعتماد را داشته باشید که سایت شما در مرورگرهای مختلف به خوبی نمایش داده میشود و یا اگر از فریمورکهای بکاند استفاده میکنید، میتوانید این اطمینان را داشته باشید که فریمورک مد نظر به مراتب ایمنتر از کدنویسی شخصی است (البته این مسئله منوط به این است که جامعهٔ توسعهدهندگان آن فریمورک گسترده و فعال بوده تا به محض مشاهدهٔ یک آسیبپذیری، به سرعت پَچهای آن را عرضه کنند.)
- آپدیتهای منظم: اکثر فریمورکهای معروف به طور منظم آپدیت میشوند که در این آپدیتها نه تنها برخی باگهای احتمالی حذف میشوند، بلکه ویژگیهای جدیدی هم به آنها افزوده میشود.
- برخورداری از پشتیبانی: اکثر فریمورکهای معروف دارای یک پشتیبانی قوی هستند به این شکل که اگر در حین استفاده از آنها به مشکلی برخورد کنید، به سادگی میتوانید مشکل خود را در فورومهای مربوطه مطرح کرده و جوابهای مناسبی دریافت کنید.
نقاط ضعف استفاده از فریمورکها چیست؟
اگرچه فریمورکها دارای مزایای نسبتاً قابلتوجهی هستند، اما این در حالی است که نقاط ضعف آنها را هم حتماً باید مد نظر قرار داد که برخی از مهمترین آنها عبارتند از:
- منحنی یادگیری نسبتاً پُرشیب: گرچه بسیاری از قابلیتهای یک فریمورک به راحتی قابلاستفاده هستند، اما نیاز است تا زمان قابلتوجهی را به منظور یادگیری نحوهٔ استفاده از این قابلیتها اختصاص دهید؛ به خصوص در مواقعی که بخواهید از فریمورکهای بکاند، همچون فریمورک لاراول برای توسعهٔ وب اپلیکیشنهای زبان برنامهنویسی PHP، استفاده کنید.
- کدهای اضافی: از آنجا که اکثر فریمورکها به این شکل نوشته میشوند که دغدغههای اکثر برنامهنویسان در ارتباط با پروژههایشان در آنها دیده شده است، مسلماً کدهای اضافی به سایت یا اپلیکیشن شما تحمیل میشود که این مسأله تا حدودی میتواند پرفورمنس اپلیکیشن شما را پایین بیاورد.
- سایتی همانند بسیاری سایت دیگر: در ارتباط با فریمورکهای فرانتاند مثل بوتاسترب، اگر این توانایی را نداشته باشید تا آن را شخصیسازی کنید، سایت شما شبیه به بسیاری سایتهای دیگر خواهد بود و این مسألهای است که کمتر طراحی به آن متمایل است (اگر توجه کرده باشید، بسیاری از سایتها بدون آنکه نیازی به نگاه کردن به سورس آنها داشته باشیم، به سادگی قابلتشخیص هستند که از سیاماسی همچون وردپرس در طراحی آنها استفاده شده است.)
- نداشتن کنترل کافی روی فریمورک: اگر تیم توسعهٔ فریمورک تصمیم بگیرد که برخی قابلیتهای فریمورک را حذف کند، شما مجبور به قبول آن خواهید بود چرا که دیگر هیچگونه پشتیبانی برای آن فیچر خاص دریافت نخواهید کرد و اگر هم خیلی روی این مسأله اصرار داشته باشید، مجبور خواهید بود تا از نسخههای قدیمیتر فریمورک مد نظر استفاده کنید که ممکن است دارای یکسری باگ هم باشند مضاف بر اینکه نسخههای جدید بسیاری از فریمورکها اصطلاحاً Backward Compatible نیست به این معنی که با نسخههای پیشین آن فریمورک سازگاری نداشته و گاهی اوقات اگر دولوپر بخواهد به نسخهٔ جدید مهاجرت کند، مجبور به ریفکتور کردن بخش قابلتوجهی از سورسکدش میشود.
نتیجهگیری
در بسیاری از کتابها، فورومها و مقالاتی که در حمایت از فریمورکها نوشته شدهاند، همواره این سؤال مطرح میشود که «چرا باید چرخ را از نو اختراع کرد؟» در دید اول، این پرسش معقول و منطقی به نظر میرسد اما از بُعد دیگری نیز میتوان به این قضیه نگاه کرد. به عبارتی، اگر آدمهای خلاق از زمانهای گذشته تاکنون اقدام به اختراع مجدد چرخ نکرده بودند، در حال حاضر مجبور بودیم از همان چرخهای اولیه که ٪۱۰۰ هم مُدور نبودند استفاده میکردیم به طوری که میتوان گفت اختراع مجدد چرخ فقط زمانی مشکلزا میشود که شما چرخ را با همان خصوصیات قبلی اختراع کنید و هیچ چیز جدیدی به آن نیفزایید.
به طور کلی، چنانچه قصد دارید تا یک فریمورک شخصیسازی شده برای خود بنویسید، باید ابتدا به ساکن بتوانید به این پرسش پاسخ دهید که «آیا توانایی علمی ساخت یک فریمورک را دارم یا خیر؟» که اگر پاسخ به هر این پرسش «آری» بود، میتوانید اقدام به نوشتن فریمورک شخصی خود نمایید و در غیر این صورت، توصیه میشود راهی که بسیاری از دولوپرهای مبتدی و حرفهای سراسر دنیا دنبال میکنند را پیش گیرد؛ به عبارت دیگر، از فریمورکهای مطرح اپنسورس استفاده نمایید.
حال نوبت به نظرات شما میرسد. فکر میکنید مزایای استفاده از فریمورکها بیشتر است یا معایب آنها و دیدگاه شما در ارتباط با گزارهٔ «اختراع مجدد چرخ» چیست؟ نظرات، دیدگاهها و تجربیات خود را با سایر کاربران سکان آکادمی به اشتراک بگذارید.