Kod yeniden düzenleme senaryolarını ve GitHub Copilot en iyi yöntemleri gözden geçirin

Tamamlandı

Kodu yeniden düzenleme, mevcut kodu davranışını değiştirmeden yeniden yapılandırma işlemidir. Yeniden düzenlemenin avantajları arasında kod okunabilirliğini artırma, karmaşıklığı azaltma, kodun bakımını kolaylaştırma ve yeni özelliklerin daha kolay eklenmesini sağlama sayılabilir. GitHub Copilot en iyi yöntemleri uygulamak daha verimli çalışmanıza ve daha iyi sonuçlar almanıza yardımcı olabilir.

GitHub Copilot en iyi yöntemleri

GitHub Copilot, kodunuzu yeniden düzenlemenize ve geliştirmenize yardımcı olabilecek güçlü bir araçtır. Ancak, en iyi sonuçları elde etmek için GitHub Copilot kullanırken bazı en iyi yöntemleri izlemeniz gerekir.

Daha iyi istemlerle yanıtları iyileştirme

Daha etkili istemler yazarak GitHub Copilot yanıtlarının kalitesini artırabilirsiniz. İyi hazırlanmış bir istem GitHub Copilot gereksinimlerinizi daha iyi anlamanıza ve daha ilgili kod önerileri oluşturmanıza yardımcı olabilir.

Aşağıdaki yönergeler daha iyi istemler yazmanıza yardımcı olabilir:

  • Önce genel konularla başlayın, sonra ayrıntıya inin.

    Generate a Calculator class. Add methods for addition, subtraction, multiplication, division, and factorial. Don't use any external libraries and don't use recursion.
    
  • ne istediğinize örnekler verin.

    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.
    
  • Karmaşık görevleri daha basit görevlere ayırın.

    GitHub Copilot ''Yemek planlayıcısı uygulaması oluştur'' sorusunu sormak yerine istemlerinizi daha küçük görevlere ayırın.

    Örneğin:

    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.
    
  • Kod seçimleri, dosyalar, terminal çıkışı ve daha fazlası gibi doğru bağlamı sağlayın.

    Örneğin, tüm kod tabanına başvurmak için #codebase değişkenini kullanın: "Kod tabanında veritabanı bağlantı dizesi nerede kullanılıyor?"

  • İstemlerinizde yineleme yapın.

    Yanıtı geliştirmek veya değiştirmek için takip istemleri sağlayın.

    Örneğin, aşağıdaki istemle başlarsanız:

    "Bir sayının faktöriyelini hesaplamak için bir işlev yazın."

    Aşağıdaki adımları izleyebilirsiniz:

    "Özyinelemeyi kullanmayın ve önbellekleme kullanarak optimize edin."

    Ve sonra:

    "Anlamlı değişken adları kullanın."

  • Sohbet geçmişini ilgili tutun.

    GitHub Copilot bağlam sağlamak için konuşma geçmişini kullanır. İlgili değilse geçmişteki soruları ve yanıtları geçmişten kaldırın. Bağlamı değiştirmek istiyorsanız yeni bir oturum da başlatabilirsiniz.

    Visual Studio Code bağlam penceresi dolduğunda konuşma geçmişini otomatik olarak sıkıştırıyor. Ayrıca, istediğiniz zaman konuşmayı el ile özetlemek ve bağlam alanı açmak için komutunu kullanabilirsiniz /compact . Sohbet giriş kutusundaki bağlam penceresi denetimi geçerli kullanımı gösterir.

Doğru bağlamı ve araçları sağlayın

Sohbette daha doğru ve ilgili yanıtlar almak için istemlerinizi ilgili bağlamla zenginleştirin. Doğru araçlarla geliştirici üretkenliğinizi artırabilirsiniz.

  • Aracı'da, kullanmak istediğiniz araçları yapılandırmak veya bunları isteminize açıkça eklemek için araçlar düğmesini seçin.

  • #codebase kullanarak GitHub Copilot bir kod araması yaparak doğru dosyaları otomatik olarak bulmasını sağlayın.

  • web sayfasından içerik getirmek için #fetch aracını kullanın veya GitHub bir depoda kod araması yapmak için #githubRepo kullanın.

  • İsteminizdeki dosyalara, klasörlere veya simgelere #<file name>, #<folder name> veya #<symbol> kullanarak başvuruda bulunabilirsiniz.

  • Dosyaları, klasörleri veya düzenleyici sekmelerini sohbet istemine sürükleyip bırakın.

  • Senaryoya uygun bağlam sağlamak için sohbet isteminize sorunlar, test hataları veya terminal çıkışları ekleyin.

Uyarı

Aracı'yı kullandığınızda, GitHub Copilot sizin için ilgili dosyaları ve bağlamı otonom olarak bulur.

Yaygın kod yeniden düzenleme senaryoları

GitHub Copilot, kodu birçok şekilde hızlı bir şekilde yeniden düzenlemenize yardımcı olabilir. Aşağıdaki liste, kodu yeniden düzenlemeye yönelik bazı yaygın senaryoları içerir:

  • Verimsiz kodu iyileştirme
  • Yinelenen kodu temizleme
  • Kodu daha kısa yapma
  • Karmaşık kod birimlerini bölme
  • Daha iyi okunabilirlik için koşullu kodu yeniden yazma
  • Kodu farklı bir yapı kullanacak şekilde yeniden biçimlendirme

Verimsiz kodu iyileştirmek için GitHub Copilot kullanma

GitHub Copilot kodu iyileştirmenize yardımcı olabilir. Örneğin, kodun daha hızlı çalışmasını sağlamak için kodunuzu iyileştirebilirsiniz.

Aşağıdaki bash betiğini göz önünde bulundurun:

#!/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

Betiğin performans gibi farklı yönlerini iyileştirme seçeneklerini değerlendirmek için sohbet özelliklerini kullanabilirsiniz.

#!/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

Yinelenen kodu temizlemek için GitHub Copilot kullanma

Yinelemeyi önlemek kodunuzun gözden geçirilmesini ve hata ayıklamasını kolaylaştırır. Örneğin, aynı hesaplama bir dosyanın farklı yerlerinde birden çok kez gerçekleştiriliyorsa, hesaplamayı bir işleve taşıyabilirsiniz.

Aşağıdaki çok basit JavaScript örneğinde aynı hesaplama (satılan öğe sayısıyla çarpılan madde fiyatı) iki yerde gerçekleştirilir.

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}`);

Sohbet özelliklerinin yinelenen hesaplamayı bir işleve taşımasını isteyebilirsiniz.

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}`);

Kodu daha kısa hale getirmek için GitHub Copilot kullanma

Kod gereksiz yere ayrıntılıysa okumak ve bakımını yapmak zor olabilir. GitHub Copilot, seçili kodun daha kısa bir sürümünü önerebilir.

Aşağıdaki Python kodu bir dikdörtgenin ve dairenin alanını oluşturur, ancak kod daha kısa yazılabilir:

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 kodu yeniden düzenlemenize ve daha kısa yapmanıza yardımcı olabilir.

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)}")

Karmaşık kod birimlerini bölmek için GitHub Copilot kullanma

Birden çok işlem gerçekleştiren büyük yöntemler veya işlevler, belirli bir işlemi gerçekleştirmeye odaklanan daha küçük ve basit işlevlere kıyasla daha az yeniden kullanım fırsatı sunar. Ayrıca anlamak ve hata ayıklamak daha zor olabilir.

GitHub Copilot, karmaşık kod bloklarını yeniden kullanım için daha uygun olan daha küçük birimlere bölmenize yardımcı olabilir.

Aşağıdaki Python kodu çok basit bir örnektir, ancak tek bir işlevi belirli işlemleri gerçekleştiren iki işleve bölme ilkesini gösterir.

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)

verileri temizlemek, verileri yazdırmak ve işlemek için işlevler oluşturmak üzere kodu yeniden düzenlemek için GitHub Copilot kullanabilirsiniz.

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)

Daha iyi okunabilirlik için koşullu kodu yeniden yazmak için GitHub Copilot kullanma

Genellikle çeşitli koşullara bağlı olarak yürütülen veya olmayan kod yazmanın çeşitli yolları vardır. Bazı koşullu yapılar, belirli kullanım örnekleri için diğerlerinden daha uygundur ve alternatif bir koşullu yapı seçmek bazen kodun okunmasını kolaylaştırabilir.

Bu Java yöntemi, gerçekleştirilecek işlemi belirlemek için bir dizi if ve else if deyimi kullanır:

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";
}

Switch deyimi, aynı mantığı uygulamanın daha iyi bir yolu olabilir.

/**
    * 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";
    };
}

Kodu farklı bir yapı kullanacak şekilde yeniden biçimlendirmek için GitHub Copilot kullanma

JavaScript'te aşağıdaki işleve sahip olduğunuzu varsayalım:

function listRepos(o, p) {
    return fetch(`https://api.github.com/orgs/${o}/repos?per_page=${parseInt()}`)
        .then(response => response.json())
        .then( (data) => data);
}

Kodlama standartlarınız işlevler için ok gösterimini ve parametreler için açıklayıcı adları kullanmanızı gerektiriyorsa, bu değişiklikleri yapmanıza yardımcı olması için GitHub Copilot kullanabilirsiniz.

const listRepositories = (organization, perPage) => {
    return fetch(`https://api.github.com/orgs/${organization}/repos?per_page=${parseInt(perPage)}`)
        .then(response => response.json())
        .then(data => data);
};

Özet

GitHub Copilot kodu çeşitli şekillerde yeniden düzenlemenize yardımcı olabilir. GitHub Copilot verimsiz kodu iyileştirmesini, yinelenen kodu temizlemesini, kodu daha kısa hale getirmesini, karmaşık kod birimlerini bölmesini, daha iyi okunabilirlik için koşullu kodu yeniden yazmasını ve kodu farklı bir yapı kullanacak şekilde yeniden biçimlendirmesini istemek için Sohbet görünümünü veya Satır içi Sohbet'i kullanabilirsiniz.