O documento discute o que deve ser procurado em uma revisão de código, incluindo se o código se adequa à arquitetura do projeto, é legível e mantível, contém testes adequados e segue boas práticas de programação. Ele também lista ferramentas como Lint, Checkstyle e SonarQube que podem auxiliar na análise do código.
Nessa palestra relato minha experiência não como um desenvolvedor de software altamente sinistro com duzentos anos de experiência e mil livros publicados - mas sim como um "mero mortal", um desenvolvedor "de verdade", do "mundo real" aplicando a teoria que aprendeu do TDD.
Resumo:
Uma abordagem prática de como refatorar aplicações legadas utilizando Clean Code e SOLID de forma gradual e documentada.
Descrição:
Essa palestra aborda a necessidade e os desafios na hora de refatorar uma aplicação em PHP, vemos um pouco dos conhecimentos necessários para iniciar esse processo e como devemos arquitetar cada etapa do desenvolvimento.
Cada aplicação possui uma realidade diferente por isso será passado um de forma breve os conceitos de SOLID, Design Petterns e Object Calisthenic para poder aplica-los na arquitetura de cada projeto. Além de exemplos de refatoração em pontos específicos da aplicação.
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
Com uma infinidade de opções disponíveis, qual caminho seguir? Como se tornar um desenvolvedor melhor? Em qual tecnologia se especializar? Quais tecnologias utilizar em seus projetos? “A Carreira de Desenvolvedor: Do Jr ao Sênior” apresenta uma visão pessoal do atual mercado de trabalho e das tecnologias comumente utilizadas.
Conheça Visual Studio IntelliCode e Visual Studio Live ShareLetticia Nicoli
A pouco tempo a Microsoft anunciou duas features para o Visual Studio que irão aumentar sua produtividade através de IA e permitir o desenvolvimento colaborativo de maneira bidirecional e instantânea.
Nessa palestra relato minha experiência não como um desenvolvedor de software altamente sinistro com duzentos anos de experiência e mil livros publicados - mas sim como um "mero mortal", um desenvolvedor "de verdade", do "mundo real" aplicando a teoria que aprendeu do TDD.
Resumo:
Uma abordagem prática de como refatorar aplicações legadas utilizando Clean Code e SOLID de forma gradual e documentada.
Descrição:
Essa palestra aborda a necessidade e os desafios na hora de refatorar uma aplicação em PHP, vemos um pouco dos conhecimentos necessários para iniciar esse processo e como devemos arquitetar cada etapa do desenvolvimento.
Cada aplicação possui uma realidade diferente por isso será passado um de forma breve os conceitos de SOLID, Design Petterns e Object Calisthenic para poder aplica-los na arquitetura de cada projeto. Além de exemplos de refatoração em pontos específicos da aplicação.
A Carreira de Desenvolvedor: do Jr ao SêniorMarcos Pereira
Com uma infinidade de opções disponíveis, qual caminho seguir? Como se tornar um desenvolvedor melhor? Em qual tecnologia se especializar? Quais tecnologias utilizar em seus projetos? “A Carreira de Desenvolvedor: Do Jr ao Sênior” apresenta uma visão pessoal do atual mercado de trabalho e das tecnologias comumente utilizadas.
Conheça Visual Studio IntelliCode e Visual Studio Live ShareLetticia Nicoli
A pouco tempo a Microsoft anunciou duas features para o Visual Studio que irão aumentar sua produtividade através de IA e permitir o desenvolvimento colaborativo de maneira bidirecional e instantânea.
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?Weverton Timoteo
Talk apresentada no evento Devs Cansados (https://evento2020.devscansados.com.br/) no dia 12/11/20.
Nessa talk falo um pouco o que é qualidade de código, métricas interessante para sua base de código.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
Sistemas legados são o terror da maioria dos devs: código dos outros escrito muitas vezes sem seguir boas práticas e em uma linguagem quase completamente desconhecida. A proposta da palestra é discutir sobre:
o que é legado?
o que é linguagem não mainstream no contexto do dia a dia dos projetos?
indicar alguns caminhos a seguir quando se tem um legado a ser enfrentado, utilizando perl como exemplo de linguagem não mainstream.
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com Visual Studio 2019. Mais informações podem ser obtidas em www.developeracademy.com.br ou www.developeracademy.dev.
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
Nesta palestra, Leandro identificará algumas das melhores práticas a serem seguidas. Ele falará sobre o que é realmente importante em uma revisão de código, definirá algumas diretrizes a serem seguidas a fim de maximizar o valor da revisão de código e fornecer feedback construtivo no tempo mais rápido possível.
Algumas dicas que servem para ajudar quando vamos desenvolver códigos com mais precisão, empatia e legibilidade. Essa apresentação tem base do Clean Code do Uncle Bob.
O Programador Pragmático se concentra no processo fundamental do desenvolvimento de software:
a partir de um requisito, produzir código funcional e de fácil manutenção que agrade aos usuários.
Sem se ater a uma tecnologia específica, esta obra aborda tópicos que vão do desenvolvimento da carreira a técnicas de projeto para manter seu código flexível e fácil de adaptar
A palestra irá falar sobre arquitetura de software o do profissional responsável por ela, o arquiteto de software. Muito se discute sobre esse papel, quais as suas atribuições e o que ele realmente faz. O objetivo desta palestra é desmistificar alguns dos conceitos sobre essa questão, falar sobre a carreira do arquiteto de software, como se tornar um, como lidar com novas tecnologias e um guia rápido de estudos.
Apresentação sobre Design Orientado a Objetos com foco nos testes unitários que ocorreu durante o 7Masters OOD.
Existem vários conceitos relacionados com o design de software. Quando testamos o software, não estamos em busca de bugs, mas de comprovação científica de seu design. O software absorve tudo: as boas e as más práticas. Se usamos os testes para comprovar o design, testes de unidade mau escritos dizem muito sobre as unidades em si.
Palestra com foco na introdução ao desenvolvimento orientado à testes, passando em temas como: Design OO; Domain-Driven Design; Modelo Anêmico; Refabricação do código legado; Design Patterns; Princípios OO e boas práticas.
Slides da minha participação do TDC na trilha de arquitetura .NET.
O conteúdo abordado é Arquitetura Limpa, também conhecida como arquitetura hexagonal e ports and adapters.
Neste exemplo disponibilizo códigos em C# e F#.
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?Weverton Timoteo
Talk apresentada no evento Devs Cansados (https://evento2020.devscansados.com.br/) no dia 12/11/20.
Nessa talk falo um pouco o que é qualidade de código, métricas interessante para sua base de código.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
Sistemas legados são o terror da maioria dos devs: código dos outros escrito muitas vezes sem seguir boas práticas e em uma linguagem quase completamente desconhecida. A proposta da palestra é discutir sobre:
o que é legado?
o que é linguagem não mainstream no contexto do dia a dia dos projetos?
indicar alguns caminhos a seguir quando se tem um legado a ser enfrentado, utilizando perl como exemplo de linguagem não mainstream.
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com Visual Studio 2019. Mais informações podem ser obtidas em www.developeracademy.com.br ou www.developeracademy.dev.
Revisão de Código - Uma prática que depende da culturaLeandro Parazito
Nesta palestra, Leandro identificará algumas das melhores práticas a serem seguidas. Ele falará sobre o que é realmente importante em uma revisão de código, definirá algumas diretrizes a serem seguidas a fim de maximizar o valor da revisão de código e fornecer feedback construtivo no tempo mais rápido possível.
Algumas dicas que servem para ajudar quando vamos desenvolver códigos com mais precisão, empatia e legibilidade. Essa apresentação tem base do Clean Code do Uncle Bob.
O Programador Pragmático se concentra no processo fundamental do desenvolvimento de software:
a partir de um requisito, produzir código funcional e de fácil manutenção que agrade aos usuários.
Sem se ater a uma tecnologia específica, esta obra aborda tópicos que vão do desenvolvimento da carreira a técnicas de projeto para manter seu código flexível e fácil de adaptar
A palestra irá falar sobre arquitetura de software o do profissional responsável por ela, o arquiteto de software. Muito se discute sobre esse papel, quais as suas atribuições e o que ele realmente faz. O objetivo desta palestra é desmistificar alguns dos conceitos sobre essa questão, falar sobre a carreira do arquiteto de software, como se tornar um, como lidar com novas tecnologias e um guia rápido de estudos.
Apresentação sobre Design Orientado a Objetos com foco nos testes unitários que ocorreu durante o 7Masters OOD.
Existem vários conceitos relacionados com o design de software. Quando testamos o software, não estamos em busca de bugs, mas de comprovação científica de seu design. O software absorve tudo: as boas e as más práticas. Se usamos os testes para comprovar o design, testes de unidade mau escritos dizem muito sobre as unidades em si.
Palestra com foco na introdução ao desenvolvimento orientado à testes, passando em temas como: Design OO; Domain-Driven Design; Modelo Anêmico; Refabricação do código legado; Design Patterns; Princípios OO e boas práticas.
Slides da minha participação do TDC na trilha de arquitetura .NET.
O conteúdo abordado é Arquitetura Limpa, também conhecida como arquitetura hexagonal e ports and adapters.
Neste exemplo disponibilizo códigos em C# e F#.
Clean Architecture utilizando .NET Core (C# e F# juntos). O objetivo é demonstrar uma arquitetura simples que pode ser aplicada no dia a dia, mesmo em projetos pequenos.
Quando pensamos em Design de Código, logo lembramos de Clean Code, Design Patterns e outros padrões e práticas que organizam e estruturam um bom código. Contudo acima do uso de padrões e práticas está uma questão mais nobre a qual pouco questionamos, que é a sustentabilidade presente no código e software que produzimos e isso envolve claro os padrões já conhecidos e também nossas escolhas de arquitetura, ferramentas, documentação, organização, versionamento, testes, dentre outras. Na apresentação será abordado como trabalhar esses temas a partir de uma visão que destaca a produção de código e software sustentável acima dos conceitos tradicionais.
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
Slides do mini-curso apresentado em 10.06.2011 no X Simpósio Brasileiro em Qualidade de Software (Curitiba-PR).
Mais informações em http://bit.ly/eyYo8Y
Teste automatizado com Selenium é uma abordagem para testar aplicativos da web usando o Selenium WebDriver, uma ferramenta de automação de teste de código aberto. O objetivo é verificar se o aplicativo funciona conforme o esperado em diferentes cenários.
Para criar um teste automatizado com Selenium, você precisará seguir os seguintes passos:
Escolha uma linguagem de programação: O Selenium suporta várias linguagens de programação, como Java, Python, C#, etc. Escolha uma linguagem que seja adequada para você.
Configure o ambiente de teste: Você precisará configurar o ambiente de teste com o Selenium WebDriver, o navegador da web e o ambiente de desenvolvimento integrado (IDE) da sua escolha.
Identifique elementos da página: Use o inspetor de elementos do navegador para identificar os elementos da página que você deseja testar, como botões, caixas de texto, menus suspensos, etc.
Escreva o código de teste: Use o código da linguagem de programação escolhida para escrever o teste. O código pode incluir as seguintes etapas:
Navegar para a página que contém os elementos que você deseja testar.
Localizar os elementos na página usando seus identificadores únicos, como ID, nome, classe, etc.
Interagir com os elementos, como clicar em um botão, preencher um formulário, selecionar uma opção em um menu suspenso, etc.
Verificar se o aplicativo se comporta conforme o esperado.
Executar o teste: Execute o teste no ambiente de teste configurado. O Selenium abrirá o navegador, navegará para a página e executará as etapas de teste que você escreveu.
Analisar os resultados do teste: Verifique se o teste passou ou falhou e analise os logs para identificar quaisquer erros ou problemas.
Repita para diferentes cenários: Repita os passos 3 a 6 para diferentes cenários de teste, como diferentes entradas de formulário, diferentes caminhos de navegação, etc.
Os testes automatizados com Selenium podem ser integrados ao processo de integração contínua para garantir que o aplicativo da web seja testado regularmente. Isso ajuda a identificar e corrigir problemas antes que se tornem críticos. Além disso, a automação de testes pode economizar tempo e esforço, permitindo que os testes sejam executados mais rapidamente e com menos erros humanos.
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
Visto que hoje cada vez mais os profissionais de qualidade e desenvolvimento de software trabalham em par, precisamos falar das duas áreas juntas para disseminar essa cultura. Esta apresentação aborda boas práticas importantes e utilizadas em desenvolvimento de software, falando sobre como elas são aplicadas no dia a dia das empresas.
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
Visto que hoje cada vez mais os profissionais de qualidade e desenvolvimento de software trabalham em par, precisamos falar das duas áreas juntas para disseminar essa cultura. Esta apresentação aborda boas práticas importantes e utilizadas em desenvolvimento de software, falando sobre como elas são aplicadas no dia a dia das empresas.
Revisa conceitos de Orientação a Objetos. Revisa conceitos de Padrões de Projeto.
Apresenta um breve histórico da evolução da arquitetura de software. Mostra a importância que a escolha do padrão arquitetural exerce na construção de software. Demonstra de maneira prática e em forma de experimento, um projeto de software Java que tenha sido aplicado os padrões arquiteturais adotados no mercado de trabalho, habilitando os alunos a definirem e utilizarem os padrões arquiteturais.
Palestra sobre programação funcional para a trilha no TDC SP 2018.
Nesta palestra é possível encontrar slides sobre a utilização de programação funcional em C# e F#, mesclando as duas linguagens na mesma aplicação para uma solução híbrida.
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareAndré Dias
Palestra realizada no DevOps Summit Brasil 2016 sobre qualidade de software que apresentou tópicos como Code Analysis, Code Clone, Code Metrics, SonarQube, IntelliTest, Application Insights, Exploratory Testing e Reports
3. RODRIGO CASTRO
Desenvolvedor Android @ Concrete
Analista de Sistemas pela UFMS/CPCX.
De Coxim/MS para o mundo!
http://castrors.github.io
rodrigo.castro@concrete.com.br
@rodrigocastro_o
6. O novo código...
● se adequa a arquitetura existente?
● segue SOLID, DDD ou outro paradigma de projeto que o time adota?
● utiliza padrões de projetos adequados?
● está no lugar certo?
● reutiliza algo já existente no projeto ou introduz duplicação de
código?
● adiciona complexidade desnecessária?
8. LEGIBILIDADE E
MANUTENIBILIDADE
● Os nomes(campos, variáveis, parametros, métodos e classes) refletem
no que eles representam?
● É possível entender o que o código faz apenas lendo ele?
● É possível entender o que o teste faz?
● Os testes cobrem uma boa parte das classes? Ele cobre o caminho
feliz e os casos excepcionais? Existem classes que não foram
cobertas?
10. FUNCIONALIDADE
● O código realmente faz o que ele deveria fazer? Existem testes
automatizados para garantir se o código está correto, se os testes
realmente testam o código de acordo com os requisitos?
● O código contém algum bug, como acidentalmente trocar um ''&&''
por ''||''?
12. Pergunte para si mesmo
essas perguntas:
● Existe testes para esse novo código?
● Os testes cobrem pelo menos as partes confusas ou complicadas do
código?
● Eu consigo entender os testes? (Robot Pattern - @jakewharton)
● Os testes verificam os requisitos?
● Eu consigo pensar em partes não cobertas do código que deveriam
ser testadas?
● Existem testes para aspectos de segurança?
● Existem testes de performance?
14. BOAS PRÁTICAS DE
PROGRAMAÇÃO
SOLID
DRY
Padrões de Projeto
Guidelines
SRP - The single responsibility principle - A class should
have one, and only one, reason to change.
OCP - The Open Closed Principle - You should be able to
extend a classes behavior, without modifying it.
LSP - The Liskov Substitution Principle - Derived
classes must be substitutable for their base classes.
ISP - The Interface Segregation Principle - Make fine
grained interfaces that are client specific.
DIP- The Dependency Inversion Principle - Depend on
abstractions, not on concretions.
20. CODE REVIEW
WIKI
Checklist
Tenha um documento que contenha todas as práticas
adotadas no seu projeto.
É um documento vivo, que pode e deve ser alterado
constantemente, acompanhando a evolução do projeto.
Deve estar sempre disponível aos desenvolvedores e
revisores.
Wiki? Livro? Etc.
21. CODE REVIEW
WIKI
Checklist Categorize cada ponto que foram citados anteriormente,
e separe em uma checklist. Desta maneira facilitará tanto
a vida do desenvolvedor na hora de criar um pull request
quanto a vida do revisor ao verificar o que foi submetido.
25. FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O Android Studio oferece uma ferramenta de verificação
de código denominada lint para ajudar a identificar e
corrigir problemas com a qualidade estrutural do código,
sem executar o aplicativo nem criar casos de teste.
Gera um relatório .html o qual mostra o erro, gravidade,
explicação detalhada e como corrigir.
26. FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
Checkstyle é uma ferramenta de desenvolvimento para
ajudar os programadores a escrever código Java que adira
a um padrão de codificação. Ele automatiza o processo de
verificação do código Java para poupar humanos dessa
tarefa chata (mas importante). Isso o torna ideal para
projetos que desejam impor um padrão de codificação.
Pontos a serem validados: Magic Number, Nomenclatura
(de métodos, variáveis, constantes), Identação, uso correto
de chaves.
27. FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
FindBugs é um analisador de código estático de código
aberto criado por Bill Pugh e David Hovemeyer, que
detecta possíveis erros em programas Java. Os erros
potenciais são classificados em quatro categorias: (i) mais
assustador, (ii) assustador, (iii) preocupante e (iv) de
preocupação. Esta é uma pista para o desenvolvedor
sobre o seu possível impacto ou gravidade. FindBugs
opera em bytecode Java, em vez de código fonte.
Categorias de bugs avaliadas: Bad Practice, Malicious code
vunerability, Multitheaded correctness, Performance,
Security, Dodgy code.
28. FERRAMENTAS
Android Lint
Checkstyle
Findbugs
SonarQube
O SonarSource oferece o que provavelmente é o melhor
analisador de código estático que você pode encontrar no
mercado para Java. Com base no nosso próprio front-end
do compilador Java, ele usa as técnicas mais avançadas
(correspondência de padrões, análise de fluxo de dados)
para analisar código e encontrar cheiros de código, bugs
e vulnerabilidades de segurança. Quanto a qualquer
produto que desenvolvamos no SonarSource, foi
construído com os seguintes princípios: profundidade,
precisão e velocidade.
29.
30.
31.
32. CODEBASEMerge Requests /
Pull Requests
Autor
Conversa direta com o
desenvolvedor
WIKI e
Checklist
MR em avaliação
👎 ou 👍
36. Centro
Av. Presidente Wilson,
231 - 29º andar
(21) 2240-2030
Cidade Monções
Av. Nações Unidas,
11.541 - 3º andar
(11) 4119-0449
Savassi
Av. Getúlio Vargas, 671
Sala 800 - 8º andar
(31) 3360-8900
www.concrete.com.b
r