בדוק תרחישי ריפקטורינג של קוד ושיטות עבודה מומלצות 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 משתמש בהיסטוריה של השיחה כדי לספק הקשר. הסר שאלות ותגובות קודמות מההיסטוריה אם הן אינן רלוונטיות. לחלופין, התחל הפעלה חדשה אם ברצונך לשנות את ההקשר.
ספק את ההקשר וכלים המתאימים
העשר את ההנחיות שלך עם הקשר רלוונטי כדי לקבל תגובות מדויקות ורלוונטיות יותר בצ'אט. בעזרת הכלים המתאימים, תוכל לשפר את הפרודוקטיביות של המפתחים.
בסוכן (Agent), בחר את כפתור הכלים כדי להגדיר את הכלים שברצונך להשתמש בהם או הוסף אותם במפורש להנחיה שלך.
השתמש ב-
#codebaseכדי לאפשר GitHub Copilot למצוא את הקבצים הנכונים אוטומטית על ידי חיפוש קוד.השתמש בכלי
#fetchלשליפת תוכן מדף אינטרנט או השתמש ב-#githubRepoלביצוע חיפוש קוד במאגר GitHub.הפנה לקבצים, לתיקיות או לסימנים בהנחיה שלך באמצעות
#<file name>,#<folder name>, או#<symbol>.גרור ושחרר קבצים, תיקיות או כרטיסיות עורך בשורת הצ'אט.
הוסף בעיות, כשלי בדיקה או פלט נקודת חיבור לבקשת הצ'אט שלך לקבלת הקשר ספציפי לתרחיש.
הערה
כשאתה משתמש ב-Agent, GitHub Copilot מוצא באופן אוטומטי את הקבצים וההקשר הרלוונטיים עבורך.
תרחישים נפוצים של שינוי קוד
GitHub Copilot יכול לעזור לך לשחזר קוד במהירות בדרכים רבות. הרשימה הבאה כוללת מספר תרחישים נפוצים עבור קוד השוקף:
- מיטוב קוד לא יעיל
- ניקוי קוד חוזר
- הפיכת הקוד לתמציתי יותר
- פיצול יחידות קוד מורכבות
- שכתוב קוד מותנה לשיפור הקריאות
- עיצוב מחדש של קוד לשימוש במבנה אחר
השתמש GitHub Copilot כדי לאופטימיזציה של קוד לא יעיל
GitHub Copilot יכול לעזור לך לייעל את הקוד. לדוגמה, באפשרותך למטב את הקוד כדי שהקוד יפעל מהר יותר.
שקול את קובץ ה- Script הבא של 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
באפשרותך להשתמש בתכונות צ'אט כדי להעריך אפשרויות למיטוב היבטים שונים של קובץ ה- Script, כגון ביצועים.
#!/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 לאופטימיזציה של קוד לא יעיל, לנקות קוד חוזר, להפוך קוד לקצר יותר, לפצל יחידות קוד מורכבות, לכתוב מחדש קוד מותנה לקריאות טובה יותר, ולפרמט קוד למבנה שונה.