رکورد تصمیم معماری: ویرایشگرهای کد برنامهنویسی
زمینه
ویرایشگرهای کد برنامهنویسی ابزاری ضروری برای توسعهدهندگان جهت نوشتن و ویرایش کد هستند. ویرایشگرهای کد بسیاری در دسترساند و هر کدام مجموعهٔ ویژگیها، مزایا و معایب خود را دارند. هدف این ADR مستندسازی تصمیمهای معماری اتخاذشده برای ویرایشگرهای کد برنامهنویسی است.
اولویتها
معماری ویرایشگرهای کد برنامهنویسی باید اولویت را به موارد زیر بدهد:
ماژولار بودن: ویرایشگر کد باید به شکل ماژولار طراحی شود تا توسعهدهندگان بتوانند آن را در صورت نیاز سفارشیسازی و گسترش دهند. این امر معماری انعطافپذیری را ممکن میکند که با نیازهای توسعهدهندگان و تیمهای مختلف سازگار شود.
کارایی: ویرایشگر کد باید کارآمد و پاسخگو باشد تا توسعهدهندگان بتوانند بدون کند شدن توسط ابزاری که استفاده میکنند، بهطور کارآمد کار کنند.
رابط کاربری: رابط کاربری باید شهودی و آسان برای استفاده باشد تا توسعهدهندگان بهجای کلنجار رفتن با ویرایشگر روی کد خود تمرکز کنند.
قابلیت گسترش: ویرایشگر کد باید طوری طراحی شود که گسترش آسان با افزونهها و یکپارچگیهای شخص ثالث را ممکن کند.
سازگاری: ویرایشگر کد باید با طیف وسیعی از زبانهای برنامهنویسی و فناوریها سازگار باشد و آن را به ابزاری مفید برای طیف گستردهای از توسعهدهندگان تبدیل کند.
تصمیم
بر اساس این اولویتها، معماری ویرایشگرهای کد برنامهنویسی باید با مؤلفههای زیر طراحی شود:
هسته: این مؤلفه قابلیتهای پایهٔ ویرایشگر کد، مانند برجستهسازی نحو، ویرایش متن و مدیریت فایل را فراهم میکند.
UI: این مؤلفه رابط کاربری ویرایشگر کد، شامل منوها، نوارابزارها و میانبرهای صفحهکلید را فراهم میکند.
افزونهها: این مؤلفه به توسعهدهندگان اجازه میدهد با نصب افزونههای شخص ثالث، قابلیتهای ویرایشگر کد را گسترش دهند. افزونهها میتوانند ویژگیهای اضافی مانند تکمیل کد، linting یا اشکالزدایی ارائه دهند.
یکپارچگیها: این مؤلفه به ویرایشگر کد اجازه میدهد با ابزارها و فناوریهای دیگر مانند سیستمهای کنترل نسخه، سیستمهای ساخت یا ابزارهای اشکالزدایی یکپارچه شود.
دلیل و منطق
ماژولار بودن ویرایشگر کد به توسعهدهندگان اجازه میدهد آن را در صورت نیاز سفارشیسازی و گسترش دهند. این مهم است زیرا توسعهدهندگان و تیمهای مختلف نیازها و گردشهای کار متفاوتی دارند و معماری انعطافپذیر میتواند این تفاوتها را در بر بگیرد.
کارایی: حیاتی است زیرا توسعهدهندگان باید بتوانند بدون کند شدن توسط ابزارهایشان کارآمد کار کنند. ویرایشگر کد کارآمد برای بهرهوری ضروری است و میتواند به توسعهدهندگان کمک کند تمرکز و دقت خود را حفظ کنند.
UI: مهم است زیرا به توسعهدهندگان اجازه میدهد بهجای کلنجار رفتن با ویرایشگر روی کد خود تمرکز کنند. این میتواند به بهرهوری بهتر و ناکامی کمتر برای توسعهدهندگان بینجامد.
قابلیت گسترش: قدرتمند است زیرا اجازه میدهد ویرایشگر کد با نیازها و گردشهای کار مختلف تطبیق یابد. افزونهها و یکپارچگیهای شخص ثالث میتوانند ویژگیها و قابلیتهای اضافی را که در ویرایشگر اصلی گنجانده نشدهاند فراهم کنند.
سازگاری: ارزشمند است زیرا اجازه میدهد ویرایشگر کد با طیف وسیعی از زبانهای برنامهنویسی و فناوریها استفاده شود. این ویرایشگر را به ابزاری مفیدتر برای طیف گستردهای از توسعهدهندگان تبدیل میکند.
مؤلفههای هسته، افزونهها، یکپارچگیها و UI جداسازی روشن دغدغهها را فراهم میکنند و معماری ماژولاری را ممکن میکنند که بهآسانی قابل گسترش و سفارشیسازی است. این معماری انعطافپذیر، کارآمد و سازگار با طیف وسیعی از زبانهای برنامهنویسی و فناوریهاست و آن را به ابزاری مفید برای توسعهدهندگان تبدیل میکند.