راجع سيناريوهات إعادة هيكلة الكود وأفضل الممارسات GitHub Copilot
إعادة بناء التعليمات البرمجية هي عملية إعادة هيكلة التعليمات البرمجية الموجودة دون تغيير سلوكها. تتضمن فوائد إعادة بناء التعليمات البرمجية تحسين قابلية قراءة التعليمات البرمجية، وتقليل التعقيد، وتسهيل صيانة التعليمات البرمجية، والسماح بإضافة ميزات جديدة بسهولة أكبر. تطبيق أفضل الممارسات GitHub Copilot يمكن أن يساعدك على العمل بكفاءة أكبر وتحقيق نتائج أفضل.
GitHub Copilot أفضل الممارسات
GitHub Copilot أداة قوية يمكن أن تساعدك على إعادة هيكلة وتحسين كودك. ومع ذلك، للحصول على أفضل النتائج، يجب عليك اتباع بعض أفضل الممارسات عند استخدام GitHub Copilot.
تحسين الاستجابات مع مطالبات أفضل
يمكنك تحسين جودة ردود GitHub Copilot بكتابة محفزات أكثر فعالية. يمكن أن يساعدك الموضوع المصمم جيدا GitHub Copilot فهم متطلباتك بشكل أفضل وتوليد اقتراحات كود أكثر ملاءمة.
يمكن أن تساعدك الإرشادات التالية على كتابة مطالبات أفضل:
ابدأ عام، ثم احصل على التفاصيل.
Generate a Calculator class. Add methods for addition, subtraction, multiplication, division, and factorial. Don't use any external libraries and don't use recursion.قدم أمثلة على ما تريده.
Generate a function that takes a string and returns the number of vowels in it. For example: findVowels("hello") returns 2, findVowels("sky") returns 0.تقسيم المهام المعقدة إلى مهام أبسط.
بدلا من طلب GitHub Copilot "إنشاء تطبيق مخطط وجبات"، قسم التعليمات إلى مهام أصغر.
على سبيل المثال:
Generate a function that takes a list of ingredients and returns a list of recipes.Generate a function that takes a list of recipes and returns a shopping list.Generate a function that takes a list of recipes and returns a meal plan for the week.توفير السياق الصحيح، مثل تحديدات التعليمات البرمجية والملفات وإخراج المحطة الطرفية والمزيد.
مثال، استخدم متغير
#codebaseللإشارة إلى قاعدة الشيفرة كاملة: "أين تستخدم قاعدة البيانات connection string في #codebase؟"تكرار المطالبات الخاصة بك.
قم بتوفير مطالبات المتابعة لتحسين الاستجابة أو تعديلها.
على سبيل المثال، إذا بدأت بالمطالبة التالية:
"اكتب دالة لحساب عامل الرقم."
يمكنك المتابعة باستخدام:
"لا تستخدم الإعادة والتحسين باستخدام التخزين المؤقت."
وبعد ذلك:
"استخدام أسماء متغيرات ذات معنى."
حافظ على محفوظات الدردشة ذات الصلة.
GitHub Copilot يستخدم تاريخ المحادثة لتوفير سياق. قم بإزالة الأسئلة والأجوبة السابقة من المحفوظات إذا لم تكن ذات صلة. أو ابدأ جلسة عمل جديدة إذا كنت تريد تغيير السياق.
توفير السياق والأدوات المناسبة
إثراء مطالباتك بالسياق ذي الصلة للحصول على استجابات أكثر دقة و صلة في الدردشة. باستخدام الأدوات المناسبة، يمكنك تعزيز إنتاجية المطور.
في الوكيل، اختر زر الأدوات لتكوين الأدوات التي تريد استخدامها أو أضفها صراحة إلى الإشعار الخاص بك.
استخدم
#codebaseلتتمكن GitHub Copilot من العثور على الملفات الصحيحة تلقائيا عن طريق إجراء بحث برمجية.استخدم أداة
#fetchلجلب المحتوى من صفحة ويب أو استخدم#githubRepoلإجراء بحث في الكود على مستودع GitHub.يمكنك الرجوع إلى الملفات أو المجلدات أو الرموز في المطالبة باستخدام
#<file name>أو#<folder name>أو#<symbol>.اسحب الملفات أو المجلدات أو علامات تبويب المحرر وأسقطها في موجه الدردشة.
أضف المشاكل أو فشل الاختبار أو الإخراج الطرفي إلى موجه الدردشة للسياق الخاص بالسيناريو.
إشعار
عندما تستخدم الوكيل، GitHub Copilot يجد الملفات والسياق المناسب لك بشكل تلقائي.
سيناريوهات إعادة بناء التعليمات البرمجية الشائعة
GitHub Copilot يمكن أن يساعدك على إعادة هيكلة الكود بسرعة بطرق عديدة. تتضمن القائمة التالية بعض السيناريوهات الشائعة لإعادة بناء التعليمات البرمجية:
- تحسين التعليمات البرمجية غير الفعالة
- تنظيف التعليمات البرمجية المتكررة
- جعل التعليمات البرمجية أكثر إيجازا
- تقسيم وحدات معقدة من التعليمات البرمجية
- إعادة كتابة التعليمات البرمجية الشرطية لتحسين قابلية القراءة
- إعادة تنسيق التعليمات البرمجية لاستخدام بنية مختلفة
استخدم GitHub Copilot لتحسين الكود غير الفعال
GitHub Copilot يمكن أن يساعدك في تحسين الكود. على سبيل المثال، يمكنك تحسين التعليمات البرمجية الخاصة بك لجعل التعليمات البرمجية تعمل بسرعة أكبر.
خذ بعين الاعتبار البرنامج النصي bash التالي:
#!/bin/bash
# Find all .txt files and count the number of lines in each file
for file in $(find . -type f -name "*.txt"); do
wc -l "$file"
done
يمكنك استخدام ميزات الدردشة لتقييم خيارات تحسين الجوانب المختلفة للبرنامج النصي، مثل الأداء.
#!/bin/bash
# Find all .txt files and count the number of lines in each file (improved performance)
find . -type f -name "*.txt" -print0 | xargs -0 wc -l
استخدم GitHub Copilot لتنظيف الكود المتكرر
سيؤدي تجنب التكرار إلى تسهيل مراجعة التعليمات البرمجية وتصحيحها. على سبيل المثال، إذا تم إجراء نفس العملية الحسابية أكثر من مرة في أماكن مختلفة في ملف، يمكنك نقل العملية الحسابية إلى دالة.
في مثال JavaScript البسيط جدا التالي، يتم إجراء نفس الحساب (سعر العنصر مضروبا في عدد العناصر المباعة) في مكانين.
let totalSales = 0;
let applePrice = 3;
let appleSold = 100;
totalSales += applePrice * appleSold;
let orangePrice = 2;
let orangeSold = 50;
totalSales += orangePrice * orangeSold;
console.log(`Total: ${totalSales}`);
يمكنك أن تطلب من ميزات الدردشة نقل الحساب المتكرر إلى دالة.
function calculateTotal(price, quantity) {
return price * quantity;
}
let totalSales = 0;
let applePrice = 3;
let appleSold = 100;
totalSales += calculateTotal(applePrice, appleSold);
let orangePrice = 2;
let orangeSold = 50;
totalSales += calculateTotal(orangePrice, orangeSold);
console.log(`Total: ${totalSales}`);
استخدم GitHub Copilot لجعل الكود أكثر إيجازا
إذا كانت التعليمات البرمجية مطولة دون داع، فقد يكون من الصعب قراءتها وصيانتها. يمكن GitHub Copilot اقتراح نسخة أكثر إيجازا من الكود المختار.
الكود التالي في Python يخرج مساحة مستطيل ودائرة، لكن يمكن كتابة الكود بشكل أكثر إيجازا:
def calculate_area_of_rectangle(length, width):
area = length * width
return area
def calculate_area_of_circle(radius):
area = 3.14 * radius * radius
return area
rectangle_length = 5
rectangle_width = 10
rectangle_area = calculate_area_of_rectangle(rectangle_length, rectangle_width)
print(f"Area of rectangle: {rectangle_area}")
circle_radius = 7
circle_area = calculate_area_of_circle(circle_radius)
print(f"Area of circle: {circle_area}")
GitHub Copilot يمكن أن يساعدك في إعادة هيكلة الكود وجعله أكثر إيجازا.
def calculate_area_of_rectangle(length, width):
return length * width
def calculate_area_of_circle(radius):
return 3.14 * radius * radius
rectangle_length = 5
rectangle_width = 10
print(f"Area of rectangle: {calculate_area_of_rectangle(rectangle_length, rectangle_width)}")
circle_radius = 7
print(f"Area of circle: {calculate_area_of_circle(circle_radius)}")
استخدم GitHub Copilot لتقسيم وحدات الكود المعقدة
من المحتمل أن توفر الأساليب أو الدوال الكبيرة التي تنفذ عمليات متعددة فرصا أقل لإعادة الاستخدام من الوظائف الأصغر والأبسط التي تركز على تنفيذ عملية معينة. كما قد يكون من الصعب فهمها وتصحيحها.
يمكن GitHub Copilot مساعدتك في تقسيم كتل الكود المعقدة إلى وحدات أصغر تناسب إعادة الاستخدام.
كود Python التالي مثال بسيط جدا، لكنه يوضح مبدأ تقسيم دالة واحدة إلى دالتين تؤديان عمليات معينة.
import pandas as pd
from pandas.io.formats.styler import Styler
def process_data(item, price):
# Cleanse the data
item = item.strip() # Remove leading and trailing whitespace
price = price.strip() # Remove leading and trailing whitespace
price = float(price) # Convert price to a float
# More cleansing operations can be added here
# Create and print a DataFrame
data = {'Item': [item], 'Price': [price]}
df = pd.DataFrame(data)
print(df.to_string(index=False))
# Example usage
item = " Apple "
price = " 1.50 "
process_data(item, price)
يمكنك استخدام GitHub Copilot لإعادة هيكلة الكود لإنشاء وظائف لتنظيف البيانات، والطباعة، ومعالجة البيانات.
import pandas as pd
from pandas.io.formats.styler import Styler
def cleanse_data(item, price):
# Cleanse the data
item = item.strip() # Remove leading and trailing whitespace
price = price.strip() # Remove leading and trailing whitespace
price = float(price) # Convert price to a float
return item, price
def print_data(item, price):
# Create and print a DataFrame
data = {'Item': [item], 'Price': [price]}
df = pd.DataFrame(data)
print(df.to_string(index=False))
def process_data(item, price):
item, price = cleanse_data(item, price)
print_data(item, price)
# Example usage
item = " Apple "
price = " 1.50 "
item, price = cleanse_data(item, price)
print_data(item, price)
استخدم GitHub Copilot لإعادة كتابة الشيفرة الشرطية لتحسين سهولة القراءة
غالبا ما تكون هناك عدة طرق لكتابة التعليمات البرمجية التي تنفذ أو لا تنفذ اعتمادا على شروط مختلفة. بعض البنيات الشرطية أكثر ملاءمة من غيرها لحالات استخدام معينة، ويمكن أن يؤدي اختيار بنية شرطية بديلة في بعض الأحيان إلى تسهيل قراءة التعليمات البرمجية.
تستخدم هذه الطريقة Java سلسلة من عبارات if و else if لتحديد العملية التي يجب تنفيذها:
public string getSound(String animal) {
if (animal == null) {
System.out.println("Animal is null");
} else if (animal.equalsIgnoreCase("Dog")) {
return "bark";
} else if (animal.equalsIgnoreCase("Cat")) {
return "meow";
} else if (animal.equalsIgnoreCase("Bird")) {
return "tweet";
}
return "unknown";
}
قد تكون عبارة التبديل طريقة أفضل لتطبيق نفس المنطق.
/**
* Returns the sound made by the specified animal.
*
* @param animal the name of the animal
* @return the sound made by the animal, or "unknown" if the animal is not recognized
*/
public String getAnimalSound(String animal) {
return switch (animal) {
case null -> "Animal is null";
case "Dog" -> "bark";
case "Cat" -> "meow";
case "Bird" -> "tweet";
default -> "unknown";
};
}
استخدم GitHub Copilot لتهيئة الكود لاستخدام هيكل مختلف
لنفترض أن لديك الدالة التالية في JavaScript:
function listRepos(o, p) {
return fetch(`https://api.github.com/orgs/${o}/repos?per_page=${parseInt()}`)
.then(response => response.json())
.then( (data) => data);
}
إذا كانت معايير البرمجة تتطلب منك استخدام تدوين الأسهم للوظائف، والأسماء الوصفية للمعلمات، يمكنك استخدام GitHub Copilot لمساعدتك في إجراء هذه التغييرات.
const listRepositories = (organization, perPage) => {
return fetch(`https://api.github.com/orgs/${organization}/repos?per_page=${parseInt(perPage)}`)
.then(response => response.json())
.then(data => data);
};
ملخص
يمكن GitHub Copilot مساعدتك في إعادة هيكلة الكود بطرق مختلفة. يمكنك استخدام منظور الدردشة أو الدردشة الداخلية لطلب GitHub Copilot تحسين الكود غير الفعال، تنظيف الكود المتكرر، جعل الكود أكثر إيجازا، تقسيم وحدات الكود المعقدة، إعادة كتابة الشيفرة الشرطية لتحسين القراءة، وتهيئة الكود لاستخدام هيكل مختلف.