Clean Code em PHP: princípios para escrever código legível

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course
Here is the translated HTML content in Portuguese (Português), with all HTML tags preserved and only the text content translated: ```html

Clean Code em PHP: princípios e exemplos



Todo desenvolvedor PHP já passou pela situação em que o próprio código se torna incompreensível depois de alguns meses. E o que dizer do código alheio, herdado da equipe anterior. Isso leva a bugs, longo onboarding de novatos e relutância em fazer alterações. A solução para esse problema são os princípios do Clean Code (código limpo), popularizados por Robert Martin (Tio Bob). Neste artigo, vamos analisar os principais princípios do Clean Code aplicados ao PHP e ver exemplos concretos.



1. Nomenclatura de variáveis, funções e classes



A nomenclatura correta é a base de um código legível. O nome deve responder às perguntas: "O que é isso?" e "Para que serve?". Não economize letras em prol da brevidade.



Exemplo ruim (código ruim)

<?phpfunction getData($d, $u) {    $r = [];    foreach ($d as $i) {        if ($i['status'] === 'active' && $i['user_id'] === $u) {            $r[] = $i;        }    }    return $r;}?>


Exemplo bom (código limpo)

<?phpfunction getActiveOrdersByUser(array $orders, int $userId): array{    $activeOrders = [];    foreach ($orders as $order) {        if ($order['status'] === 'active' && $order['user_id'] === $userId) {            $activeOrders[] = $order;        }    }    return $activeOrders;}?>


Regras de nomenclatura:

  • Variáveis — substantivos: $userName, $orderTotal.
  • Funções — verbos: calculateTotal(), sendEmail().
  • Classes — substantivos no singular: UserRepository, OrderProcessor.
  • Variáveis booleanas — comece com is, has, can: $isActive, $hasPermission.
  • Evite abreviações ($usr), transliterações ($sozdanieZakaza) e variáveis de uma letra (exceto contadores de loop $i).


2. Funções: pequenas e com uma única responsabilidade



Uma função deve fazer apenas uma coisa e fazê-la bem. Se uma função executa várias tarefas — ela precisa ser dividida. O tamanho ideal de uma função é de 10 a 20 linhas.



Exemplo ruim (função faz tudo)

<?phpfunction processOrder(array $orderData): bool{    // Validação    if (empty($orderData['items'])) {        return false;    }    // Cálculo do valor    $total = 0;    foreach ($orderData['items'] as $item) {        $total += $item['price'] * $item['quantity'];    }    // Salvamento no BD    $sql = "INSERT INTO orders (user_id, total, status) VALUES (?, ?, 'new')";    $stmt = $this->db->prepare($sql);    $stmt->execute([$orderData['user_id'], $total]);    // Envio de email    mail($orderData['email'], 'Order Confirmation', 'Your order is placed');    return true;}?>


Exemplo bom (divisão em funções pequenas)

<?phpclass OrderService{    public function processOrder(array $orderData): bool    {        if (!$this->validateOrder($orderData)) {            return false;        }        $total = $this->calculateTotal($orderData['items']);        $orderId = $this->saveOrder($orderData['user_id'], $total);        $this->sendConfirmationEmail($orderData['email']);        return true;    }

private function validateOrder(array $orderData): bool { return !empty($orderData['items']); }

private function calculateTotal(array $items): float { $total = 0; foreach ($items as $item) { $total += $item['price'] * $item['quantity']; } return $total; }

private function s ```

Blogs

Book Recommendations