boas práticas de desenvolvimento em linguagem orientada a objeto
DESCRIPTION
The Best Practices - OOPTRANSCRIPT
Boas práticas de Programação (OOP)
Alexsandro Nunes LacerdaMCT | MCPD | MCTS | MCP Blog: http://www.alexsandronunes.com.br Twitter: @AlexsandroNL
01/21
Alguma vez um código ruim ja lhe atrasou consideravelmente?
Código ruim
02/21
Senta que la vem a história
04/21
Boas práticas de programação
• Nomes significativos- Use nomes que revelem o seu propósito
Prática ruim:int d; // tempo decorrido em dias Boa prática:int diasDecorrido;
05/21
Boas práticas de programação
• Nomes significativos- Use nomes pronunciaveisPrática ruim: class DtaRcrd102{ private DateTime genmdyhms;... }
Boa prática:class Customer{ private DateTime generationDateTime;... }
06/21
Boas práticas de programação
• Nomes significativos- Use nomes passiveis de buscaPrática ruim: for (int j=0; j<34; j++) {s += (t[j] * 4) / 5;}
Boa prática:for (int j=0; j < NUMBER_OF_TASKS; j++) {int realTaskDays = taskEstimative[j] * realDaysPerIdealDay;int realTaskWeeks = (realTaskDays / WORK_DAYS_PER_WEEK);sum += realTaskWeeks}
07/21
Boas práticas de programação
• Nomes significativos- Caso o nome possa gerar confusão,
use prefixo.Prática ruim: ...public string state { get; set;}...
Boa prática:...public string addrState { get; set;}...
08/21
Boas práticas de programação• Classes e objetos devem ter nomes com
substantivo(s)
Prática ruim: class vendedores{ ... }
Boa prática:class Cliente { ... }class Produto { ... }
09/21
Boas práticas de programação
• Métodos devem ter verbo
Boa prática:
string name = employee.getName();customer.setName(“Alexsandro”);customer.saveChange(); if (paycheck.isPosted())...
- É bastante recomendado o uso dos prefixos get, set ou is.- Padronize palavras por conceito. (ex. pegar, recuperar, obter)
10/21
Boas práticas de programação• Principio da Responsabilidade Única (SRP)
- Classes e Métodos devem ter apenas uma função
11/21
Boas práticas de programação• Principio da Responsabilidade Única (SRP)
12/21
Boas práticas de programação
• Principio Aberto-Fechado(OCP)“Entidades de software (classes, módulos, funções, etc) devem ser abertas para extensão mas fechadas para modificações” – Bertrand Meyer (1988)
13/21
Boas práticas de programação• Números de parâmetros de um método
- A quantidade ideal deveria ser zero.- Depois vem um (mônade).- Seguido de dois (díade).- Sempre que possível evite três (tríade).- Mais de três (políade) devem ter um motivo muito
especial, mesmo assim não deveriam ser usados.
- Quanto mais parâmetros mais difícil de entender.- Parâmetros lógicos além de feios já diz que o método faz
mais coisa que deveria fazer.14/217
Boas práticas de programação• Comentários- Evite comentários, se podemos expressar utilizando nomes
realmente significativos não precisaríamos de comentários.- Se esta precisando utilizar muitos comentários é porque o
código esta ruim- Use os comentários para alertar ou deixar um lembrete de algo
que precisará ser feito no futuro e não para explicar o código.
15/213
Boas práticas de programação• Organização do código
- Pensamentos devem ser separados por uma linha em branco.- Número de linhas de um método ? O máximo que couber na tela,
mas o recomendado é no máximo 20 linhas.
- A duplicação de código pode ser a raiz de todo o mal no software.
- Variáveis dentro de métodos devem ser criadas bem próximas de onde irão ser usadas.
- Variáveis de classe devem ser escritas no inicio da classe.- Se um método chama outro, estes devem ficar verticalmente
próximos.
16/216
Boas práticas de programação• Injeção de Dependência (DI)- É utilizado quando é necessário manter baixo o nível de
acoplamento entre diferentes módulos de um sistema.
- No DIP(Dependency Injection Pattern) as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (container) que é responsável por "injetar" em cada componente suas dependências declaradas.
18/212
Demo
19/21
21/21
Boas práticas de Programação (OOP)
Alexsandro Nunes LacerdaMCT | MCPD | MCTS | MCP Blog: http://www.alexsandronunes.com.br Twitter: @AlexsandroNL