$30 off During Our Annual Pro Sale. View Details »
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
72
Feature Toggles e suas categorias
dlibanori
0
100
PostgreSQL MVCC Internals
dlibanori
1
88
OWASP: O que ler
dlibanori
0
22
Git Internals II
dlibanori
0
47
Git Internals I
dlibanori
0
26
Introdução ao systemd
dlibanori
0
160
Other Decks in Programming
See All in Programming
connect-python: convenient protobuf RPC for Python
anuraaga
0
320
目的で駆動する、AI時代のアーキテクチャ設計 / purpose-driven-architecture
minodriven
11
3.7k
モデル駆動設計をやってみよう Modeling Forum2025ワークショップ/Let’s Try Model-Driven Design
haru860
0
200
20 years of Symfony, what's next?
fabpot
1
140
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
230
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
1.8k
dotfiles 式年遷宮 令和最新版
masawada
1
210
AWS CDKの推しポイントN選
akihisaikeda
1
220
How Software Deployment tools have changed in the past 20 years
geshan
0
25k
知られているようで知られていない JavaScriptの仕様 4選
syumai
0
650
AIの弱点、やっぱりプログラミングは人間が(も)勉強しよう / YAPC AI and Programming
kishida
13
5.5k
チーム開発の “地ならし"
konifar
8
6.4k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
21k
Rails Girls Zürich Keynote
gr2m
95
14k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.6k
Designing Experiences People Love
moore
142
24k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
355
21k
Large-scale JavaScript Application Architecture
addyosmani
514
110k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.2k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
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