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
ti_publica:desenvolvimento_de_sistemas:boas_praticas [2019/11/29 07:21] cartolati_publica:desenvolvimento_de_sistemas:boas_praticas [2020/09/21 16:12] (atual) – [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 Bash (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.1575022907.txt.gz · Última modificação: 2019/11/29 07:21 por cartola