O documento resume as orientações do método Object Calisthenics para escrever códigos simples e de alta qualidade. As orientações incluem: 1) usar apenas um nível de identação por método; 2) evitar usar a palavra-chave "else"; 3) encapsular tipos primitivos se tiverem comportamento.
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
O documento apresenta uma série de slides de uma palestra sobre boas práticas de programação PHP. Os principais tópicos abordados incluem: Clean Code, princípios SOLID, Object Calisthenics e UML. O objetivo é ensinar técnicas para produzir código PHP mais legível, manutenível e testável.
Apresentação ministrada em 27/09/2011 no Tribeca Pub em São Paulo.
Object Calisthenics são exercícios que podem ser praticados com o objetivo de melhor
O documento discute o desafio de testar integrações com serviços externos através de um proxy, e apresenta uma solução utilizando um servidor HTTP minimalista implementado com AnyEvent para simular respostas de um proxy durante testes.
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
O documento descreve os principais tipos de dados e variáveis em PHP, incluindo escalares como booleanos, inteiros e strings, compostos como arrays e objetos, e tipos de variáveis como locais, globais e superglobais. Também explica operadores aritméticos, lógicos e de atribuição usados com variáveis.
O documento resume os principais conceitos de orientação a objetos em PHP, incluindo: (1) definição de classes e instanciação de objetos, (2) herança, que permite classes filhas herdar atributos e métodos de classes pai, e (3) encapsulamento, que esconde o estado de um objeto e requer acesso via métodos.
O documento apresenta um exemplo de como implementar injeção de dependência em PHP usando anotações em propriedades para definir as dependências. É mostrado como parsear as anotações para obter as dependências de uma classe, verificar se elas existem em um container e injetá-las no objeto. Isso permite construir objetos sem precisar instanciar diretamente suas dependências.
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
Este documento fornece um resumo das principais mudanças introduzidas na versão 7 do PHP. Em três frases ou menos:
1) Apresenta quebras de compatibilidade e novos recursos como operadores, tipagem escalar, classes anônimas e palavras-chave. 2) Descreve melhorias internas como árvore de sintaxe abstrata, suporte a 64 bits, gerenciamento de memória e desempenho. 3) Menciona o roadmap do PHP.NEXT para evoluir ainda mais a linguagem.
PHP para Adultos: Clean Code e Object CalisthenicsGuilherme Blanco
O documento apresenta uma série de slides de uma palestra sobre boas práticas de programação PHP. Os principais tópicos abordados incluem: Clean Code, princípios SOLID, Object Calisthenics e UML. O objetivo é ensinar técnicas para produzir código PHP mais legível, manutenível e testável.
Apresentação ministrada em 27/09/2011 no Tribeca Pub em São Paulo.
Object Calisthenics são exercícios que podem ser praticados com o objetivo de melhor
O documento discute o desafio de testar integrações com serviços externos através de um proxy, e apresenta uma solução utilizando um servidor HTTP minimalista implementado com AnyEvent para simular respostas de um proxy durante testes.
LabMM4 (T11 - 12/13) - PHP - Tipos de dados e variáveisCarlos Santos
O documento descreve os principais tipos de dados e variáveis em PHP, incluindo escalares como booleanos, inteiros e strings, compostos como arrays e objetos, e tipos de variáveis como locais, globais e superglobais. Também explica operadores aritméticos, lógicos e de atribuição usados com variáveis.
O documento resume os principais conceitos de orientação a objetos em PHP, incluindo: (1) definição de classes e instanciação de objetos, (2) herança, que permite classes filhas herdar atributos e métodos de classes pai, e (3) encapsulamento, que esconde o estado de um objeto e requer acesso via métodos.
O documento apresenta um exemplo de como implementar injeção de dependência em PHP usando anotações em propriedades para definir as dependências. É mostrado como parsear as anotações para obter as dependências de uma classe, verificar se elas existem em um container e injetá-las no objeto. Isso permite construir objetos sem precisar instanciar diretamente suas dependências.
A criação de uma loja virtual não é uma tarefa realizada apenas por desenvolvedores experientes e com um currículo extenso. Michael, que desenvolve, junto com o UOL, pacotes e soluções para a plataforma de pagamento digital PagSeguro vai mostrar isso ao vivo e a cores.
Palestra gratuita: E-commerce: mais fácil do que parece
Dia 12 de junho, das 10h às 13h
Local: Faculdade Impacta
Este documento fornece um resumo das principais mudanças introduzidas na versão 7 do PHP. Em três frases ou menos:
1) Apresenta quebras de compatibilidade e novos recursos como operadores, tipagem escalar, classes anônimas e palavras-chave. 2) Descreve melhorias internas como árvore de sintaxe abstrata, suporte a 64 bits, gerenciamento de memória e desempenho. 3) Menciona o roadmap do PHP.NEXT para evoluir ainda mais a linguagem.
Este documento fornece um resumo sobre o uso de referências em Perl. As principais informações apresentadas são:
1) Referências permitem acessar e modificar variáveis complexas como arrays e hashes;
2) São criadas usando o operador \ antes da variável ou usando colchetes [] para arrays e chaves {} para hashes;
3) São acessadas desfazendo a referência usando @{REF}, $REF->[i] ou $$REF.
O documento descreve a biblioteca de validação Respect\Validation para PHP, que fornece mais de 100 regras de validação de forma fluente. Exemplos mostram como validar emails com diferentes frameworks como Zend, Symfony e Illuminate, e como a biblioteca oferece flexibilidade para customizar mensagens de erro e traduzi-las.
Partindo de um código legado com uma organização frágil e pouco reutilizável iremos aprimorá-lo de forma incremental e com foco nas regras de negócio. Utilizaremos princípios de projeto orientado a objetos para torná-lo mais fácil de testar e reutilizar deixando o seu código mais robusto e escalável.
O documento discute a linguagem de programação PHP, resumindo suas principais características em menos de 3 frases:
PHP é uma linguagem de script popular usada para desenvolvimento web, com vantagens como fácil aprendizagem e código aberto. A linguagem é influenciada por C e usa tags como <?php ?> para executar scripts PHP em páginas HTML.
Criando APIs usando o micro-framework RespectIvan Rosolen
O documento apresenta como criar uma API RESTful usando o micro-framework PHP Respect. Ele descreve como instalar as dependências do Respect como Config, Relational e Validation e configurar um projeto de exemplo chamado RestBeer para gerenciar recursos de cerveja. Também mostra como implementar rotas para listar, criar, atualizar e remover cervejas usando validação e mapeamento de objetos relacionais.
1) O documento discute o uso da biblioteca cURL no PHP para fazer requisições HTTP e extrair dados de sites e APIs.
2) São apresentados exemplos básicos de requisições GET e POST, além de opções como cookies e cabeçalhos para simular requisições do navegador.
3) Também são discutidas técnicas avançadas como crawling paralelo, scraping e captura de tela com Selenium.
O documento apresenta uma introdução a JavaScript, destacando que é uma linguagem de programação criada para interagir com páginas HTML e que hoje também é usada em aplicações desktop, móveis e servidores. Apresenta também bibliotecas e conceitos importantes como jQuery, HTML DOM e manipulação de elementos e eventos.
O documento discute refatoração de código. Apresenta alguns pontos sobre o que não é considerado refatoração, como otimização e correção de bugs. Também aborda motivação para refatoração como código difícil de entender e backlog de bugs crescente. Por fim, exemplifica algumas ferramentas para análise e refatoração de código como PHPMD, PHPUnit e PHPCS.
O documento introduz os principais conceitos de JavaScript para desenvolvimento de aplicações web, incluindo: (1) JavaScript é uma linguagem interpretada executada no navegador, (2) orientação a objetos onde elementos da página são tratados como objetos, (3) manipulação de objetos através de propriedades e métodos.
O documento descreve a evolução da linguagem PHP desde sua criação como ferramenta para geração de páginas dinâmicas até se tornar uma das linguagens de programação mais populares para desenvolvimento web. Ele explica como o PHP surgiu para permitir a geração de páginas HTML dinâmicas e como foi se desenvolvendo ao longo dos anos com novas versões que acrescentaram recursos e melhorias.
O documento resume os principais tópicos sobre Perl moderno apresentados em 5 dias de treinamento. Os tópicos incluem expressões regulares, tratamento de exceções, módulos, orientação a objetos, bancos de dados e desenvolvimento web.
O documento apresenta um resumo sobre coleta de dados na web (web crawling e scraping) utilizando PHP. Aborda definições, principais pontos como robots.txt e headers, além de apresentar pseudocódigos para listagem de páginas e extração de detalhes, com armazenamento em banco de dados MySQL.
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
O documento apresenta uma aula introdutória sobre PHP. Ele discute a instalação do ambiente de desenvolvimento com XAMPP, editores de código, e introduz conceitos básicos como variáveis, constantes, estruturas de controle e funções.
1) O documento apresenta exemplos de estruturas de controle e loops em PHP como IF/ELSE, WHILE, FOR, FOREACH e SWITCH.
2) Inclui também exemplos de inclusão de arquivos PHP através de INCLUDE e REQUIRE.
3) Demonstra conceitos de programação orientada a objetos em PHP como classes, métodos, construtores e destrutores.
O documento discute formulários em HTML e validação de dados com JavaScript. Aborda elementos como <form>, propriedades como action e method, e controles como input, select e textarea. Apresenta expressões regulares para validar campos como CPF, CEP, e-mail e senhas. Explica como recuperar dados, mascarar valores e localizar termos em strings usando expressões regulares.
O documento apresenta um resumo sobre Perl Moderno, abordando tópicos como:
1) Expressões regulares, com explicações sobre os operadores m//, modificadores e quantificadores;
2) Tratamento de exceções com Try::Tiny e tratamento de erros;
3) Manipulação de dados como arquivos, datas e logs.
Twig é uma linguagem de template para PHP que permite separar a lógica da apresentação. Ela oferece recursos como loops, condicionais, herança de templates, macros e filtros para formatação de dados. Sua sintaxe limpa e expressiva facilita a manutenção e legibilidade do código da view.
O documento apresenta uma aula sobre a linguagem Perl. A aula aborda tópicos como variáveis escalares, manipulação de números e strings, leitura e escrita em arquivos e tela, arrays, hashes, execução de programas externos e manipulação de dados em arrays e hashes.
O documento apresenta uma introdução sobre deep learning ministrada por Otávio Calaça Xavier. A apresentação inclui exemplos de aplicações de deep learning, categorias de aprendizagem de máquina, as primeiras redes neurais artificiais, o problema do gradiente desaparecendo, máquinas de Boltzmann restritas e redes de crenças profundas, redes convolucionais e ferramentas e referências sobre o tema.
O documento discute a aplicação da lógica fuzzy nos dados RDF da Web Semântica para fornecer resultados mais precisos às consultas. Ele propõe representar predicados como conjuntos fuzzy e objetos como graus de pertinência para permitir inferências dedutivas e aprendizado indutivo baseado em exemplos.
Este documento fornece um resumo sobre o uso de referências em Perl. As principais informações apresentadas são:
1) Referências permitem acessar e modificar variáveis complexas como arrays e hashes;
2) São criadas usando o operador \ antes da variável ou usando colchetes [] para arrays e chaves {} para hashes;
3) São acessadas desfazendo a referência usando @{REF}, $REF->[i] ou $$REF.
O documento descreve a biblioteca de validação Respect\Validation para PHP, que fornece mais de 100 regras de validação de forma fluente. Exemplos mostram como validar emails com diferentes frameworks como Zend, Symfony e Illuminate, e como a biblioteca oferece flexibilidade para customizar mensagens de erro e traduzi-las.
Partindo de um código legado com uma organização frágil e pouco reutilizável iremos aprimorá-lo de forma incremental e com foco nas regras de negócio. Utilizaremos princípios de projeto orientado a objetos para torná-lo mais fácil de testar e reutilizar deixando o seu código mais robusto e escalável.
O documento discute a linguagem de programação PHP, resumindo suas principais características em menos de 3 frases:
PHP é uma linguagem de script popular usada para desenvolvimento web, com vantagens como fácil aprendizagem e código aberto. A linguagem é influenciada por C e usa tags como <?php ?> para executar scripts PHP em páginas HTML.
Criando APIs usando o micro-framework RespectIvan Rosolen
O documento apresenta como criar uma API RESTful usando o micro-framework PHP Respect. Ele descreve como instalar as dependências do Respect como Config, Relational e Validation e configurar um projeto de exemplo chamado RestBeer para gerenciar recursos de cerveja. Também mostra como implementar rotas para listar, criar, atualizar e remover cervejas usando validação e mapeamento de objetos relacionais.
1) O documento discute o uso da biblioteca cURL no PHP para fazer requisições HTTP e extrair dados de sites e APIs.
2) São apresentados exemplos básicos de requisições GET e POST, além de opções como cookies e cabeçalhos para simular requisições do navegador.
3) Também são discutidas técnicas avançadas como crawling paralelo, scraping e captura de tela com Selenium.
O documento apresenta uma introdução a JavaScript, destacando que é uma linguagem de programação criada para interagir com páginas HTML e que hoje também é usada em aplicações desktop, móveis e servidores. Apresenta também bibliotecas e conceitos importantes como jQuery, HTML DOM e manipulação de elementos e eventos.
O documento discute refatoração de código. Apresenta alguns pontos sobre o que não é considerado refatoração, como otimização e correção de bugs. Também aborda motivação para refatoração como código difícil de entender e backlog de bugs crescente. Por fim, exemplifica algumas ferramentas para análise e refatoração de código como PHPMD, PHPUnit e PHPCS.
O documento introduz os principais conceitos de JavaScript para desenvolvimento de aplicações web, incluindo: (1) JavaScript é uma linguagem interpretada executada no navegador, (2) orientação a objetos onde elementos da página são tratados como objetos, (3) manipulação de objetos através de propriedades e métodos.
O documento descreve a evolução da linguagem PHP desde sua criação como ferramenta para geração de páginas dinâmicas até se tornar uma das linguagens de programação mais populares para desenvolvimento web. Ele explica como o PHP surgiu para permitir a geração de páginas HTML dinâmicas e como foi se desenvolvendo ao longo dos anos com novas versões que acrescentaram recursos e melhorias.
O documento resume os principais tópicos sobre Perl moderno apresentados em 5 dias de treinamento. Os tópicos incluem expressões regulares, tratamento de exceções, módulos, orientação a objetos, bancos de dados e desenvolvimento web.
O documento apresenta um resumo sobre coleta de dados na web (web crawling e scraping) utilizando PHP. Aborda definições, principais pontos como robots.txt e headers, além de apresentar pseudocódigos para listagem de páginas e extração de detalhes, com armazenamento em banco de dados MySQL.
Aula 02 - Introdução ao PHP - Programação WebDalton Martins
O documento apresenta uma aula introdutória sobre PHP. Ele discute a instalação do ambiente de desenvolvimento com XAMPP, editores de código, e introduz conceitos básicos como variáveis, constantes, estruturas de controle e funções.
1) O documento apresenta exemplos de estruturas de controle e loops em PHP como IF/ELSE, WHILE, FOR, FOREACH e SWITCH.
2) Inclui também exemplos de inclusão de arquivos PHP através de INCLUDE e REQUIRE.
3) Demonstra conceitos de programação orientada a objetos em PHP como classes, métodos, construtores e destrutores.
O documento discute formulários em HTML e validação de dados com JavaScript. Aborda elementos como <form>, propriedades como action e method, e controles como input, select e textarea. Apresenta expressões regulares para validar campos como CPF, CEP, e-mail e senhas. Explica como recuperar dados, mascarar valores e localizar termos em strings usando expressões regulares.
O documento apresenta um resumo sobre Perl Moderno, abordando tópicos como:
1) Expressões regulares, com explicações sobre os operadores m//, modificadores e quantificadores;
2) Tratamento de exceções com Try::Tiny e tratamento de erros;
3) Manipulação de dados como arquivos, datas e logs.
Twig é uma linguagem de template para PHP que permite separar a lógica da apresentação. Ela oferece recursos como loops, condicionais, herança de templates, macros e filtros para formatação de dados. Sua sintaxe limpa e expressiva facilita a manutenção e legibilidade do código da view.
O documento apresenta uma aula sobre a linguagem Perl. A aula aborda tópicos como variáveis escalares, manipulação de números e strings, leitura e escrita em arquivos e tela, arrays, hashes, execução de programas externos e manipulação de dados em arrays e hashes.
O documento apresenta uma introdução sobre deep learning ministrada por Otávio Calaça Xavier. A apresentação inclui exemplos de aplicações de deep learning, categorias de aprendizagem de máquina, as primeiras redes neurais artificiais, o problema do gradiente desaparecendo, máquinas de Boltzmann restritas e redes de crenças profundas, redes convolucionais e ferramentas e referências sobre o tema.
O documento discute a aplicação da lógica fuzzy nos dados RDF da Web Semântica para fornecer resultados mais precisos às consultas. Ele propõe representar predicados como conjuntos fuzzy e objetos como graus de pertinência para permitir inferências dedutivas e aprendizado indutivo baseado em exemplos.
O documento descreve a Web Semântica como a terceira geração da Web, que visa permitir que computadores interpretem o significado do conteúdo da Web de forma a entender melhor as informações. Ele explica como a semântica pode ser garantida na Web através de estruturas como RDF, ontologias e identificadores URIs, e menciona alguns padrões e tecnologias já em uso como RDFa, Microformatos, OWL e SPARQL.
Roteiro
- O que é Entrega Contínua e DevOps?
- O que é Integração Contínua?
- Erros Comuns em Entrega de Software;
- Princípios de Entrega Contínua;
- Práticas em Arquitetura de Software;
Este documento descreve a Web Semântica como a terceira geração da Web, que permite que computadores interpretem o significado do conteúdo da Web através de anotações semânticas. Ele explica como a estrutura RDF, identificadores URIs, ontologias e linguagens como SPARQL fornecem semântica aos dados da Web. Finalmente, exemplos como o The Wall Street Journal são apresentados como quem já está usando a Web Semântica.
Palestra ministrada no V FGSL/I SGSL em maio de 2008 sobre os principais padrões de desenvolvimento utilizados para web e seus usos no padrão de arquitetura MVC.
O documento discute como integrar a Web Semântica e a Web Social usando PHP. Ele explica o que é a Web Semântica e como garantir semântica na Web, além de como interpretar o significado dos dados usando identificação, definição, estrutura e consultas. Também aborda serviços Web, redes sociais online, ferramentas PHP e conclusões sobre como manipular padrões da Web Semântica e acessar recursos de redes sociais.
This document introduces the CakePHP framework. It discusses MVC architecture and its advantages, describes what CakePHP is and why it should be used, explains how MVC is implemented in CakePHP through models, views and controllers, and outlines the directory structure and routing in CakePHP applications.
O processo de entrega de software envolve várias etapas e a participação de todas as áreas de uma empresa: do comercial ao desenvolvimento. Com o amadurecimento da entrega contínua de software, surgiu o termo DevOps que destina-se a descrever uma nova cultura para colaboração de todas as equipes na entrega do software. Essa palestra destina-se a abordar os princípios da entrega contínua e as práticas utilizadas em DevOps.
O documento introduz a API do Google Maps, descrevendo o que é o Google Maps e sua API, como começar a usá-la obtendo uma chave da API, os principais recursos como controles, movimento, animação, eventos, overlays, marcadores, geocodificador e rotas. Também fornece referências para documentação, blogs e grupos de discussão sobre o assunto.
Este documento introduz conceitos básicos de programação orientada a objetos em PHP, incluindo classes, objetos, atributos, métodos, herança, encapsulamento e AJAX. O documento explica como o objeto XMLHttpRequest pode ser usado para fazer requisições assíncronas e atualizar partes de uma página sem recarregá-la completamente.
Como fazer dispositivos para a Internet das Coisas usando Raspberry e programando em Python. Além disso, disponibilizar integrações Web a partir do Node.js e o Express integrados ao Python.
O documento discute a Web Semântica e bancos de dados NoSQL. Primeiro, explica o que é a Web Semântica, como garantir semântica na Web através de identificação, definição e estrutura de dados, e quem já está usando essa tecnologia. Em seguida, descreve bancos de dados orientados a grafos como Neo4j e como eles podem representar dados da Web Semântica e executar consultas SPARQL.
O documento apresenta os conceitos e vantagens do desenvolvimento web em três camadas utilizando PHP, MVC e AJAX. Aborda tópicos como orientação a objetos, padrão MVC, bibliotecas JavaScript para AJAX e exemplos práticos de implementação.
10+ Deploys Per Day: Dev and Ops Cooperation at FlickrJohn Allspaw
Communications and cooperation between development and operations isn't optional, it's mandatory. Flickr takes the idea of "release early, release often" to an extreme - on a normal day there are 10 full deployments of the site to our servers. This session discusses why this rate of change works so well, and the culture and technology needed to make it possible.
O documento discute técnicas e boas práticas para lidar com código legado, como versionamento, testes, organização do código e programação orientada a objetos. Algumas das técnicas discutidas incluem utilizar ferramentas como Git para versionamento, Composer para gerenciamento de pacotes, PHPUnit e SimpleTest para testes, EditorConfig para padronização de estilos e CodeSniffer para análises estáticas. O documento também apresenta a técnica de "Programação Calistênica" para melhorar o design do código.
Jorge Oleques é um desenvolvedor de software com experiência em PHP e Java. Ele possui graduação em Análise e Desenvolvimento de Sistemas e está cursando pós-graduação em Engenharia de Software. O documento fornece detalhes sobre sua formação acadêmica e experiência profissional, além de contatos como e-mail, Twitter, blog e GitHub.
Removendo o cheiro ruim do seu código - SoLiSC 2011Luís Cobucci
Este documento fornece dicas para melhorar a qualidade do código removendo cheiros ruins, incluindo escolher nomes descritivos, criar métodos pequenos com uma única responsabilidade, usar comentários com moderação, aplicar padrões de codificação e realizar refatorações regularmente. O objetivo é produzir código limpo, de fácil manutenção e compreensão.
Testes unitários como ferramentas de design de códigoPaula Grangeiro
A apresentação discute testes unitários como ferramentas de design de código, mostrando como testes podem ser usados para isolar componentes e validar fluxos de sucesso e falha. Ela também fornece dicas sobre nomear testes de forma descritiva e usar mocks para isolar dependências.
Clean Code e Object Calisthenics - Aplicados no PHPRafael Neris
Palestra realizada no Meetup Total PHP sobre Clean Code e Object Calisthenics aplicados no PHP.
Nesta palestra são apresentados conceitos importantes para manter seu código limpo e aplicar técnicas de refactoring para manter seu código organizado e performatico.
1) O documento apresenta um curso sobre PHP, MySQL e MVC, abordando conceitos como linguagem, framework, banco de dados e arquitetura MVC. 2) É apresentado um exemplo simples de implementação de MVC em PHP sem frameworks. 3) O documento também discute conceitos da linguagem PHP como variáveis, tipos, controle de fluxo e orientação a objetos.
Este documento discute conceitos de programação orientada a objetos em Javascript para desenvolvedores acostumados com C#. Ele explica como Javascript lida com objetos dinâmicos, "classes", herança e outros conceitos usando o objeto prototype. O documento também mostra como simular classes abstratas e métodos de extensão usando prototype.
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
O documento fornece orientações sobre como melhorar o código PHP removendo más práticas e cheiros ruins. Ele discute conceitos como nomenclatura clara, funções e métodos pequenos com única responsabilidade, tratamento de erros com exceptions, classes coesas e refatoração constante para manter o código limpo.
JavaScript é a linguagem do browser e mais popular do mundo. Foi criada em 1995 para o Netscape e adotada pela Microsoft em 1996. Apesar de sua má fama inicial devido a problemas como variáveis globais e parseInt, JavaScript possui "partes boas" como funções como valores, objetos dinâmicos e JSON que a tornaram uma linguagem importante.
O documento discute vários aspectos importantes do teste de software, incluindo: (1) escrever testes antes de codificar para melhorar o design e a testabilidade do código; (2) evitar acoplamentos que dificultam os testes, como dependências externas e referências estáticas; (3) dividir responsabilidades em unidades menores para facilitar a criação de cenários de teste.
O documento descreve as principais características das versões do C#: C# 1.0 introduziu código gerenciado e programação declarativa; C# 2.0 incluiu genéricos; C# 3.0 trouxe LINQ e query integrada à linguagem; e C# 4.0 expandiu a programação dinâmica com parâmetros opcionais, argumentos nomeados e co-contravariância de tipos genéricos.
1) O documento discute o Domain-Driven Design (DDD), uma abordagem focada no domínio e na lógica de negócios.
2) As duas principais premissas do DDD são desenvolver um modelo que reflita o domínio e usar uma linguagem ubíqua compartilhada entre os especialistas de negócios e a equipe de desenvolvimento.
3) O DDD enfatiza a separação de camadas com base no domínio, utilizando conceitos como entidades, valores, agregações, serviços, fábricas e repositó
O documento fornece instruções passo-a-passo para começar um negócio de e-commerce, abordando tópicos como escolha de plataforma, controle de versão, pagamentos online e publicação do site.
O documento apresenta uma introdução à linguagem JavaScript e à stack MEAN (MongoDB, Express, Angular e Node.js). Em 3 frases:
1) Apresenta os conceitos básicos de JavaScript como variáveis, tipos, operadores, funções e objetos.
2) Explica o que é Node.js e como usar JavaScript no backend para construir aplicações web fullstack.
3) Introduz os principais componentes da stack MEAN para desenvolvimento de aplicações web e mobile usando MongoDB, Express, Angular e Node.
1. O documento apresenta uma introdução à linguagem JavaScript, discutindo sua estrutura, tipos e como começar a programar na linguagem.
2. JavaScript é uma linguagem de programação dinamicamente tipada e baseada em protótipos usada principalmente para desenvolvimento web front-end.
3. A linguagem suporta tipos primitivos como números, strings e booleanos e tipos de referência como arrays e objetos.
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
Palestra sobre Javascript realizada no primeiro ciclo do Plano de Geração de Conhecimento realizado em outubro de 2013, no LEMAF - Universidade Federal de Lavras.
O Plano de geração de conhecimento é um trabalho realizado para tutoria de desenvolvedores com estagiários no estudo de tecnologias, com o objetivo de disseminação de conhecimento.
Palestra ministrada por Fernando Simeone, Carlos Eduardo Chessi Melo, Eduardo Assis da Silva e José Henrique Santos Andrade .
### Atualização 20/02/2015
Palestra melhorada, com algumas correções. Reapresentada por Fernando Simeone e Carlos Eduardo Chessi Melo na SETI (Semana de Tecnologia da Informação) na Universidade Federal de Lavras.
O documento fornece informações sobre o desenvolvimento de extensões PHP. Em 3 frases:
Apresenta os conceitos básicos para criar extensões PHP nativas, incluindo como compilar extensões, gerar esqueletos, lidar com tipos de dados e funções. Também discute recursos, configurações .ini e orientação a objetos para extensões.
Semelhante a Object Calisthenics: relaxe e escreva códigos simples (20)
This document describes a framework for implementing semantic queries in online social networks. The framework uses Semantic Web technologies to represent relationships between users in social networks as semantic triples. It extracts data from Facebook, converts it to an RDF representation using ontologies like FOAF and SIOC, and stores it in a semantic repository. This allows complex semantic queries to be run over the social network data to discover hidden relationships between users.
Este documento discute a lógica fuzzy aplicada a sistemas de apoio a decisão. Apresenta os conceitos-chave da lógica fuzzy como conjuntos fuzzy, classificadores e controladores fuzzy. Também descreve ferramentas como jFuzzylogic e Fuzzyengine que podem ser usadas para implementar sistemas fuzzy. Por fim, fornece exemplos de aplicações da lógica fuzzy em diversas áreas como metrô, semáforos e simuladores de vôo.
Este documento fornece um resumo sobre abstração de banco de dados com PHP Doctrine. Ele discute o que é ORM e Doctrine, apresentando seus principais recursos como models, DQL, fixtures e caching. O documento também fornece um exemplo prático de como configurar e usar o Doctrine.
Palestra apresentada no CEPA em Anápolis-GO por mim e o Almir Neto, mostrando a cena tecnológica em que o PHP encontra-se, e o que podemos esperar para o futuro.
O documento apresenta uma introdução às redes neurais artificiais e como implementá-las com PHP. Ele discute redes neurais biológicas e artificiais, perceptrons, funções de ativação, aprendizado e a biblioteca FANN para PHP.
Classe V: Educação à distância com Videoconferência no MoodleOtávio Calaça Xavier
Apresentação, realizada no Latinoware 2008, sobre um módulo de videoconferência para o Moodle, desenvolvido somente com ferramentas livres e aprimorado por alunos do CEFET Goiás.
As classes de modelagem podem ser comparadas a moldes ou
formas que definem as características e os comportamentos dos
objetos criados a partir delas. Vale traçar um paralelo com o projeto de
um automóvel. Os engenheiros definem as medidas, a quantidade de
portas, a potência do motor, a localização do estepe, dentre outras
descrições necessárias para a fabricação de um veículo
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.
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...Faga1939
Este artigo tem por objetivo apresentar como ocorreu a evolução do consumo e da produção de energia desde a pré-história até os tempos atuais, bem como propor o futuro da energia requerido para o mundo. Da pré-história até o século XVIII predominou o uso de fontes renováveis de energia como a madeira, o vento e a energia hidráulica. Do século XVIII até a era contemporânea, os combustíveis fósseis predominaram com o carvão e o petróleo, mas seu uso chegará ao fim provavelmente a partir do século XXI para evitar a mudança climática catastrófica global resultante de sua utilização ao emitir gases do efeito estufa responsáveis pelo aquecimento global. Com o fim da era dos combustíveis fósseis virá a era das fontes renováveis de energia quando prevalecerá a utilização da energia hidrelétrica, energia solar, energia eólica, energia das marés, energia das ondas, energia geotérmica, energia da biomassa e energia do hidrogênio. Não existem dúvidas de que as atividades humanas sobre a Terra provocam alterações no meio ambiente em que vivemos. Muitos destes impactos ambientais são provenientes da geração, manuseio e uso da energia com o uso de combustíveis fósseis. A principal razão para a existência desses impactos ambientais reside no fato de que o consumo mundial de energia primária proveniente de fontes não renováveis (petróleo, carvão, gás natural e nuclear) corresponde a aproximadamente 88% do total, cabendo apenas 12% às fontes renováveis. Independentemente das várias soluções que venham a ser adotadas para eliminar ou mitigar as causas do efeito estufa, a mais importante ação é, sem dúvidas, a adoção de medidas que contribuam para a eliminação ou redução do consumo de combustíveis fósseis na produção de energia, bem como para seu uso mais eficiente nos transportes, na indústria, na agropecuária e nas cidades (residências e comércio), haja vista que o uso e a produção de energia são responsáveis por 57% dos gases de estufa emitidos pela atividade humana. Neste sentido, é imprescindível a implantação de um sistema de energia sustentável no mundo. Em um sistema de energia sustentável, a matriz energética mundial só deveria contar com fontes de energia limpa e renováveis (hidroelétrica, solar, eólica, hidrogênio, geotérmica, das marés, das ondas e biomassa), não devendo contar, portanto, com o uso dos combustíveis fósseis (petróleo, carvão e gás natural).
Este certificado confirma que Gabriel de Mattos Faustino concluiu com sucesso um curso de 42 horas de Gestão Estratégica de TI - ITIL na Escola Virtual entre 19 de fevereiro de 2014 a 20 de fevereiro de 2014.
ATIVIDADE 1 - ADSIS - ESTRUTURA DE DADOS II - 52_2024.docx2m Assessoria
Em determinadas ocasiões, dependendo dos requisitos de uma aplicação, pode ser preciso percorrer todos os elementos de uma árvore para, por exemplo, exibir todo o seu conteúdo ao usuário. De acordo com a ordem de visitação dos nós, o usuário pode ter visões distintas de uma mesma árvore.
Imagine que, para percorrer uma árvore, tomemos o nó raiz como nó inicial e, a partir dele, comecemos a visitar todos os nós adjacentes a ele para, só então, começar a investigar os outros nós da árvore. Por outro lado, imagine que tomamos um nó folha como ponto de partida e caminhemos em direção à raiz, visitando apenas o ramo da árvore que leva o nó folha à raiz. São maneiras distintas de se visualizar a mesma árvore.
Tome a árvore binária a seguir como base para realizar percursos que partirão sempre da raiz (nó 1).
Figura 1 - Árvore binária
Fonte: OLIVEIRA, P. M. de; PEREIRA, R. de L. Estruturas de Dados II. Maringá: UniCesumar, 2019. p. .
Com base na árvore anterior, responda quais seriam as ordens de visitação, partindo da raiz:
a) Percorrendo a árvore pelo algoritmo Pré-Ordem.
b) Percorrendo a árvore pelo algoritmo Em-Ordem.
c) Percorrendo a árvore pelo algoritmo Pós-Ordem.
Obs.: como resposta, informar apenas os caminhos percorridos em cada Situação:
a) Pré-ordem: X - Y - Z.
b) Em-ordem: X - Y - Z.
c) Pós-ordem: X - Y - Z.
ATENÇÃO!
- Você poderá elaborar sua resposta em um arquivo de texto .txt e, após revisado, copiar e colar no campo destinado à resposta na própria atividade em seu STUDEO.
- Plágios e cópias indevidas serão penalizados com nota zero.
- As perguntas devem ser respondidas de forma adequada, ou seja, precisam ser coerentes.
- Antes de enviar sua atividade, certifique-se de que respondeu todas as perguntas e não se esqueceu nenhum detalhe. Após o envio, não são permitidas alterações. Por favor, não insista.
- Não são permitidas correções parciais no decorrer do módulo, isso invalida seu processo avaliativo. A interpretação da atividade faz parte da avaliação.
- Atenção ao prazo de entrega da atividade. Sugerimos que envie sua atividade antes do prazo final para evitar transtornos e lentidão nos servidores. Evite o envio de atividade em cima do prazo.
A linguagem C# aproveita conceitos de muitas outras linguagens,
mas especialmente de C++ e Java. Sua sintaxe é relativamente fácil, o que
diminui o tempo de aprendizado. Todos os programas desenvolvidos devem
ser compilados, gerando um arquivo com a extensão DLL ou EXE. Isso torna a
execução dos programas mais rápida se comparados com as linguagens de
script (VBScript , JavaScript) que atualmente utilizamos na internet
Object Calisthenics: relaxe e escreva códigos simples
1. Object Calisthenics:
relaxe e escreva
códigos simples
Goiânia, 23 de Março de 2013
Otávio Calaça Xavier
otaviocx@gmail.com
2. Criado em dezembro de 2007;
Lista de Discussão:
− Mais de 650 membros.
Projetos:
− Encontros mensais;
− Softwares Livres em PHP;
− Networking.
Eventos:
• FLISOL, FGSL, Latinoware, Conisli, CONSOFT, PHP
Conference Brasil, FISL, Join Community …
Precisamos de Colaboradores!!!
Grupo de Desenvolvedores
PHP de Goiás
www.gophp.org.br
4. 4
Object Calisthenics: relaxe e escreva códigos simples
Por que meu código é ruim?
• Ele é legível?
• Ele é testável?
• Ele é de fácil manutenção?
• Ele é reusável?
5. 5
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics
• Calistenia = exercício de relaxamento;
ginástica rítimica;
• Uma variedade de exercícios simples e
rítimicos para alcançar melhor qualidade
de código e OO.
6. 6
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics
• Jeff Bay em The
ThoughtWorks Anthology
definiu o termo Object
Calisthenics para a
computação, como o
conjunto de exercícios
para a programação
Orientada a Objetos.
7. 7
Object Calisthenics: relaxe e escreva códigos simples
Object Calisthenics
• Orientações:
– Nove (9) orientações simples e que
podem ser utilizadas em qualquer
linguagem orientada a objetos.
9. 9
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if(!in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
return $valido;
}
10. 10
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if(!in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
return $valido;
}
11. 11
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if(!in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
return $valido;
}
0
1
2
3
12. 12
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$validacao = $this->validarProdutoIndividual($produto, $camposRequeridos);
if( ! $validacao) { $valido = false; }
}
return $valido;
}
public function validarProdutoIndividual($produto, $camposRequeridos) {
$valido = true;
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if( ! in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
13. 13
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$validacao = $this->validarProdutoIndividual($produto, $camposRequeridos);
if( ! $validacao) { $valido = false; }
}
return $valido;
}
public function validarProdutoIndividual($produto, $camposRequeridos) {
$valido = true;
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if( ! in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
14. 14
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$valido = true;
foreach($produtos as $produto) {
$validacao = $this->validarProdutoIndividual($produto, $camposRequeridos);
if( ! $validacao) { $valido = false; }
}
return $valido;
}
public function validarProdutoIndividual($produto, $camposRequeridos) {
$valido = true;
$campos = array_keys($produto);
foreach ($camposRequeridos as $campoRequerido) {
if( ! in_array($campoRequerido, $campos)) {
$valido = false;
}
}
}
0
1
2
0
1
2
15. 15
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
foreach($produtos as $produto) {
if( ! $this->validarProdutoIndividual($produto, $camposRequeridos)) {
return false;
}
}
return true;
}
public function validarProdutoIndividual($produto, $camposRequeridos) {
$campos = array_keys($produto);
$camposEsquecidos = array_diff($camposRequeridos, $campos);
return (count($camposEsquecidos) == 0);
}
16. 16
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
foreach($produtos as $produto) {
if( ! $this->validarProdutoIndividual($produto, $camposRequeridos)) {
return false;
}
}
return true;
}
public function validarProdutoIndividual($produto, $camposRequeridos) {
$campos = array_keys($produto);
$camposEsquecidos = array_diff($camposRequeridos, $campos);
return (count($camposEsquecidos) == 0);
}
0
1
2
17. 17
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
public function validarProdutos($produtos) {
$produtosInvalidos = array_filter($produtos, 'verificaProdutoInvalido');
return (count($produtosInvalidos) === 0);
}
public function verificaProdutoInvalido($produto) {
$camposRequeridos = array(
'nome',
'preco',
'descricao',
'tipo'
);
$campos = array_keys($produto);
$camposEsquecidos = array_diff($camposRequeridos, $campos);
return (count($camposEsquecidos) > 0);
}
18. 18
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
class Board {
...
String board() {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
buf.append(data[i][j]);
}
buf.append(“n”);
}
return buf.toString();
}
}
19. 19
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
class Board {
...
String board() {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
buf.append(data[i][j]);
}
buf.append(“n”);
}
return buf.toString();
}
}
0
1
2
20. 20
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
class Board {
...
String board() {
StringBuffer buf = new StringBuffer();
collectRows(buf);
return buf.toString();
}
void collectRows(StringBuffer buf) {
for (int i = 0; i < 10; i++) {
collectRow(buf, i);
}
}
void collectRow(StringBuffer buf, int row) {
for (int i = 0; i < 10; i++) {
Buf.append(data[row][i]);
}
buf.append(“n”);
}
}
21. 21
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO I
somente um nível de identação/recuo por método
• Benefícios:
– Maior coesão;
– Reduz a complexidade ciclomática;
– Métodos acabam fazendo apenas uma coisa, como deve
ser;
– Aumenta a reusabilidade.
23. 23
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO II
não utilize a palavra-chave else
public function login() {
$usuario = $this->input()->post('usuario');
$senha = $this->input()->post('senha');
$referencia = $this->input()->post('referencia');
if($this->usuariosModel->verificaPermissao($usuario, $senha)) {
redirect($referencia);
} else {
$this->session->setFlashData('erro', 'Usuário ou senha inválidos.');
$this->session->setFlashData('referencia', $referencia);
redirect('login');
}
}
24. 24
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO II
não utilize a palavra-chave else
public function login() {
$usuario = $this->input()->post('usuario');
$senha = $this->input()->post('senha');
$referencia = $this->input()->post('referencia');
if($this->usuariosModel->verificaPermissao($usuario, $senha)) {
redirect($referencia);
} else {
$this->session->setFlashData('erro', 'Usuário ou senha inválidos.');
$this->session->setFlashData('referencia', $referencia);
redirect('login');
}
}
25. 25
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO II
não utilize a palavra-chave else
public function login() {
$usuario = $this->input()->post('usuario');
$senha = $this->input()->post('senha');
$referencia = $this->input()->post('referencia');
if( ! $this->usuariosModel->verificaPermissao($usuario, $senha)) {
$this->session->setFlashData('erro', 'Usuário ou senha inválidos.');
$this->session->setFlashData('referencia', $referencia);
$referencia = 'login';
}
redirect($referencia);
}
26. 26
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO II
não utilize a palavra-chave else
• Benefícios:
– Ajuda a prevenir duplicação de código;
– Reduz a complexidade ciclomática;
– Faz o código ficar mais limpo, passando por um único
caminho.
28. 28
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
encapsule todos os tipos primitivos e strings
class Aluno {
private int matricula;
private boolean ativo;
private long cpf;
//...
}
29. 29
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
encapsule todos os tipos primitivos e strings
class Aluno {
private Integer matricula;
private Boolean ativo;
private Long cpf;
//...
}
30. 30
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
(ajuste)
encapsule todos os tipos
primitivos e strings, se eles
possuírem comportamento.
31. 31
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
encapsule os tipos primitivos e strings, se eles possuírem
comportamento
class UIComponent {
//...
public function repaint($animate = true) {
//...
}
}
//...
$component->repaint(false);
32. 32
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
encapsule os tipos primitivos e strings, se eles possuírem
comportamento
class UIComponent {
//...
public function repaint(Animate $animate) {
//...
}
}
class Animate {
private $animate;
public function __construct($animate = true) {
$this->animate = true;
}
}
//...
$component->repaint( new Animate(false) );
33. 33
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO III
encapsule os tipos primitivos e strings, se eles possuírem
comportamento
• Benefícios:
– Indução de Tipo;
– Encapsulamento de operações.
35. 35
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IV
(ajuste)
somente um ponto (“arrow” para
o PHP) por linha, se não for
fluente.
36. 36
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IV
somente um ponto por linha, se não for fluente
$filterChain->addFilter(new Zend_Filter_Alpha())
->addFilter(new Zend_Filter_StringToLower());
listeners->addListener(new TimeListener())
->addListener(new RestfulListener());
Não utilize:
$user->getLocation()->getCountry()->getName();
user.getAddress().getPostalConde();
$this->getRestService()->getJson($representations->find($url->getPath()));
this.getUsers().find(userId).getAddress().
37. 37
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IV
somente um ponto por linha, se não for fluente
• Benefícios:
– Legibilidade;
– Construção de testes facilitada (mocks);
– Mais fácil para depurar;
39. 39
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO V
não abrevie
• Por que você abrevia?
– Preguiça de escrever o mesmo nome várias vezes...
• Talvez isso indique duplicidade de código!
– Preguiça de escrever o nome do método muito longo...
• Talvez isso indique que o seu método faz mais de
uma coisa. Isso deve ser separado em vários
métodos ou até classes!
40. 40
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO V
não abrevie
• Benefícios:
– Comunicação mais clara;
– Facilita a busca por problemas ocultos.
42. 42
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VI
mantenha suas entidades pequenas
• Regra original:
– 50 linhas por classe.
• Regra adaptada:
– 100 linhas por classe (para incluir os blocos de
documentação);
– 15 classes por pacote/namespace/pasta;
– De 15 a 20 linhas por método.
43. 43
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VI
mantenha suas entidades pequenas
• Benefícios:
– Responsabilidade única;
– Métodos objetivos;
– Pacotes/namespaces mais enxutos;
44. 44
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VII
não crie classes com mais de
duas variáveis de instância.
45. 45
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VII
(ajuste)
não crie classes com mais de
cinco variáveis de instância.
46. 46
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VII
não crie classes com mais de cinco variáveis de instância.
• Benefícios:
– Lista reduzida de dependências;
– Mais fácil para fazer Mocking para testes.
48. 48
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VIII
use coleções de primeiro nível.
• Qualquer classe que contenha uma coleção (ou tenha esse
propósito), não deve conter outras propriedades;
• Encapsulamento de coleções primitivas (arrays);
• Utilização de Interfaces Orientadas a Objetos:
– Collections do Java;
– SPL do PHP.
49. 49
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO VIII
use coleções de primeiro nível.
• Benefícios:
– É possível implementar operações em coleções;
– Utilizar métodos já existentes em interfaces pré-definidas;
50. 50
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IX
não crie métodos getter/setter
para propriedades.
51. 51
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IX
(removida)
não crie métodos getter/setter
para propriedades.
52. 52
Object Calisthenics: relaxe e escreva códigos simples
ORIENTAÇÃO IX
crie métodos getter/setter para propriedades
• Muitos frameworks utilizam os métodos getters e setters para
inicializar variáveis, reduzindo código e evitando erros
desnecessários.
• Não coloque nenhum tipo de regra de negócio nos getters e
setters.