O documento discute as diferenças entre trabalhar em uma software house ou dentro de uma empresa, e como as abordagens para desenvolvimento de sistemas diferem em cada caso. Também apresenta princípios de boas práticas de programação como Object Calisthenics.
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
O documento apresenta 10 mandamentos do Object Calisthenics, uma abordagem para melhorar a qualidade do código orientado a objetos através de exercícios simples. Os mandamentos incluem: somente um nível de indentação por método, não usar a palavra-chave "else", encapsular tipos primitivos e strings, somente um ponto por linha, não abreviar nomes, manter classes pequenas, limitar variáveis de instância, usar coleções de primeiro nível, usar métodos getter/setter de forma adequada e documentar o código. A aplicação desses princípi
O documento apresenta princípios de código limpo, como usar nomes significativos para classes, funções e atributos; comentar apenas quando necessário para explicar a motivação do código; formatar o código de acordo com convenções; escrever funções e classes com uma única responsabilidade; aplicar o princípio DRY (Don't Repeat Yourself); evitar acoplamento e depender de entidades estáveis; usar herança para abstrair comportamentos.
O documento discute princípios de clean code em C#, incluindo nomes significativos, métodos simples, baixo acoplamento entre classes e redução de duplicação de código. O Visual Studio fornece ferramentas como Code Metrics para medir a qualidade do código e identificar áreas que precisam de refatoração.
O Object Calisthenics é um conjunto de boas práticas no design do código discutidas em várias comunidades nos últimos anos que buscam deixar o seu código bom em 4 pontos: manutenção, clareza, testabilidade e compreensão.
O documento discute os principais conceitos de orientação a objetos no PHP, incluindo:
1) Classes, objetos, atributos e métodos;
2) Herança e polimorfismo;
3) Visibilidade, métodos mágicos e a variável $this.
Este documento apresenta conceitos avançados de C# e .NET, incluindo:
1) Design de classes, interfaces, delegates e coleções;
2) Elementos como métodos anônimos, delegates genéricos e interfaces genéricas.
3) O foco é no uso de boas práticas de programação orientada a objetos.
O documento discute as diferenças entre trabalhar em uma software house ou dentro de uma empresa, e como as abordagens para desenvolvimento de sistemas diferem em cada caso. Também apresenta princípios de boas práticas de programação como Object Calisthenics.
Objects calisthenics - Os 10 mandamentos do rei do códigoBonoBee
O documento apresenta 10 mandamentos do Object Calisthenics, uma abordagem para melhorar a qualidade do código orientado a objetos através de exercícios simples. Os mandamentos incluem: somente um nível de indentação por método, não usar a palavra-chave "else", encapsular tipos primitivos e strings, somente um ponto por linha, não abreviar nomes, manter classes pequenas, limitar variáveis de instância, usar coleções de primeiro nível, usar métodos getter/setter de forma adequada e documentar o código. A aplicação desses princípi
O documento apresenta princípios de código limpo, como usar nomes significativos para classes, funções e atributos; comentar apenas quando necessário para explicar a motivação do código; formatar o código de acordo com convenções; escrever funções e classes com uma única responsabilidade; aplicar o princípio DRY (Don't Repeat Yourself); evitar acoplamento e depender de entidades estáveis; usar herança para abstrair comportamentos.
O documento discute princípios de clean code em C#, incluindo nomes significativos, métodos simples, baixo acoplamento entre classes e redução de duplicação de código. O Visual Studio fornece ferramentas como Code Metrics para medir a qualidade do código e identificar áreas que precisam de refatoração.
O Object Calisthenics é um conjunto de boas práticas no design do código discutidas em várias comunidades nos últimos anos que buscam deixar o seu código bom em 4 pontos: manutenção, clareza, testabilidade e compreensão.
O documento discute os principais conceitos de orientação a objetos no PHP, incluindo:
1) Classes, objetos, atributos e métodos;
2) Herança e polimorfismo;
3) Visibilidade, métodos mágicos e a variável $this.
Este documento apresenta conceitos avançados de C# e .NET, incluindo:
1) Design de classes, interfaces, delegates e coleções;
2) Elementos como métodos anônimos, delegates genéricos e interfaces genéricas.
3) O foco é no uso de boas práticas de programação orientada a objetos.
Este documento discute os princípios de código limpo e boas práticas de programação. Ele explica que código limpo é código bem escrito, legível e fácil de manter. Também discute como identificar código sujo, a importância de nomes significativos, comentários úteis, classes e métodos pequenos, e testes de unidade. O objetivo é produzir software de qualidade e manutenível a longo prazo.
O documento discute vários sintomas de código ruim, como comentários desnecessários, métodos longos, código duplicado, classes grandes e complexas. Ele também fornece dicas para refatorar código, como extrair valores, serviços, formulários e consultas para classes separadas a fim de manter os modelos mais simples e coesos.
O documento discute padrões de projeto, princípios e melhores práticas para desenvolvimento de APIs e programação orientada a objetos. Inclui descrições sobre Design Patterns como Decorator e Builder, princípios SOLID como responsabilidade única e inversão de dependência, e melhores práticas para APIs como uso de URIs amigáveis e comunicação stateless.
O documento discute os principais conceitos de orientação a objetos em Java, incluindo:
1) A importância de projetar software para suportar mudanças solicitadas pelos usuários;
2) Exemplos de como modelar classes como Conta e Cliente em um sistema bancário;
3) Conceitos como objetos, classes, métodos, pacotes e nomenclatura de pacotes.
O documento discute refatoração de código. Refatoração é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo. O documento descreve vários tipos de problemas de código ("mau cheiro") que podem ser resolvidos através de refatorações como extrair métodos, remover duplicação de código e consolidar hierarquias de classes.
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosPaulo Vitor
O documento discute princípios de orientação a objetos como baixo acoplamento, alta coesão, SOLID e encapsulamento. Apresenta problemas como propagação de mudanças e dificuldade de manutenção quando esses princípios não são seguidos, além de soluções como aplicar SRP, OCP, ISP e DIP. Benefícios de código com boa coesão e baixo acoplamento também são descritos.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Design Pattern: Pending Objects com exemplosDanilo Pinotti
Apresentação sobre o padrão de projeto Pending Objects, com exemplos práticos e discussão sobre suas aplicações.
Aprenda mais sobre um dos padrões utilizados no core do Laravel
Este documento fornece uma introdução sobre os palestrantes e os tópicos que serão abordados no workshop "Do Zero à Produção". Resume os seguintes pontos essenciais:
1) Apresenta os palestrantes Camila Souza, Danilo Pinotti e Fernanda Larocca e suas experiências;
2) Lista os principais tópicos que serão discutidos, incluindo planejamento, desenvolvimento e deploy;
3) Explica brevemente que as melhores práticas de Scrum serão adotadas, como sprints,
O documento discute opções gratuitas para hospedagem de sites estáticos, incluindo Github Pages, Firebase, Cloudflare, Netlify e Vercel. Ele também explica o que são sites estáticos, como desenvolvê-los e como funciona o deploy.
O documento discute como utilizar componentes dentro de outros componentes no Vue.js, abordando os tópicos de escopo de componentes, configuração de componentes filhos via props e comunicação entre componentes via eventos. Props são usadas para passar dados de um componente pai para um filho, enquanto eventos permitem que um filho comunique algo de volta para o pai.
A apresentação introduz o framework Vue.js, explicando que ele é progressivo e permite criar interfaces incrementais e aplicativos de página única. Também discute os principais conceitos como componentes, binding de dados, ecossistema Vue e próximos passos como eventos, loops e propriedades computadas.
Minicurso ministrado durante a semana acadêmica de TSI (UTFPR/Guarapuava) que introduz as pessoas ao mundo das Expressões Regulares (REGEX).
Este minicurso foi produzido e apresentado por mim juntamente com Matheus Mazepa.
O documento apresenta um minicurso sobre o sistema de controle de versão Git. Resume os principais tópicos a serem abordados como instalação, primeiros passos, gerenciamento de índice, branches, stashes e boas práticas. O objetivo é ensinar conceitos básicos e fluxos de trabalho com o Git.
O documento apresenta um minicurso sobre o sistema de controle de versão Git. Resume os principais tópicos a serem abordados como instalação, conceitos básicos, áreas de trabalho, commits, branches, tags e boas práticas. Fornece também informações sobre o palestrante e links para referências adicionais.
Talk sobre testes automatizados. Parte 1/2Danilo Pinotti
O documento discute testes automatizados, destacando que seu objetivo é simplificar o esforço de testes manuais através de scripts programados. Ele explica que testes automatizados reduzem tempo e custos de testes, aumentam qualidade e retorno do investimento. Alguns tipos de testes automatizados mencionados são testes unitários, de integração e de interface.
O documento apresenta os conceitos básicos do framework Vue.js, incluindo que ele é um framework progressivo para construção de interfaces, pode ser usado para criar aplicações de página única e tem bibliotecas como Vue CLI, Vue DevTools e Vue Router. Também discute setup inicial com Vue CLI, componentes simples em Vue e binding de dados.
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Danilo Pinotti
O documento discute a comunicação entre componentes em Vue.js, explicando que props são usadas para passar dados de um componente pai para um filho, enquanto eventos permitem que um filho comunique algo de volta para o pai. Componentes podem ter escopo global ou local. Configuração de componentes filhos é feita principalmente via props.
Este documento discute o que são Helpers no Laravel e fornece exemplos de alguns Helpers comuns, como array_get, data_get, head(), last() e dd(). Também explica como criar seus próprios Helpers e melhores práticas ao fazê-lo, como garantir que sejam reutilizáveis e não sobrescrevam funções existentes.
More Related Content
Similar to Boas práticas de programação com Object Calisthenics
Este documento discute os princípios de código limpo e boas práticas de programação. Ele explica que código limpo é código bem escrito, legível e fácil de manter. Também discute como identificar código sujo, a importância de nomes significativos, comentários úteis, classes e métodos pequenos, e testes de unidade. O objetivo é produzir software de qualidade e manutenível a longo prazo.
O documento discute vários sintomas de código ruim, como comentários desnecessários, métodos longos, código duplicado, classes grandes e complexas. Ele também fornece dicas para refatorar código, como extrair valores, serviços, formulários e consultas para classes separadas a fim de manter os modelos mais simples e coesos.
O documento discute padrões de projeto, princípios e melhores práticas para desenvolvimento de APIs e programação orientada a objetos. Inclui descrições sobre Design Patterns como Decorator e Builder, princípios SOLID como responsabilidade única e inversão de dependência, e melhores práticas para APIs como uso de URIs amigáveis e comunicação stateless.
O documento discute os principais conceitos de orientação a objetos em Java, incluindo:
1) A importância de projetar software para suportar mudanças solicitadas pelos usuários;
2) Exemplos de como modelar classes como Conta e Cliente em um sistema bancário;
3) Conceitos como objetos, classes, métodos, pacotes e nomenclatura de pacotes.
O documento discute refatoração de código. Refatoração é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo. O documento descreve vários tipos de problemas de código ("mau cheiro") que podem ser resolvidos através de refatorações como extrair métodos, remover duplicação de código e consolidar hierarquias de classes.
Baixo acoplamento e alta coesão no paradigma Orientado a ObjetosPaulo Vitor
O documento discute princípios de orientação a objetos como baixo acoplamento, alta coesão, SOLID e encapsulamento. Apresenta problemas como propagação de mudanças e dificuldade de manutenção quando esses princípios não são seguidos, além de soluções como aplicar SRP, OCP, ISP e DIP. Benefícios de código com boa coesão e baixo acoplamento também são descritos.
Em um mundo cada vez mais digital, a segurança da informação tornou-se essencial para proteger dados pessoais e empresariais contra ameaças cibernéticas. Nesta apresentação, abordaremos os principais conceitos e práticas de segurança digital, incluindo o reconhecimento de ameaças comuns, como malware e phishing, e a implementação de medidas de proteção e mitigação para vazamento de senhas.
Design Pattern: Pending Objects com exemplosDanilo Pinotti
Apresentação sobre o padrão de projeto Pending Objects, com exemplos práticos e discussão sobre suas aplicações.
Aprenda mais sobre um dos padrões utilizados no core do Laravel
Este documento fornece uma introdução sobre os palestrantes e os tópicos que serão abordados no workshop "Do Zero à Produção". Resume os seguintes pontos essenciais:
1) Apresenta os palestrantes Camila Souza, Danilo Pinotti e Fernanda Larocca e suas experiências;
2) Lista os principais tópicos que serão discutidos, incluindo planejamento, desenvolvimento e deploy;
3) Explica brevemente que as melhores práticas de Scrum serão adotadas, como sprints,
O documento discute opções gratuitas para hospedagem de sites estáticos, incluindo Github Pages, Firebase, Cloudflare, Netlify e Vercel. Ele também explica o que são sites estáticos, como desenvolvê-los e como funciona o deploy.
O documento discute como utilizar componentes dentro de outros componentes no Vue.js, abordando os tópicos de escopo de componentes, configuração de componentes filhos via props e comunicação entre componentes via eventos. Props são usadas para passar dados de um componente pai para um filho, enquanto eventos permitem que um filho comunique algo de volta para o pai.
A apresentação introduz o framework Vue.js, explicando que ele é progressivo e permite criar interfaces incrementais e aplicativos de página única. Também discute os principais conceitos como componentes, binding de dados, ecossistema Vue e próximos passos como eventos, loops e propriedades computadas.
Minicurso ministrado durante a semana acadêmica de TSI (UTFPR/Guarapuava) que introduz as pessoas ao mundo das Expressões Regulares (REGEX).
Este minicurso foi produzido e apresentado por mim juntamente com Matheus Mazepa.
O documento apresenta um minicurso sobre o sistema de controle de versão Git. Resume os principais tópicos a serem abordados como instalação, primeiros passos, gerenciamento de índice, branches, stashes e boas práticas. O objetivo é ensinar conceitos básicos e fluxos de trabalho com o Git.
O documento apresenta um minicurso sobre o sistema de controle de versão Git. Resume os principais tópicos a serem abordados como instalação, conceitos básicos, áreas de trabalho, commits, branches, tags e boas práticas. Fornece também informações sobre o palestrante e links para referências adicionais.
Talk sobre testes automatizados. Parte 1/2Danilo Pinotti
O documento discute testes automatizados, destacando que seu objetivo é simplificar o esforço de testes manuais através de scripts programados. Ele explica que testes automatizados reduzem tempo e custos de testes, aumentam qualidade e retorno do investimento. Alguns tipos de testes automatizados mencionados são testes unitários, de integração e de interface.
O documento apresenta os conceitos básicos do framework Vue.js, incluindo que ele é um framework progressivo para construção de interfaces, pode ser usado para criar aplicações de página única e tem bibliotecas como Vue CLI, Vue DevTools e Vue Router. Também discute setup inicial com Vue CLI, componentes simples em Vue e binding de dados.
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Danilo Pinotti
O documento discute a comunicação entre componentes em Vue.js, explicando que props são usadas para passar dados de um componente pai para um filho, enquanto eventos permitem que um filho comunique algo de volta para o pai. Componentes podem ter escopo global ou local. Configuração de componentes filhos é feita principalmente via props.
Este documento discute o que são Helpers no Laravel e fornece exemplos de alguns Helpers comuns, como array_get, data_get, head(), last() e dd(). Também explica como criar seus próprios Helpers e melhores práticas ao fazê-lo, como garantir que sejam reutilizáveis e não sobrescrevam funções existentes.
Nestes slides apresento algumas técnicas utilizadas para deixar aplicações Laravel mais rápidas. Muitas destas técnicas precisam ser utilizadas com cuidado.
Existem alguns trechos de código inspirados na palestra de cache do Zizaco
2. Object Calisthenics
- Introduzido por Jeff Bay no livro Thoughtworks Anthology
- Conjunto de boas práticas e regras de programação
- Visa melhorar do código a sua:
- Qualidade
- Manutenabilidade
- Legibilidade
- Testabilidade
- Compreensão
3. Object Calisthenics: 9 Regras
1. Only One Level Of Indentation Per Method
2. Don’t Use The ELSE Keyword
3. Wrap All Primitives And Strings
4. First Class Collections
5. One Dot Per Line
6. Don’t Abbreviate
7. Keep All Entities Small
8. No Classes With More Than Two Instance Variables
9. No Getters/Setters/Properties
7. 1. Apenas UM nível de indentação por método
(forma 1)
8. 1. Apenas UM nível de indentação por método
(forma 2)
9. 2. Não utilizar ELSE
- Evitar o máximo possível a utilização do “ELSE”.
- O “ELSE”, junto com mais níveis de indentação, aumenta a
quantidade de “caminhos” de execução do código.
- Para evitar o ELSE podemos aplicar alguns conceitos e
práticas como:
- Polimorfismo
- Early Return
- Inversão de condicional
16. 6. Não abreviar
- Não abreviar nomes de variáveis e métodos
- Não utilizar nomes com significado implícito ou piada interna
17. 7. Mantenha todas as entidades pequenas
- Classes com no máximo 50 linhas (ou uma quantidade pré
estipulada dentro da empresa, por exemplo, 200)
- Objetivo principal de separar bem as responsabilidades por
classes
18. 8. Não ter mais de duas instâncias de variável
por classe
- Alta coesão e princípio da responsabilidade única
- Sugestão: Utilizar esta regra como métrica
Fonte: https://williamdurand.fr/2013/06/03/object-calisthenics/#8-no-classes-with-more-than-two-instance-variables
19. 9. Não utilizar
Getters e Setters
- Polêmico
- Este princípio visa encapsular
regras associadas a um objeto à
ele mesmo.