Jim Fleming
O que Jim Fleming tenta compor na Programação OO a reduzir 20 boas ideias para 10 ao Robert Martins?
Estamos tentando compor Os Dez Mandamentos da Programação OO. Betrand Meyer disse em algum lugar que existem cerca de 20 boas ideias em OO, e é isso que a(s) linguagem(s) deve(m) suportar.
É possível reduzir tudo a 10? Se pudéssemos, poderíamos passar isso para estudantes e pessoas que estão começando no OO e isso poderia economizar algum tempo para todos.
Aqui está uma lista de exemplos, não necessariamente em ordem.
1. Os nomes das classes devem ser substantivos e os nomes dos métodos devem ser verbos.
2. Os comentários são tão importantes quanto o código e devem ser “classificados”.
3. A herança deve ajudar os novos desenvolvedores a “programar as diferenças”.
4. O encapsulamento de tudo, inclusive da fonte, é essencial.
5. Os verbos (métodos) devem ser escolhidos cuidadosamente para apoiar o polimorfismo.
6. A reutilização só pode ser alcançada quando as classes padrão são compreensíveis.
7. Novos desenvolvedores devem reutilizar as ferramentas CASE dos desenvolvedores experientes.
8. A portabilidade entre plataformas deve ter prioridade sobre outras questões de design.
9. Uma nova classe deve ser usada para cada nova interface de biblioteca legada.
10. Vários retornos devem ser usados apenas para tratamento de erros e depuração.
--
Jim Fleming /|\ Unir Corporation Unir Technology, Inc.
%Techno Cat I / | \ One Naperville Plaza 184 Shuman Blvd. #100
Pouso de Penn / | \ Naperville, IL 60563 Naperville, IL 60563
East End, Tortola |____|___\ 1-708-505-5801 1-800-222-UNIR(8647)
Ilhas Virgens Britânicas__|______ 1-708-305-3277 (FAX) 1-708-305-0600
\__/-------\__/ e-mail: jim.f...@bytes.com
Navegação Suave no Cruzeiro C+@amarans
~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\______até o final da OuterNet
Linkedin: https://www.linkedin.com/in/jim-fleming-a324825/
Robert Martin
Se eu tivesse que escrever mandamentos, estes seriam candidatos.
1. As entidades de software (classes, módulos, etc.) devem estar abertas para
extensão, mas fechadas para modificação. (O princípio aberto/fechado - Bertrand Meyer)
2. As classes derivadas devem ser utilizáveis por meio da interface da classe base sem a necessidade do usuário saber a diferença. (O Princípio da Substituição de Liskov)
3. Os detalhes devem depender das abstrações. As abstrações não devem depender de detalhes. (Princípio da Inversão de Dependência)
4. O grânulo de reaproveitamento é igual ao grânulo de liberação.
Somente os componentes liberados por meio de um sistema de rastreamento podem ser efetivamente reutilizados.
5. As classes dentro de um componente liberado devem compartilhar um encerramento comum.
Ou seja, se alguém precisa ser mudado, é provável que todos precisem ser mudados. O que afeta um, afeta todos.
6. As classes dentro de um componente lançado devem ser reutilizadas juntas.
Ou seja, é impossível separar os componentes uns dos outros para reaproveitar menos que o total.
7. A estrutura de dependência dos componentes lançados deve ser um DAG. Não pode haver ciclos.
8. As dependências entre os componentes liberados devem seguir na direção da estabilidade. O dependente deve ser mais estável que o depender.
9. Quanto mais estável for um componente lançado, mais ele deverá consistir em classes abstratas. Um componente completamente estável deve consistir apenas em classes abstratas.
10. Sempre que possível, utilize padrões comprovados para resolver problemas de projeto.
11. Ao cruzar dois paradigmas diferentes, construa uma camada de interface que separe os dois. Não polua um lado com o paradigma do outro.
--Roberto
Martin | Consultoria de Design | Cursos de formação oferecidos:
Object Mentor Assoc.| rma...@rcmcon.com | Análise Orientada a Objetos
2080 Cranbrook Rd. | Tel: (708) 918-1004 | Design Orientado a Objetos
Green Oaks IL 60048 | Fax: (708) 918-1023 | C++
Linkedin: https://www.linkedin.com/company/cleancoder/