چیست کد پیش ساخته (Boilerplate Code)؟
کد پیش ساخته، قطعهای از متن زبان برنامهنویسی است که میتوانید با تغییرات کم یا بدون هیچ تغییری در چندین موقعیت مختلف دوباره استفاده کنید. این اصطلاح از مدیریت اسناد سرچشمه میگیرد، جایی که از الگوهای سند یا کد پیش ساخته با تغییرات جزئی برای موقعیتهای مختلف استفاده مجدد میشود. برای مثال، وکلا از کد پیش ساخته قرارداد استفاده میکنند که به سرعت میتوانند آن را برای مشتریان صنایع مختلف شخصیسازی کنند. به طور مشابه، توسعهدهندگان نرمافزار از کد پیش ساخته با تغییرات جزئی در ماژولهای مختلف برنامه استفاده مجدد میکنند. با برخی از زبانهای برنامهنویسی مدرن، میتوانید کد پیش ساخته را با کپسولهسازی آن در توابع، کلاسها و سایر ساختارهای برنامهنویسی به حداقل برسانید.
مزایای کد پیش ساخته چیست؟
کدهای پیش ساخته از تعریفهای ساده تا توابع نرمافزاری که کارهای خاصی را انجام میدهند، متغیر هستند. هنگام توسعه برنامههای کاربردی، برنامهنویسان کدهایی مینویسند که ممکن است بدون دلیل تکرار شوند. توسعهدهندگان از کدهای پیش ساخته برای برنامهنویسی کارآمدتر و در عین حال تضمین کیفیت نرمافزار استفاده میکنند.
در ادامه به چندین مزیت کد پیش ساخته اشاره میکنیم که در صورت استفاده مناسب میتوانند بسیار مفید باشند:
-
امکان استفاده مجدد از کد: کدهای پیش ساخته برای برنامهنویسی مجدد بسیار مهم هستند، جایی که توسعهدهندگان میتوانند کدهای از پیش نوشته شده را در ماژولهای بعدی که ایجاد میکنند، اعمال کنند. هنگام برنامهنویسی، توسعهدهندگان میتوانند کدهای ظاهرا تکراری را شناسایی کرده و آنها را به کد پیش ساخته تبدیل کنند. به جای نوشتن کل کد منبع از ابتدا، آنها میتوانند کدهای پیش ساخته را در صورت نیاز کپی و جایگذاری کنند.
-
ارائه راهحلهای قابل اعمال: کد پیش ساخته برای توسعهدهندگان هنگام نوشتن توابع نرمافزاری که با آنها آشنا نیستند، به عنوان مرجع عمل میکند. بهطور سنتی، توسعهدهندگان باید کل کد را از ابتدا مینوشتند و تست میکردند که آیا کار میکند. دیگر چنین نیست.
به عنوان مثال، میتوانید هنگام شروع یک پروژه توسعه وب از کد پیش ساخته برای صفحات وب استفاده کنید. نیازی به بازسازی ساختار HTML اولیه که هر صفحه وب نیاز دارد، نیست.
- امکان به اشتراک گذاری دانش: توسعهدهندگان دائما کدهای خود را با انجام تست نرمافزار و بررسی کیفیت بهبود میبخشند. آنها میتوانند از کد پیش ساخته برای تثبیت این بهبودها استفاده کنند.
برای مثال، هر بار که برنامهنویسی باگهایی را در کدهای پیش ساخته پیدا میکند، میتواند بهبودهایی را انجام دهد و تغییرات را در کد پیش ساخته ثبت کند. به این ترتیب، هر برنامهنویسی که از کد قابل استفاده مجدد استفاده میکند، از بهینهسازیها بهرهمند خواهد شد.
- بهبود کیفیت کد: کدهای پیش ساخته خطر اشتباهات کدگذاری را کاهش داده و کیفیت نرمافزار را بهبود میبخشند. هنگامی که از کدهای پیش ساخته استفاده میکنید، قابلیتهای نرمافزاری را با کدهایی که به طور کامل تست شدهاند، فعال میکنید. برای اضافه کردن عملکرد سفارشی یا جزئی به نرمافزار، فقط چند خط کد نیاز به نوشتن است.
علاوه بر این، استفاده از یک کد پیش ساخته برنامهنویسی به تیمهای نرمافزاری کمک میکند تا یک استاندارد کدگذاری مناسب و سبکهای زبان برنامهنویسی ثابت را در سراسر کد منبع حفظ کنند.
- کاهش زمان کدگذاری: کد پیش ساخته با حذف نیاز به تکرار غیرضروری کدها، فرآیند توسعه نرمافزار را ساده میکند. با استفاده از کدهای قابل استفاده مجدد، حتی توسعهدهندگان مبتدی نیز میتوانند بدون نیاز به یادگیری زیاد، پروژههای مشابه را به سرعت شروع کنند. آنها میتوانند کد پیش ساخته را با تغییرات کم یا بدون تغییر وارد کرده و استفاده کنند تا توابع نرمافزاری را اضافه کنند که معمولاً ساخت آنها زمان بیشتری میبرد.
برخی از نمونههای کد پیش ساخته چیست؟
کد پیش ساخته به بخشهایی از کد اشاره دارد که میتوانید از آنها برای بهبود کارایی و کیفیت کدگذاری در بسیاری از زبانهای برنامهنویسی و برنامههای کاربردی استفاده کنید. در ادامه چند نمونه آورده شده است:
- اعلان کلاس: کد پیش ساخته در برنامه
نویسی شیءگرا (OOP) و زبانهای ترکیبی که اشیاء را با کلاسها نشان میدهند، رایج است.
قطعه کد زیر را در نظر بگیرید. هر دو
getName
وsetName
کدهای پیشساختهای هستند که توسعهدهندگان میتوانند بدون بازنویسی کدها، در چندین اعلان کلاسCustomer
فراخوانی کنند:Java
public class Customer{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
- کپسولهسازی تابع: همچنین میتوانید از کد پیشساخته برای کپسولهسازی یک تابع نرمافزاری که معمولاً در یک برنامه تکرار میشود، استفاده کنید.
به عنوان مثال، قطعه کد زیر یک کد قابل استفاده مجدد را نشان میدهد که توسعهدهندگان میتوانند برای باز کردن و خواندن یک فایل فراخوانی کنند. توسعهدهندگان میتوانند کل کد را کپی و جایگذاری کنند و کدهای خود را برای پردازش اطلاعات استخراج شده قرار دهند:
Java
try (BufferedReader reader = new BufferedReader(new FileReader(fileName))) { String text; while (Objects.nonNull(text = reader.readLine())) { // کد را برای پردازش اطلاعات خوانده شده وارد کنید } } catch (IOException e) { String message = String.format(“read file(%s) exception”, fileName); log.error(message, e); throw new ExampleException(message, e); }
- قالب صفحه وب: توسعهدهندگان وب از کد پیشساخته به عنوان قالبی برای ساخت یک صفحه وب استفاده میکنند. به طور معمول، کد پیشساخته شامل اعلانهای متا، تنظیمات پیشفرض و تگهایی است که میتوانند آنها را تغییر دهند.
کد پیشساخته زیر نمونهای از چیزی است که توسعهدهندگان ممکن است برای ایجاد یک صفحه وب خالی از آن استفاده کنند:
HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Webpage Title</title> <link rel="stylesheet" href="style.css"> </head> <body> <script src="index.js"></script> </body> </html>
- مدیریت پایگاه داده: اکثر برنامهها دادهها را در پایگاههای داده ذخیره و پردازش میکنند. توسعهدهندگان از کد پیشساختهای مشابه قطعه کد زیر برای سادهسازی کدها برای اتصالات پایگاه داده و پرسشهای داده استفاده میکنند. آنها میتوانند ساختار کد استاندارد شده را با توابع مدیریت داده سفارشی که میتوانند در سراسر برنامه تکرار کنند، پر کنند. در اینجا یک مثال آورده شده است:
Java
public class Database { private Connection conn; public void connect() { // کدهایی برای اتصال به پایگاه داده وارد کنید } public void disconnect() { // کدهایی برای قطع اتصال از پایگاه داده وارد کنید } public ResultSet runQuery(String query) { // کدهایی برای اجرای یک پرسش وارد کنید return null; } }
چه زمانی و چگونه باید از کد پیشساخته استفاده کرد؟
به دلیل تطبیقپذیری آن، توسعهدهندگان از کد پیشساخته در انواع پروژهها با اندازههای مختلف استفاده میکنند. در ادامه، در مورد برخی از سناریوهایی که میتوانید از کد پیشساخته بهرهمند شوید، بحث میکنیم.
- اسکافولدینگ (Scaffolding): اسکافولدینگ زمانی است که از کد پیشساخته برای موقعیتهای اساسی که شامل انتزاع یا ادغام اجزای نرمافزاری پیچیده نیستند، استفاده میکنید.
در پروژههای کوچکتر، اسکافولدینگ یک ساختار اساسی را فراهم میکند، بنابراین توسعهدهندگان میتوانند بر روی ادغام ویژگیهای جدید و منطق تجاری تمرکز کنند. این به توسعهدهندگان اجازه میدهد تقریباً از تمام کد با تغییرات اندک برای ایجاد نرمافزار یا برنامههای وب استفاده کنند.
- به اشتراک گذاری کد: برخی از توسعهدهندگان کدهای پیشساخته خود را میسازند و با جامعه توسعه به اشتراک میگذارند. آنها کد پیشساخته را برای دانلود در دسترس قرار میدهند و بحث را برای بهبود کد زیربنایی تشویق میکنند.
در همین حال، برخی از سازمانها کد پیشساخته خود را برای پشتیبانی از توسعههای در مقیاس بزرگ ایجاد میکنند. این کدهای پیشساخته پیچیدهتر هستند و این الزامات را دارند:
-
شامل کدهای مستند شده باشند، بنابراین توسعهدهندگان میتوانند به راحتی از آنها استفاده مجدد کنند.
-
از شیوهها و ساختار کدنویسی استاندارد برای حفظ سازگاری پیروی کنند.
-
ابزارهایی برای راهاندازی، نمونهسازی و تست استفاده از کد پیشساخته در کدهای منبع ارائه دهند.
-
شامل پشتیبانی از ماژولهای API برای ادغام شخص ثالث باشند.
-
در یک محیط مشارکتی مقیاسپذیر باشند.
-
سازگاری کد: هیچ قانون دقیقی در مورد زمان ایجاد کد پیشساخته و استفاده از آنها در کدهای شما وجود ندارد. با این حال، اگر کدهای تابع مشابه را چندین بار در برنامه مینویسید، بهتر است آنها را به کد پیشساخته تبدیل کنید.
وقتی از کد پیشساخته استفاده میکنید، میتوانید یک تابع نرمافزاری را به طور مداوم تکرار کنید در حالی که خطر ارتکاب اشتباهات کدنویسی را کاهش میدهید. در اینجا چند نمونه آورده شده است:
- برنامهنویسان از کد پیشساخته برای قرار دادن اعلانهای مشابه در بالای فایلهای منبع خود استفاده میکنند.
- برنامهنویسان مبتدی از کد پیشساخته اثبات شده در پروژههای مربوطه و مشابه به عنوان مثال استفاده میکنند که بعداً آنها را تغییر میدهند.
- توسعهدهندگان به جای نوشتن کدهای تکراری برای اهداف مشابه، توابع نرمافزاری کپسولهشده در یک کلاس جاوا را با کد پیشساخته فراخوانی میکنند.
چه زمانی نباید از کد پیشساخته استفاده کرد؟
در حالی که کد پیشساخته به بهینهسازی فرآیند توسعه نرمافزار کمک میکند، موقعیتهایی وجود دارد که رویکردهای جایگزین بهتر هستند.
-
کد پیشساخته نباید جایگزین توابع شود: کد پیشساخته نباید به جای توابع نرمافزاری استفاده شود. اگر برنامهنویس مجبور باشد علیرغم استفاده از کد پیشساخته، کد زیادی بنویسد، بهتر است یک تابع اصلی بنویسد. به همین ترتیب، اگر متوجه شدید که ساختار کد پیشساخته را به طور گسترده تغییر میدهید، ایجاد یک تابع نرمافزاری گزینه بهتری است.
-
کد پیشساخته نباید جایگزین فریمورکها شود: یک فریمورک مجموعهای از اجزای نرمافزاری قابل استفاده مجدد است که توسعه برنامههای جدید را کارآمدتر میکند. اگر به یک ساختار آماده شامل تمام پشتههای فناوری مورد نیاز برای نیازهای پروژه خود نیاز دارید، به جای کد پیشساخته از یک فریمورک استفاده کنید. یک فریمورک به شما امکان میدهد کل پروژهها را استاندارد کنید.
در مقابل، کد پیشساخته در سادهسازی بخشهایی از کد مفیدتر است. برای مثال، طراحان وب میتوانند از کد پیشساخته برای ارائه توابع ساده PHP استفاده کنند. و آنها میتوانند از یک فریمورک برای اضافه کردن محتوا به یک وبسایت آماده انتشار استفاده کنند.
- کد پیشساخته نباید پیچیدگی کد را افزایش دهد: هنگام استفاده از کد پیشساخته برای توابع نرمافزاری، مراقب تکرار کد باشید. تکرارهای بیش از حد منجر به افزایش حجم کد میشود.
برای مثال، موقعیتی را در نظر بگیرید که از نسخههای یکسان کدهایی که چندین بار تماسهای API با سرویسهای خارجی برقرار میکنند، استفاده میکنید. در عوض، استخراج موارد تکراری به یک فراخوانی رویهای جدید برای بهبود نگهداری کد و کاهش اندازه برنامه بهتر است.
به طور مشابه، برخی از پروژهها هنگام پذیرش تغییرات فناوری نیاز به چابکی بیشتری دارند. یک کد پیشساخته ممکن است از الزامات فراتر از هدفی که برای آن ساخته شده است، پشتیبانی نکند. در چنین مواردی، بهتر است اجزای نرمافزار را از ابتدا توسعه دهید یا از فریمورکهای موجود استفاده کنید.