# Refatoração para sustentabilidade ambiental

Copilot Chat pode sugerir maneiras de tornar o código mais amigável ao meio ambiente.

O código que é ineficiente no uso de recursos computacionais pode levar a um maior consumo de energia, o que tem um impacto negativo no ambiente. Exemplos desse código incluem algoritmos com alta complexidade de tempo, uso excessivo de memória e processamento desnecessário.

Copilot Chat pode ajudar a identificar algoritmos ineficientes ou operações com uso intensivo de recursos em seu código que contribuem para um maior consumo de energia. Ao sugerir alternativas mais eficientes, ela pode ajudar a reduzir o impacto ambiental do software.

## Cenário de exemplo

O código Python a seguir lê um arquivo de texto grande e conta o número de linhas. No entanto, ele carrega todo o arquivo na memória, o que pode ser ineficiente para arquivos grandes e levar a um maior consumo de energia. Ele também conta manualmente as linhas em vez de usar funções internas.

```python id=inefficient-code
def count_lines(filename):
    with open(filename, 'r') as f:
        data = f.read()
        lines = data.split('\n')
        count = 0
        for line in lines:
            count += 1
        return count

print(count_lines('largefile.txt'))
```

## Prompt de exemplo

Aqui está um exemplo de prompt que você pode usar com Copilot Chat para refatorar o código acima e melhorar a sustentabilidade ambiental:

```copilot copy prompt ref=inefficient-code
Refactor this code to improve its environmental sustainability by reducing memory usage and computational overhead.
```

## Resposta de exemplo

> \[!NOTE]
> Copilot Chat as respostas são não determinísticas, portanto, você pode obter uma resposta diferente daquela mostrada aqui.

Copilot sugere o uso de uma expressão gerador para ler a linha de arquivo por linha, o que reduz o uso de memória. Ele também usa a função interna `sum` para contar as linhas com mais eficiência.

```python
def count_lines(filename):
    with open(filename, 'r') as f:
        return sum(1 for _ in f)  # Efficiently counts lines without loading all into memory

print(count_lines('largefile.txt'))
```

## Leitura adicional

* [Engenharia de prompts para o GitHub Copilot Chat](/pt/copilot/concepts/prompting/prompt-engineering)
* [Práticas recomendadas para usar GitHub Copilot](/pt/copilot/get-started/best-practices)