Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
The Evils of Duplication
Search
Daniel Libanori
July 12, 2013
Programming
3
110
The Evils of Duplication
Rails colocou o termo DRY na boca do desenvolvedores, mas DRY vai além do que sabemos!
Daniel Libanori
July 12, 2013
Tweet
Share
More Decks by Daniel Libanori
See All by Daniel Libanori
SLA 99,99 - RubyConf 2022
dlibanori
0
68
Feature Toggles e suas categorias
dlibanori
0
100
PostgreSQL MVCC Internals
dlibanori
1
83
OWASP: O que ler
dlibanori
0
22
Git Internals II
dlibanori
0
40
Git Internals I
dlibanori
0
26
Introdução ao systemd
dlibanori
0
160
Other Decks in Programming
See All in Programming
CSC305 Lecture 04
javiergs
PRO
0
270
Devvox Belgium - Agentic AI Patterns
kdubois
1
130
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
1.5k
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
240
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
230
(Extension DC 2025) Actor境界を越える技術
teamhimeh
1
260
Go Conference 2025: Goで体感するMultipath TCP ― Go 1.24 時代の MPTCP Listener を理解する
takehaya
9
1.7k
なぜあの開発者はDevRelに伴走し続けるのか / Why Does That Developer Keep Running Alongside DevRel?
nrslib
3
410
CSC509 Lecture 06
javiergs
PRO
0
260
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
120
フロントエンド開発のためのブラウザ組み込みAI入門
masashi
5
2.2k
Claude CodeによるAI駆動開発の実践 〜そこから見えてきたこれからのプログラミング〜
iriikeita
0
300
Featured
See All Featured
Docker and Python
trallard
46
3.6k
Context Engineering - Making Every Token Count
addyosmani
7
260
What's in a price? How to price your products and services
michaelherold
246
12k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Navigating Team Friction
lara
190
15k
It's Worth the Effort
3n
187
28k
A Modern Web Designer's Workflow
chriscoyier
697
190k
GraphQLの誤解/rethinking-graphql
sonatard
73
11k
BBQ
matthewcrist
89
9.8k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Gamification - CAS2011
davidbonilla
81
5.5k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Transcript
The Evils of Duplication DRY Approach
- Programador - Java até final 2005 - Ruby desde
final de 2005 - Clicksign Daniel Libanori
1999
Bug do milênio RFC 2616: HTTP 1.1 Primeiro BlackBerry Ruby
1.4 e claro...
None
None
DON’T REPEAT YOURSELF
DRY?! DRY?!
2005
None
Convention over Configuration Eliminação das amadas rotas em XML ActiveRecord
gera boa parte do SQL Migrations Geradores de código
Agora todo mundo sabe DRY!!!
Não!
2015
Agora todo mundo sabe DRY?!
Não!
THE EVILS OF DUPLICATION
Duplicação Duplicação Duplicação Duplicação Duplicação Duplicação Duplicação Duplicação Duplicação
Definição Uma sequência de “código” que ocorre mais de uma
vez em um “programa”.
O que é um “Código” • código • testes unitários
e de integração • tarefas • deploy • ambiente de desenvolvimento • documentação
Tipos de duplicação • Imposta • Inadvertida • Impaciente •
Interpessoal
None
Duplicação Imposta
Duplicação Imposta • múltiplas representações • documentação no código •
documentação e código • aspectos da linguagem
Múltiplas representações • client-side e server-side • sitemap • issues
• mocks
Documentação no código “Um bom código é comentado” vs. “Código
ruim requer comentários”
Documentação no código
Documentação e código 1.Você codifica 2.Você documenta 3.O projeto atrasa
4.Você codifica correndo 5.Você não atualiza a documentação!
None
Documentação e código Nenhuma documentação é melhor que documentação ruim,
ou pior, errada.
Documentação e código • Código é um documento • claro
• simples • representativo • Documentar faz parte da codificação • Geradores de documentação
Aspectos da linguagem • Ruby ajuda • Ruby ajuda MUITO
• Mas também tem seus problemas...
Aspectos da linguagem Ruby Coffee
Duplicação inadvertida
Duplicação inadvertida 1 2 3 4
Duplicação impaciente
None
Região destinada a programadores que utilizam copy/paste Inferno segundo Dante
Duplicação interpessoal
Duplicação interpessoal • daily meeting • code review • flay
• codeclimate
DRY Toda “peça de conhecimento” deve possuir uma única representação
dentro de um sistema.
Agora eu sei DRY!
The End
Surprise!
WET • artes • aviação • ciência • infra-estrutura
• Dave Thomas e Andrew Hunt • Gremlins • Anderson
Leonardo Agradecimentos
@dlibanori github.com/dlibanori
[email protected]
Daniel Libanori