Sobes.tech
Middle

Nome critérios específicos de qualidade de código.

sobes.tech IA

Resposta da IA

  • Legibilidade: O código é fácil de entender para outros desenvolvedores. São utilizados nomes significativos para variáveis, funções e classes. Seguem-se as convenções de formatação geralmente aceites.
  • Manutenção: É fácil fazer alterações e corrigir erros no código. A arquitetura é modular e as dependências estão minimizadas.
  • Testabilidade: O código é projetado para ser facilmente testado com testes automatizados. Os métodos e classes implementam uma função específica.
  • Desempenho: O código utiliza eficientemente os recursos do sistema (processador, memória, rede). Os algoritmos são ótimos para a tarefa que resolvem.
  • Confiabilidade: O código trata corretamente erros e casos limite. A aplicação funciona de forma estável em várias condições.
  • Reutilizabilidade: Os componentes de código (classes, funções) podem ser utilizados noutras partes da aplicação ou em outros projetos.
  • Conformidade com requisitos: O código implementa totalmente a funcionalidade descrita na especificação ou requisitos.
  • Segurança: O código está protegido contra vulnerabilidades comuns (por exemplo, injeções SQL, problemas de autenticação).
  • Documentação: Partes importantes do código, algoritmos complexos ou decisões não evidentes têm a documentação correspondente (comentários, Javadoc/KDoc).

Exemplos de critérios no código:

// Legibilidade: O nome da função descreve claramente o seu propósito
fun calculateTotalOrderCost(items: List<OrderItem>, discountRate: Double): Double {
    // Manutenção e Testabilidade: A lógica de cálculo está separada
    val subtotal = items.sumOf { it.price * it.quantity }
    // Confiabilidade: Tratamento do caso limite de desconto
    if (discountRate < 0 || discountRate > 1) {
        throw IllegalArgumentException("A taxa de desconto deve estar entre 0 e 1")
    }
    return subtotal * (1 - discountRate)
}
// Reutilizabilidade: Interface para diferentes estratégias de processamento
interface PaymentProcessor {
    boolean processPayment(double amount, String cardNumber);
}

// Conformidade com requisitos: Implementação de um método de pagamento específico
class CreditCardPaymentProcessor implements PaymentProcessor {
    @Override
    public boolean processPayment(double amount, String cardNumber) {
        // Lógica de processamento de cartão de crédito
        return true; // Assume sucesso
    }
}