Kod yeniden düzenleme senaryolarını ve GitHub Copilot en iyi yöntemlerini 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 uygulamalarını 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 Copilot kullanırken bazı en iyi yöntemleri izlemeniz gerekir.

Daha iyi istemlerle yanıtları iyileştirme

Daha etkili istemler yazarak Copilot'un yanıtlarının kalitesini artırabilirsiniz. İyi hazırlanmış bir istem, Copilot'un gereksinimlerinizi daha iyi anlamasına ve daha ilgili kod önerileri oluşturmalarına 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.

    Copilot'un "Yemek planlayıcısı uygulaması oluşturmasını" istemek 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, değişkenini #codebase kullanarak kod tabanının tamamına başvurabilirsiniz: "#codebase'da veritabanı bağlantı dizesi nerede kullanılır?"

  • İ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.

    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.

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ı modunda, kullanmak istediğiniz araçları yapılandırmak veya isteminize açıkça eklemek için araçlar düğmesini seçin.

  • Copilot'un kod araması yaparak doğru dosyaları otomatik olarak bulmasına izin vermek için kullanın #codebase .

  • #fetch Aracı kullanarak web sayfasından içerik getirin veya GitHub deposunda kod araması yapmak için kullanın#githubRepo.

  • İ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ı modunu kullandığınızda, Copilot sizin için ilgili dosyaları ve bağlamı otonom olarak bulur.

Yaygın kod yeniden düzenleme senaryoları

GitHub Copilot, kodu birçok yolla 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

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. Copilot, seçilen 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 hale getirmenize 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.

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)

Copilot kullanarak verileri temizleme, verileri yazdırma ve verileri işleme işlevleri oluşturmak üzere kodu yeniden düzenleyebilirsiniz.

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, hangi işlemin gerçekleştirileceğini 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 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 yollarla yeniden düzenlemenize yardımcı olabilir. Copilot'tan verimsiz kodu iyileştirmesini, yinelenen kodu temizlemesini, kodu daha kısa yapmasını, karmaşık kod birimlerini ayırmasını, 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.