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
62
Feature Toggles e suas categorias
dlibanori
0
90
PostgreSQL MVCC Internals
dlibanori
1
83
OWASP: O que ler
dlibanori
0
21
Git Internals II
dlibanori
0
40
Git Internals I
dlibanori
0
25
Introdução ao systemd
dlibanori
0
160
Other Decks in Programming
See All in Programming
生成AIで日々のエラー調査を進めたい
yuyaabo
0
520
Perplexity Slack Botを作ってAI活用を進めた話 / AI Engineering Summit プレイベント
n3xem
0
640
XSLTで作るBrainfuck処理系
makki_d
0
190
Benchmark
sysong
0
130
生成AIコーディングとの向き合い方、AIと共創するという考え方 / How to deal with generative AI coding and the concept of co-creating with AI
seike460
PRO
1
180
単体テストの始め方/作り方
toms74209200
0
430
Go Modules: From Basics to Beyond / Go Modulesの基本とその先へ
kuro_kurorrr
0
110
レガシーシステムの機能調査・開発におけるAI利活用
takuya_ohtonari
0
590
FormFlow - Build Stunning Multistep Forms
yceruto
1
150
CSC307 Lecture 17
javiergs
PRO
0
110
Enterprise Web App. Development (2): Version Control Tool Training Ver. 5.1
knakagawa
1
110
エラーって何種類あるの?
kajitack
5
140
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
462
33k
How to Think Like a Performance Engineer
csswizardry
24
1.7k
Balancing Empowerment & Direction
lara
1
280
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
137
34k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.4k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
690
Building Adaptive Systems
keathley
43
2.6k
Designing for Performance
lara
609
69k
A Tale of Four Properties
chriscoyier
159
23k
KATA
mclloyd
29
14k
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