در دنیای توسعه نرمافزار، ابزارهای هوشمند مانند GitHub Copilot به توسعهدهندگان کمک میکنند تا کدنویسی را سریعتر و کارآمدتر انجام دهند. این دستیار مبتنی بر هوش مصنوعی، پیشنهادات کدی را بر اساس الگوهای موجود ارائه میدهد، اما گاهی این پیشنهادات با نیازهای خاص پروژه یا سبک کدنویسی تیم همراستا نیستند. برای رفع این مشکل، قابلیت دستورالعملهای سفارشی (Custom Instructions) در Visual Studio Code معرفی شده است که به توسعهدهندگان اجازه میدهد رفتار Copilot را شخصیسازی کنند. علاوه بر این، تنظیمات پیشرفته Visual Studio Code (VSCode) نیز نقش مهمی در بهینهسازی تجربه کدنویسی ایفا میکنند. این مقاله به بررسی این دو موضوع، یعنی دستورالعملهای سفارشی و تنظیمات VSCode، و تأثیر آنها بر توسعهدهندگان Microsoft .NET Framework میپردازد تا فرآیندی منسجم و حرفهای برای توسعه ارائه دهد.
دستورالعملهای سفارشی چیست؟
دستورالعملهای سفارشی به توسعهدهندگان این امکان را میدهند که اطلاعاتی خاص درباره پروژه، سبک کدنویسی، یا ترجیحات تیمی خود به Copilot ارائه کنند. این اطلاعات بهعنوان زمینه (Context) عمل میکنند و به هوش مصنوعی کمک میکنند تا پیشنهادات دقیقتر و مرتبطتری ارائه دهد. برای مثال، اگر تیمی در پروژه .NET از الگوی Repository Pattern استفاده میکند، میتواند این موضوع را در دستورالعملها مشخص کند تا Copilot پیشنهادات خود را با این الگو هماهنگ سازد.
این قابلیت در مارس 2025 بهصورت عمومی در Visual Studio Code عرضه شده و به توسعهدهندگان اجازه میدهد تجربه کدنویسی خود را بهبود بخشند. بدون این دستورالعملها، Copilot ممکن است پیشنهادات عمومی ارائه دهد که نیاز به بازنویسی داشته باشند، اما با استفاده از این ویژگی، دقت و کارایی بهطور چشمگیری افزایش مییابد.
نحوه فعالسازی و استفاده از دستورالعملهای سفارشی
برای استفاده از دستورالعملهای سفارشی، باید آنها را در تنظیمات Visual Studio Code فعال کنید. مراحل زیر این فرآیند را شرح میدهند:
- باز کردن تنظیمات: در VSCode، به منوی File > Preferences > Settings (یا با میانبر Ctrl+,) بروید.
- جستجوی قابلیت: در نوار جستجو، عبارت "GitHub Copilot Custom Instructions" را وارد کنید.
- فعالسازی و تنظیم: گزینه مربوطه را فعال کرده و دستورالعملهای خود را در بخش مشخصشده وارد کنید.
بهعنوان مثال، اگر در پروژه .NET از کتابخانهای خاص مانند MyCustomLibrary استفاده میکنید، میتوانید دستورالعملی مانند زیر اضافه کنید:
در این پروژه، از کتابخانه MyCustomLibrary برای مدیریت دادهها استفاده میکنیم. لطفاً پیشنهادات کد را بر اساس این کتابخانه ارائه دهید و از متدهای استاندارد NET. مانند System.Data استفاده نکنید.
پس از ذخیره، Copilot پیشنهادات خود را بر اساس این دستورالعمل تنظیم میکند.
تنظیمات Visual Studio Code برای توسعه .NET
علاوه بر دستورالعملهای سفارشی، تنظیمات VSCode نیز میتوانند تجربه توسعه را بهبود دهند. این تنظیمات در فایل settings.json مدیریت میشوند که از طریق منوی تنظیمات یا مسیر .vscode/settings.json در پروژه قابل دسترسی است. در ادامه، چند تنظیم کلیدی برای توسعهدهندگان .NET آورده شده است:
- تنظیم فرمت کد: برای اطمینان از یکنواختی کد، میتوانید فرمتکننده پیشفرض را تنظیم کنید. بهعنوان مثال:
{
"editor.defaultFormatter": "ms-dotnettools.csharp",
"editor.formatOnSave": true
}این تنظیم باعث میشود که کدهای C# هنگام ذخیره بهصورت خودکار فرمت شوند.
- فعالسازی IntelliSense پیشرفته: برای بهبود پیشنهادات کد در .NET، میتوانید تنظیمات زیر را اعمال کنید:
{
"omnisharp.enableRoslynAnalyzers": true,
"omnisharp.useModernNet": true
}این تنظیمات از تحلیلگرهای Roslyn و نسخه مدرن .NET استفاده میکنند.
- مدیریت افزونهها: نصب افزونههایی مانند "C# for Visual Studio Code" (توسعهیافته توسط Microsoft) ضروری است. برای بهینهسازی، میتوانید افزونههای غیرضروری را غیرفعال کنید:
{
"extensions.ignoreRecommendations": false
}- تنظیمات GitHub Copilot: برای هماهنگی بیشتر با Copilot، میتوانید پیشنهادات درونخطی را فعال کنید:
{
"github.copilot.enable": {
"*": true,
"csharp": true
},
"github.copilot.inlineSuggest.enable": true
}
مثال عملی در توسعه .NET
فرض کنید در حال توسعه یک برنامه .NET با Entity Framework هستید و از الگوی واحد کار (Unit of Work) و مخزن (Repository) استفاده میکنید. ابتدا دستورالعمل زیر را در Copilot تنظیم میکنید:
در این پروژه، از Entity Framework با الگوی Unit of Work و Repository استفاده میکنیم. لطفاً پیشنهادات کد را بهگونهای ارائه دهید که شامل کلاسهای مخزن (Repository Classes) و رابط IUnitOfWork باشند.
سپس، تنظیمات VSCode را برای فرمت خودکار و IntelliSense بهینه میکنید. حالا اگر بخواهید یک متد برای افزودن مشتری بنویسید، Copilot ممکن است کدی مشابه زیر پیشنهاد دهد:
public class CustomerRepository : IRepository<Customer>
{
private readonly IUnitOfWork _unitOfWork;
public CustomerRepository(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public void Add(Customer customer)
{
_unitOfWork.Context.Customers.Add(customer);
}
}با فعال بودن editor.formatOnSave، این کد بهصورت خودکار فرمت میشود و IntelliSense اطلاعات تکمیلی را ارائه میدهد.
استفاده از فایلهای پرامپت
VSCode امکان استفاده از فایلهای پرامپت (Prompt Files) را نیز فراهم کرده است. این فایلها در مسیر .vscode/copilot-prompts.md ذخیره میشوند. برای مثال:
# دستورالعملهای پروژه
- از NET 8.0. استفاده کنید.
- تمام متدها باید مستندسازی XML داشته باشند.
- از الگوی Dependency Injection استفاده کنید.
با این تنظیم، اگر یک سرویس جدید بنویسید، Copilot کدی مانند زیر پیشنهاد میدهد:
/// <summary>
/// سرویسی برای مدیریت مشتریان
/// </summary>
public class CustomerService : ICustomerService
{
private readonly IRepository<Customer> _repository;
public CustomerService(IRepository<Customer> repository)
{
_repository = repository;
}
/// <summary>
/// افزودن مشتری جدید
/// </summary>
/// <param name="customer">مشتری برای افزودن</param>
public void AddCustomer(Customer customer)
{
_repository.Add(customer);
}
}
مزایا و محدودیتها
ترکیب دستورالعملهای سفارشی و تنظیمات VSCode مزایای زیر را دارد:
- دقت و انسجام: پیشنهادات کد با پروژه همراستا شده و فرمت یکنواخت حفظ میشود.
- بهرهوری: زمان صرفشده برای ویرایش دستی کاهش مییابد.
- انعطافپذیری: تنظیمات و دستورالعملها برای پروژههای مختلف قابل تطبیق هستند.
با این حال، پیچیدگی بیش از حد دستورالعملها یا تنظیمات نادرست ممکن است به تفسیر اشتباه Copilot یا کندی VSCode منجر شود.
نتیجهگیری
دستورالعملهای سفارشی و تنظیمات Visual Studio Code ابزارهای قدرتمندی هستند که تجربه توسعهدهندگان .NET را بهبود میبخشند. با استفاده از دستورالعملهای سفارشی، میتوانید رفتار GitHub Copilot را با نیازهای پروژه هماهنگ کنید، و با تنظیمات VSCode، محیط کدنویسی را بهینه سازید. این ترکیب بهویژه برای پروژههای پیچیده .NET که نیازمند الگوهای خاص و استانداردهای بالا هستند، ارزشمند است.