Ferramentas do usuário

Ferramentas do site


ti_publica:desenvolvimento_de_sistemas:boas_praticas

Diferenças

Aqui você vê as diferenças entre duas revisões dessa página.

Link para esta página de comparações

Ambos lados da revisão anteriorRevisão anterior
Próxima revisão
Revisão anterior
Última revisãoAmbos lados da revisão seguinte
ti_publica:desenvolvimento_de_sistemas:boas_praticas [2019/11/29 07:21] cartolati_publica:desenvolvimento_de_sistemas:boas_praticas [2020/09/21 16:12] – [Dicas gerais] cartola
Linha 22: Linha 22:
       * **não serve** caso precise de um interpretador específico que não o padrão do sistema       * **não serve** caso precise de um interpretador específico que não o padrão do sistema
   * Se for publicar seu código publique em inglês   * Se for publicar seu código publique em inglês
 +
 +===IDE===
 +
 +Eu uso o vim, mas essas funcionalidades provavelmente poderão ser encontradas em outras IDEs.
 +
 +  * Checagem de sintaxe e auto complemento no VIM
 +    * [[https://github.com/vim-syntastic/syntastic|vim-syntastic]]
 +    * [[https://github.com/ycm-core/YouCompleteMe|vim-youcompleteme]]
 +  * Configurações no .vimrc:
 +    * set textwidth=80
 +    * set wrapmargin=8
 +    * set columns=80
 +
 +===Reuso===
 +  * Ao criar classes/códigos reusáveis, defina a versão (no nível da classe, não da instância)
 +  * Ao criar número de versão no código use tipo string
  
 ===Documentação=== ===Documentação===
Linha 84: Linha 100:
 ===Testes automatizados=== ===Testes automatizados===
   * Algumas linguagens já tem frameworks prontos para adiantar esse trabalho, como o [[https://docs.pytest.org/en/latest/|pytest para Python]], [[https://github.com/kward/shunit2|shUnit2]] ou [[https://liw.fi/cmdtest/|cmdtest/yarn]] para Shell, [[https://phpunit.de/|PHPUnit]] etc   * Algumas linguagens já tem frameworks prontos para adiantar esse trabalho, como o [[https://docs.pytest.org/en/latest/|pytest para Python]], [[https://github.com/kward/shunit2|shUnit2]] ou [[https://liw.fi/cmdtest/|cmdtest/yarn]] para Shell, [[https://phpunit.de/|PHPUnit]] etc
-  * Criar funções ou classes que recebam e retornem parâmetros testáveis+  * Criar funções ou classes que recebam e retornem parâmetros testáveis, independentes das demais funções no mesmo código
   * Criar outro programa que teste, com os testes programados ou preparar trecho do programa para atuar nos testes   * Criar outro programa que teste, com os testes programados ou preparar trecho do programa para atuar nos testes
-  * Uso de <code python>if __name__ == "__main__":</code> no Python para diferenciar quando o script está sendo chamado diretamente e quando está sendo carregado por outro, visando não executar o programa principal se estiver sendo testado+  * Não executar nada caso o programa seja carregado por outro. Isso em geral significa criar uma função ou área "main" que não é executada a não ser que o programa seja diretamente acionado. 
 +    * Em Python pode se usar <code python>if __name__ == "__main__":</code> 
 +    * Em Shell pode se usar <code bash>$(return >/dev/null 2>&1) 
 +if [ "$?" -ne "0" ]; then</code>
  
-===IDE=== 
  
-Eu uso vimmas essas funcionalidades provavelmente poderão ser encontradas em outras IDEs.+===Senhas hardcoded=== 
 +Em algumas situações seu programa precisa utilizar senhas. Se sua execução for agendada e não houver uma pessoa para passar a senha na hora, como fazer? Colocar a senha hardcoded? E se seu código estiver sendo guardado num sistema de controle de versão, que é uma boa prática? 
 +  * crie um arquivo de configuração 
 +  * coloque nele apenas permissão de leitura e apenas para o usuário necessário 
 +  * no programa originalopcionalmente, verifique o proprietário e permissão necessária do arquivo de configuração, abortando para garantir acerto se alguém alterar acidentalmente 
 +  * não coloque o arquivo de configuração no sistema de controle de versão ou coloque-o com um pré-nome, tipo config-sample
  
-  * Checagem de sintaxe e auto complemento no VIM +Na prática criei uma função numa biblioteca geral para carregar variáveis de configuração, por conta disso meu arquivo de configuração é homônimo ao programa original adicionado de uma extensão padrão.
-    * [[https://github.com/vim-syntastic/syntastic|vim-syntastic]] +
-    * [[https://github.com/ycm-core/YouCompleteMe|vim-youcompleteme]] +
-  * Configurações no .vimrc: +
-    * set textwidth=80 +
-    * set wrapmargin=8 +
-    * set columns=80+
  
-===Reuso==+=====Internacionalização de código=====
-  * Ao criar classes/códigos reusáveis, defina a versão (no nível da classe, não da instância) +
-  * Ao criar número de versão no código use tipo string+
  
 =====Referências===== =====Referências=====
 +  * [[https://en.wikipedia.org/wiki/Zen_of_Python|Zen of Python]]
 +  * [[https://github.com/ryanmcdermott/clean-code-javascript|Clean code javascript]]
   * Referência boa de livros de algumas linguagens populares: https://goalkicker.com/   * Referência boa de livros de algumas linguagens populares: https://goalkicker.com/
   * Vídeo [[https://www.youtube.com/watch?v=HTLu2DFOdTg|Python's Class Development Toolkit]] - bom para programar classes reutilizáveis, muitas dicas próprias de python.   * Vídeo [[https://www.youtube.com/watch?v=HTLu2DFOdTg|Python's Class Development Toolkit]] - bom para programar classes reutilizáveis, muitas dicas próprias de python.
-  * [[https://en.wikipedia.org/wiki/Zen_of_Python|Zen of Python]] 
   * Cursos gratuitos da USP no Coursera:   * Cursos gratuitos da USP no Coursera:
     *  [[https://www.coursera.org/learn/ciencia-computacao-python-conceitos|Introdução à Ciência da Computação com Python Parte 1]]     *  [[https://www.coursera.org/learn/ciencia-computacao-python-conceitos|Introdução à Ciência da Computação com Python Parte 1]]
     * [[https://www.coursera.org/learn/ciencia-computacao-python-conceitos-2|Introdução à Ciência da Computação com Python Parte 2]]     * [[https://www.coursera.org/learn/ciencia-computacao-python-conceitos-2|Introdução à Ciência da Computação com Python Parte 2]]
 +
 +
ti_publica/desenvolvimento_de_sistemas/boas_praticas.txt · Última modificação: 2020/09/21 16:12 por cartola