Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Boas Práticas de Programação em Python PARTE I

Boas Práticas de Programação em Python PARTE I

Por Ricardo Costa Val do Rosario

1. PEP 8 e Estilo de Código

•	Siga o guia oficial PEP 8 para formatação e legibilidade

•	Use 4 espaços por nível de indentação (não misture tabs)

•	Limite de 79 caracteres por linha

•	Linhas em branco: 

o	Duas antes de definições de módulos/classes

o	Uma antes de definições de funções internas

Aspecto	Padrão PEP 8

Indentação	4 espaços

Comprimento de linha	Máx. 79 caracteres

Espaços em expressões	a = b + c; não a=b+c

Imports	Standard, terceiros, locais (separados por linha em branco)

2. Convenções de Nomeação

•	Variáveis e funções: snake_case

•	Classes: PascalCase

•	Constantes: UPPER_SNAKE_CASE

•	Módulos e pacotes: nomes curtos em snake_case

Exemplo:

MAX_RETRIES = 5

def calcula_media_notas(notas):
    pass

class ProcessadorDeDados:
    pass

3. Estrutura e Organização de Projeto

•	Mantenha código fonte em um diretório src/

•	Separe testes em tests/

•	Organize módulos por funcionalidade, não por tipo
•	Inclua arquivos de configuração: 
o	pyproject.toml ou setup.py
o	requirements.txt
o	README.md

Estrutura típica:

meu_projeto/
├── src/
│   └── meu_pacote/
│       ├── __init__.py
│       ├── modulo1.py
│       └── modulo2.py
├── tests/
│   └── test_modulo1.py
├── pyproject.toml
├── requirements.txt
└── README.md

4. Comentários e Documentação

•	Documente o porquê do código, não o como

•	Use docstrings para módulos, classes e funções (três aspas)

•	Atualize comentários sempre que o código mudar

def filtra_pares(lista: list[int]) -> list[int]:
  
Retorna uma lista contendo apenas os números pares
presentes na lista de entrada.

return [n for n in lista if n % 2 == 0]

5. Tipagem Estática com Type Hints

•	Aplique anotações de tipo para funções e métodos

•	Auxilia linters e IDEs a detectar erros cedo

from typing import List, Dict

def soma_valores(dados: List[Dict[str, float]]) -> float:
    total = 0.0
    for item in dados:
        total += item["valor"]
    return total

6. Tratamento de Erros e Exceções

•	Use exceções específicas em vez de except: genérico

•	Restrinja o escopo do try/except ao mínimo necessário

•	Utilize finally ou gerenciadores de contexto (with) para liberar recursos
try:

 arquivo = open("dados.csv")
    linhas = arquivo.readlines()
finally:
    arquivo.close()

7. Testes Automatizados

•	Escreva testes unitários com pytest ou unittest

•	Cubra casos de sucesso e falha

•	Use fixtures para preparar e limpar ambientes de teste

import pytest
from meu_pacote.modulo1 import filtra_pares

def test_filtra_pares():
    assert filtra_pares([1,2,3,4]) == [2,4]

8. Gerenciamento de Dependências e Ambientes

•	Isole ambientes com venv ou conda

•	Liste dependências em requirements.txt ou pyproject.toml

•	Congelar versões mínimas necessárias

requirements.txt

numpy>=1.24.0
pandas>=2.0.0
2 respostas
solução!

Bom dia! Como está?

Material incrível, Ricardo!

Essa parte I é um verdadeiro tesouro para quem busca escrever código de alta qualidade. Gostei bastante de como você conseguiu condensar informações tão importantes de forma clara e organizada, com exemplos práticos que realmente ajudam a visualizar a aplicação de cada regra.

Você também abordou desde o básico da PEP 8 até tópicos mais avançados como tipagem estática e testes automatizados. Ainda incluiu dicas sobre organização de projetos e gerenciamento de dependências, mostrando uma visão completa e madura sobre o desenvolvimento Python.

Deixo abaixo um artigo sobre Clean Code em Python, um tópico bem pertinente ao seu projeto!

Ícone de sugestão Para saber mais:

Sugestão de conteúdo para você mergulhar ainda mais sobre o tema:

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!

Daniel, Confesso que não tinha a menor ideia do que é ser desenvolvedor. Que incrível é está profissão. Att