Dart:
Refatoração
Como Fazer:
Exemplo 1: Renomeando e Extraindo Métodos
Antes da refatoração, você pode ter um trecho de código que mistura diferentes níveis de abstração ou responsabilidades, como calcular um desconto e depois aplicá-lo:
void main() {
var price = 100.0;
var discount = 0.2;
var finalPrice = price - (price * discount);
print("Preço final: $finalPrice");
}
Saída:
Preço final: 80.0
Após a refatoração, você pode extrair o cálculo do desconto para seu próprio método e dar a ele um nome significativo:
void main() {
var price = 100.0;
var discount = 0.2;
var finalPrice = calcularPrecoFinal(price, discount);
print("Preço final: $finalPrice");
}
double calcularPrecoFinal(double price, double discount) {
return price - (price * discount);
}
Saída:
Preço final: 80.0
Ao extrair o cálculo para um método, você agora tem uma operação claramente definida que pode ser reutilizada, testada independentemente e facilmente modificada.
Exemplo 2: Simplificando Expressões Condicionais
Antes da refatoração, as declarações condicionais podem ser excessivamente complexas ou difíceis de ler:
void main() {
var customerType = "regular";
double discount;
if (customerType == "regular") {
discount = 0.05;
} else if (customerType == "member") {
discount = 0.1;
} else {
discount = 0.0;
}
print("Desconto: $discount");
}
Saída:
Desconto: 0.05
Após a refatoração, considere usar um mapa para uma estrutura mais clara e atualizações ou extensões mais fáceis para tipos de clientes e descontos:
void main() {
var customerType = "regular";
var discounts = {
"regular": 0.05,
"member": 0.1,
"nenhum": 0.0,
};
var discount = discounts[customerType] ?? 0.0;
print("Desconto: $discount");
}
Saída:
Desconto: 0.05
Esta refatoração não apenas torna o código mais conciso, mas também encapsula a lógica para determinar descontos de uma maneira mais fácil de entender e manter.
Bibliotecas de Terceiros para Refatoração
Quando se trata de refatoração em Dart, especialmente dentro de aplicativos Flutter, o conjunto de ferramentas Dart DevTools é inestimável. Inclui ferramentas de desempenho, um inspetor de widget e um depurador em nível de código-fonte. Embora não seja uma biblioteca de terceiros, Dart DevTools é frequentemente usado junto com bibliotecas como flutter_bloc
para gerenciar o estado de maneira limpa de forma que favoreça a refatoração para melhor modularidade e legibilidade. Infelizmente, devido ao escopo desta entrada, exemplos de código específicos usando bibliotecas de terceiros não serão fornecidos aqui, mas os desenvolvedores são encorajados a explorar essas ferramentas para aprimorar o processo de refatoração em suas aplicações Dart/Flutter.