Python é uma linguagem diferente das demais. Todo desenvolvedor que “migra” para o Python percebe isso.
O grande porém disso tudo é que “não programa-se em Python como em outras linguagens”. Como já disse antes: “O Python é um canivete suíço”. Você não vai solucionar um problema em Java da mesma forma que soluciona em Python (o que vem acontecendo em alguns projetos opensource), pois Python tem uma regra fundamental que geralmente é subestimada por programadores de outras linguagens: clareza.
Você pode conferir na íntegra aqui, e aqui as referências utilizadas para construir este artigo.
Aprenda OO!
Primeiramente… aprenda orientação a objetos. É sério, orientação a objetos pode resolver problemas extremamente complexos com a modularização em trechos claros e simples. A orientação a objetos do Python é um pouco diferente da do Java ou do PHP, mas é extremamente forte (e até mais interessante). Siga princípios de DRY (Don’t Repeat Yourself) e KISS (Keep It Simple Stupid), e antes de sair “escrevendo um livro”, pense em como você poderia resolver tal problema com o mínimo de linhas possíveis.
Uma vez estive lendo um desses “guias de bolso” de Linux que falava sobre o Kernel (obviamente em C). O autor salienta que se você tem um desvio condicional com mais de dois níveis de profundidade (if dentro de if dentro de if)… é que seu código/lógica têm problemas. E estamos falando de uma linguagem estruturada! Imagine o que o autor pensaria sobre fazer isso em Java ou Python, seria o mesmo que usar tabelas para escrever templates HTML 😉
Aprenda Python! Mas aprenda mesmo…
Saiba como funciona os tipos integer, float, list, tuple, dict, etc. Você vai precisar muito deles! Você deve saber como eles são constituídos, como usá-los e quais são seus métodos (sim! Em Python, tudo é objeto).
Voltando ao assunto sobre OO, aprenda sobre métodos especiais como __add__, __str__, __init__, etc. Aprenda sobre properties,faça parte das listas de discussões, leia os tutorias/manuais. Quando houver uma dúvida, visite a documentação oficial.
Não tenha preguiça.
Siga a “filosofia” Pythonista
Siga o “Zen do Python“. É um ótimo incentivo às boas-práticas para desenvolvimento Python:
O Zen do Python, por Tim Peters
Bonito é melhor que feio.
Explícito é melhor que implícito.
Simples é melhor que complexo.
Complexo é melhor que complicado.
Linear é melhor do que aninhado.
Esparso é melhor que denso.
Legibilidade conta.
Casos especiais não são especiais o bastante para quebrar as regras.
Ainda que praticidade vença a pureza.
Erros nunca devem passar silenciosamente.
A menos que sejam explicitamente silenciados.
Diante da ambigüidade, recuse a tentação de adivinhar.
Deveria haver um — e preferencialmente só um — modo óbvio para fazer algo.
Embora esse modo possa não ser óbvio a princípio a menos que você seja holandês.
Agora é melhor que nunca.
Embora nunca freqüentemente seja melhor que *já*.
Se a implementação é difícil de explicar, é uma má idéia.
Se a implementação é fácil de explicar, pode ser uma boa idéia.
Namespaces são uma grande idéia — vamos ter mais dessas!
(retirado do site Arkan)
Não reinvente a roda!
O quadrinho acima resume bem o que quero dizer com este tópico.
Se alguém já fez um módulo fantástico de leitura de arquivos XML e os converte em objetos através de DOM, me diga a razão de você querer fazer outro?! Em vez disso… melhore! Deixe um pouco essa “política proprietária” de lado. Python é aberto… seja mais “aberto”! E quando não achar o que você procura, desenvolva e colabore com a comunidade.
Isto nos leva a outro assunto: use frameworks (ou pelo menos MVC)! Lembre-se: Don’t Repeat Yourself.
No caso da Web, as frameworks preparam o Python para um desenvolvimento ágil, rápido e rico. Muita coisa, como autenticação de usuários, controle de cache, compactação de respostas, etc. Está pronta, testada e sendo usada por outros tantos usuários.
Vejo muita gente reclamando do software livre e não movendo um dedo em prol dele… aí fica fácil. Se você quer ser um bom programador Python, você deve ser mais aberto!
Código Curto x Código Explícito
Em alguns casos, é melhor termos um bloco de código um pouco mais explícito (conseqüentemente mais longo). Principalmente se é a operação vital do funcionamento do seu objeto, módulo, pacote ou projeto.
Tenha em mente que: O Python é inteligível como o inglês. Não que isso seja uma regra ou obrigação, mas que isso ajuda na manutenção de código… ah! como ajuda. Tenha o bom senso, vejo muitos Pythonistas resolvendo problemas em 3 linhas de código, dependendo do contexto isso pode ser bom ou ruim.
Considerações Finais
Nunca deixe de estudar! O Python é uma linguagem que tem duas versões sendo desenvolvidas em paralelo (Python 2.x / Python 3). Não encare como um ponto negativo… isso é um processo evolutivo natural e muito comum no software livre.
Use TDD (TestDriven Development), versionamento, gestores de projetos, metodologias de desenvolvimento, e outras técnicas que influenciem na qualidade do seu software. Lembre-se: Não é só a linguagem que faz de um programador um bom profissional!
Entenda que Python pode ser melhor para você, mas pode não ser melhor para o seu vizinho. Mas isso não impede que você compartilhe com ele as suas experiências.
Até a próxima…
10 Comentários
Parabéns pelo artigo.
@Marlon…
Muito obrigado… sucesso!
Outro artigo *muito* interessante é o “Intermediate and Advanced Software Carpentry in Python” no endereço http://ivory.idyll.org/articles/advanced-swc/
Buenas!
Excelente artigo, objetivo, direto, nada prolixo… 😀
Grande abraço!
Osvaldo e Cícero, obrigado pelo feedback.
Sucesso…