2. ROTEIRO
1 Por que se preocupar com boas práticas ao
codificar notebooks?
2 Diferenças de notebooks para programação
tradicional
3 Compilado de recomendações de boas
práticas
indeorum.com
4 Fontes para consulta
4. indeorum.com
“Sou Cientista de Dados… não preciso me preocupar com
legibilidade de código porque a maior parte dele vai fora.”
http://thedataist.com/ten-good-coding-practices-for-data-scientists/
“Código limpo e agilidade valem para desenvolvedores…
não fazem sentido dentro do meu trabalho.”
5. indeorum.com
E SE…
• outras pessoas usarem meu notebook?
• eu (ou outra pessoa) precisar alterá-lo?
• precisar aproveitá-lo para outros entregáveis?
• precisar colocar um modelo em produção?
• precisar escalar o modelo?
• precisar depurar?
• dados de input mudarem / modelo depreciar?
7. indeorum.com
ESPECIFICIDADES DE JUPYTER
NOTEBOOKS
• Ambiente livre e flexível, permite iterar e explorar datasets rapidamente
• Também são usados para gerar relatórios
• Em projetos de ML a maior parte do código contém transformações de
dados, demandando input e output com o mesmo padrão
• Precisam gerar artefatos reproduzíveis
13. indeorum.com
PEP8 - https://www.python.org/dev/peps/pep-0008
• Linhas com no máximo de 79 caracteres
• Linha em branco separando blocos lógicos dentro de métodos e funções
• Não usar espaço imediatamente antes ou após um parêntese
• Importações em linhas separadas
• etc…
30. indeorum.com
• Comentários podem ser indício de má abstração, bad naming, exceção de
responsabilidades em funções/classes, etc.
• Priorizar células de markdown para descrever especificadas relacionadas
ao negócio ou a um modelo
• DocStrings são recomendados
35. indeorum.com
• Jupyter Notebooks se enquadram no ‘princípio da superfície plana’.
• Quanto maior o notebook, mais difícil será para verificar o resultado de
eventuais alterações
• Retirar complexidade de classes e funções auxiliares e dar foco para
análise exploratória e para predições com ML
39. indeorum.com
FONTES
• Clean Code - Robert C. Martin, Michael C. Feathers (Autor), Timothy R. Ottinger.
2008
• Thoughtful Machine Learning with Python: A Test-Driven Approach - Matthew
Kirk. 2017
• Guia de Estilo para Python: https://www.python.org/dev/peps/pep-0008/
• https://medium.com/zero-equals-false/writing-clean-code-for-data-scientists-
f141bf550d37
• https://www.thoughtworks.com/insights/blog/coding-habits-data-scientists
• Clean code em Python: https://github.com/zedr/clean-code-python