• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Anti-patterns
 

Anti-patterns

on

  • 1,829 views

Anti-patterns in Tech/Software.

Anti-patterns in Tech/Software.

Talk done in Braga Geek Nights, March 2, 2010

Statistics

Views

Total Views
1,829
Views on SlideShare
1,822
Embed Views
7

Actions

Likes
2
Downloads
0
Comments
0

2 Embeds 7

http://www.linkedin.com 4
http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • <br />
  • Andrew Koening, Investigador da A&T <br />
  • Tipicamente tem nomes engra&#xE7;ados <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />
  • <br />

Anti-patterns Anti-patterns Presentation Transcript

  • Anti-patterns Braga Geek Nights Luis Azevedo 2010 www.braceta.com www.twitter.com/braceta
  • História O termo foi introduzido por Andrew Koening e inspirado no livro Design Patterns do Gang of Four’s
  • Definição Um padrão que se repete (social, processual, programaticamente, etc.) que tipicamente é uma má prática, mau hábito ou má ideia.
  • Copy and paste programming Copiar e modificar código em vez de criar soluções genéricas.
  • Antipattern
  • Antipattern?
  • Antipattern
  • Design pattern?
  • Categorias • Organizational anti-patterns • Project management anti-patterns • Analysis anti-patterns • Software design anti-patterns • Programming anti-patterns • Methodological anti-patterns • Configuration management anti-patterns
  • Organizational
  • Analisys Paralisis Dedicar esforço desproporcionado na analise de um projecto
  • Design by committee Muitos colaboradores num design mas sem visão unificada.
  • Project management
  • Death march Toda a gente sabe que o project irá ser um desastre, excepto o CEO. No entanto a verdade permanece escondida e o projecto mantem-se vivo até o Dia Zero quando surge o “Big Bang”
  • Groupthink Algo que um brainstorm não deve ser. Os membros do grupo evitam lançar ideias fora da zona do conforto do grupo.
  • Smoke and mirrors (vaporware) Demonstrar o quão não implementadas as funcionalidades/funções irão aparecer
  • Software Design
  • Gas factory Um design desnecessariamente complexo. KISS!
  • Object Oriented Programming
  • BaseBean Herdar funcionalidade utilitária de uma classe em vez de delegar ou utilizar composição (Roles, Traits?). Yeah.. Java.. we know :S
  • God Object Concentrar demasiadas funções numa determinada classe. GodObject jesus =(GodObject)new JorgeJesus();
  • Object Orgy Não existir possibilidade de impedir acesso aos internals de um objecto. Normalmente associado ao Perl (por programadores não informados). Inside-Out Objects?
  • Poltergeist Objectos que apenas servem para passar informação para outros. Tipicamente também conhecido o Design Pattern “Adaptor”.
  • Yo-Yo Problem Existe uma hierarquia complexa de classes que obriga o olhar para “cima” e para “baixo” para perceber o fluxo de informação. Java? Resolve-se com delegação ou composição de classes.
  • Methodological
  • Copy and paste programming Copiar e modificar código em vez de criar soluções genéricas.
  • Programming by permutation Ou “Programação por Acidente”. Tentar modificar o código sem perceber muito bem o porquê, até que funcione. PHP anyone?
  • Tester Driven Development ou BDD Requisitos e funcionalidade são especificados utilizando bug reports. Agile Programming?
  • Improbability factor Assumir que que algo é improvavel que aconteça. Por exemplo, verificar se um malloc retorna NULL. Lei de Murphy
  • Programming
  • Boat anchor Manter uma parte do sistema, embora já não tenha uso.
  • Lava flow Manter código não desejado (redundante ou de baixa qualidade) porque remover pode trazer consequências nefastas. Assembler, Perl?
  • Hardcode Utilizar números ou literais de strings no meio de estruturas de código em vez de ficheiros de configuração.
  • Soft code Colocar lógica de negócio em ficheiros de configuração em vez do código fonte.
  • Spaghetti code Código no qual a estrutura e fluxo é praticamente incompreensivel, tipicamente GOTO’s.
  • Ravioli code Criado criado por um conjunto de componentes soltos mas que a integração resultante é confusa. Humm Frames anyone?
  • Spaghetti with meatballs Parecido com o Raviolli code, mas para alem da integração dos componentes ser confusa, os próprios componentes também o são!
  • Lasagna Code Código em camadas (arquitecturas MVC, Three-tier) com interfaces definidas mas na qual o código de cada camada se mistura desorganizado. Rails? :)
  • Big ball of mud Um programa/sistema onde é impossível distinguir arquitectura. Um conjunto de interligação de componentes misturados em Spagetti, Lasagna e Raviolli Code.
  • Duct Tape Componentes interligados por forma a que o minimo de interligação aconteça, mas sem o minimo de estrutura. Programa em C, que chama um script Perl, que gera um Bash, que compila um code generator em Java, que gera um programa em PHP para imprimir o número 42!
  • Job Keeper Um “Big ball of mud” escrito como segurança do emprego do colaborador. Este alegadamente consegue corrigir qualquer bug do programa utilizando “Duct Tape” anti-pattern.
  • The End www.braceta.com www.twitter.com/braceta