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
120
3
Share
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
More Decks by Daniel Libanori
See All by Daniel Libanori
SLA 99,99 - RubyConf 2022
dlibanori
0
82
Feature Toggles e suas categorias
dlibanori
0
110
PostgreSQL MVCC Internals
dlibanori
1
95
OWASP: O que ler
dlibanori
0
28
Git Internals II
dlibanori
0
55
Git Internals I
dlibanori
0
33
Introdução ao systemd
dlibanori
0
170
Other Decks in Programming
See All in Programming
CLIであることを活かしたGitHub Copilot CLI活用術 / GitHub Copilot CLI Pro Tips & Tricks
nao_mk2
1
1.2k
TypeScriptだけでAIエージェントを作る フロント・エージェント・インフラのフルスタック実践
har1101
6
1.3k
Inside Stream API
skrb
1
630
タクシーアプリ『GO』の バックエンド開発のおける AI利活用と若者のすべて
pyama86
3
1.8k
AI時代の仕事技芸論 — ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ
kuranuki
1
610
AIエージェントの隔離技術の徹底比較
kawayu
0
460
密結合なバックエンドから TypeScript のコードを生成する
kemuridama
1
710
AIエージェントと協働するCLI開発 — BunとOpenClawで学んだこと
yoshikouki
1
230
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
210
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
JavaDoc 再入門
nagise
0
270
Lemonade + Foundry Toolkit でお手軽アプリ開発
seosoft
1
290
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Paper Plane
katiecoart
PRO
1
51k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
400
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.5k
Designing Powerful Visuals for Engaging Learning
tmiket
1
400
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.9k
Why Our Code Smells
bkeepers
PRO
340
58k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to build a perfect <img>
jonoalderson
1
5.6k
Prompt Engineering for Job Search
mfonobong
0
330
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