legibilidade do código
TRANSCRIPT
Legibilidade do Código
@felipevolpone
@dextrasistemas
Inspiração
manutenção
views.py – 8 mil linhas
sem testes
def automate_user_from_dict (self, dict):
aux = dict
for item in dict:
if (item[‘tipo’] == 2):
u = Usuario()
u.setName(item[‘nome’])
else:
if (!data.formatadaEhValida(item[‘data’])):
print ‘deu erro’
#try catch
pass
Log.clear()
#dict[‘auth’] = Authorize.isAuth(u)
#aux = []
Você escreve seu código para quem?
É fácil saber o que seu código faz?
Quanto você se preocupa com a qualidade dele?
Você se preocupa com ofuturo do projeto?
sem qualidade, perde-se agilidade
... + Escalabilidade + Cobertura de testes + Código bem feito +
Complexidade + Metodologia + ...
grandes mudanças
com
pequenas preocupações
dê bons nomes e seja objetivo
Variáveis
String nameString = “Maria”;
String nome = “Maria”;
String aux = “”;
não misture tipos com nomes
List<String> listaDeNomes;
List<String> list;
List<String> nomes;
Variáveistroque significados escondidos por constantes
for (Lanche lanche : lanches) {
if (lanche.getCodigo() == 2) {
lanche.recebeDescontoDaSegundaFeira();
int LANCHE_PROMOCIONAL_SEGUNDA_FEIRA = 2;
if (lanche.getCodigo() == LANCHE_PROMOCIONAL_SEGUNDA_FEIRA) {
lanche.recebeDescontoDaSegundaFeira();
Funções
nomes distinguíveis
carrinho = new CarrinhoDeCompras();
carrinho
.adicionar(
.acrescentar(
.add(
.incluir(
.appendar(
Funções
devem fazer apenas uma coisa
public void criarUsuario (String nome, int RG) {
Usuario user = new Usuario();if (user.getTipo() == ‘ADMIN’) {
repository.createNewAdmin(user);}
user.setName(nome);
Contas allContas = repository.getAllContas().getDebitos();user.debitarContas(allContas);
repository.saveUser(user);}
Funçõesnão negue duas vezes
if (!naoDeveAdicionar()) {
if (deveAdicionar()) {
passe poucos parâmetros
seja claro com cabeçalhos
public void criarRelatorio (String titulo, String nomeUsuario, String sobrenomeUsuario, int idade, int RG, ...)
public void criarRelatorioDoUsuario (String titulo, Usuario usuario)
Classes
são personagens transformadores
Classes
nomes pronunciáveis
new PDVCliente();
new PDVProduto();
new Cliente();
new Produto();
escolha bons ótimos nomes
new ProdutoObjeto();
new Produto();
Comentários
código: como e de que maneira
comentário: por qual razão
Comentários
comentários deveriam dizer coisas que o código não consegue dizer por si //data esperada yyyy-mm-ddpublic Date formataData (String dataNaoFormatada) {
não deixe código comentado
Organização
Um lugar para tudo, tudo em seu lugar. Um pedaço de código deveestar onde você esperava encontrá-lo. Se não estiver, você deveria
refatorá-lo para tê-lo lá.
Organização
código como API
código falaconte uma história!
parece fácil, mas...
inspirar para mudar