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
DRY原則を誤った結果生まれた技術的負債
Search
Tech Leverages
June 30, 2023
Technology
0
5.4k
DRY原則を誤った結果生まれた技術的負債
DRY原則を誤った結果生まれた技術的負債
Tech Leverages
June 30, 2023
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
10倍スケールを見越した データモデリングのリアーキテクチャ
leveragestech
0
18
理想のパスワードは?
leveragestech
1
77
データエンジニアとしてのキャリア戦略 〜これからの挑戦〜
leveragestech
0
92
ドメインロジックで考えるテスタビリティ
leveragestech
1
330
専門領域に特化したチームの挑戦
leveragestech
0
450
もう一度、 事業を支えるシステムに。
leveragestech
6
4.9k
ログに対する誤解とベストプラクティス
leveragestech
0
1.4k
We Are PdE!! 〜高価値なプロダクトを作れるようになるための勉強会〜
leveragestech
1
1.9k
Prisma Typed SQLのススメ
leveragestech
1
270
Other Decks in Technology
See All in Technology
インフラコストとセキュリティ課題解決のためのリアーキテクチャリング / srekaigi2025
hgsgtk
3
4.2k
20250129 Findy_テスト高活用化
dshirae
0
220
オーティファイ会社紹介資料 / Autify Company Deck
autifyhq
10
120k
CNAPPから考えるAWSガバナンスの実践と最適化
yuobayashi
5
680
消し忘れリソースゼロへ!私のResource Explorer活用法
cuorain
0
140
Re:Define 可用性を支える モニタリング、パフォーマンス最適化、そしてセキュリティ
pyama86
9
5.6k
アクセシブルなマークアップの上に成り立つユーザーファーストなドロップダウンメニューの実装 / 20250127_cloudsign_User1st_FE
bengo4com
2
1.2k
レイクハウスとはなんだったのか?
akuwano
15
1.9k
もし今からGraphQLを採用するなら
kazukihayase
9
4.2k
エラーバジェット枯渇の原因 - 偽陽性との戦い -
phaya72
1
100
2週に1度のビッグバンリリースをデイリーリリース化するまでの苦悩 ~急成長するスタートアップのリアルな裏側~
kworkdev
PRO
8
6.5k
ハンズオンで学ぶ Databricks - Databricksにおけるデータエンジニアリング
taka_aki
1
2.1k
Featured
See All Featured
BBQ
matthewcrist
85
9.4k
Navigating Team Friction
lara
183
15k
Scaling GitHub
holman
459
140k
Documentation Writing (for coders)
carmenintech
67
4.6k
A designer walks into a library…
pauljervisheath
205
24k
4 Signs Your Business is Dying
shpigford
182
22k
RailsConf 2023
tenderlove
29
980
Building Applications with DynamoDB
mza
93
6.2k
GitHub's CSS Performance
jonrohan
1030
460k
Designing for Performance
lara
604
68k
Adopting Sorbet at Scale
ufuk
74
9.2k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Transcript
DRY原則を誤った結果 生まれた技術的負債
TL;DR DRYかどうかの前に単一責務かどうか考えて
これは本当にあった怖い話です
teratailにはこんなコンポーネントが存在します
teratailにはこんなコンポーネントが存在します 違い、分かりますか?
<a>タグ <button>タグ
HTMLタグの種類が違うだけなのに 同じスタイルを都度定義するの、面倒だな ...
そうだ!propsにhrefがあるかどうかで 出し分けるように実装しよう! DRY原則の適用だ!
None
None
最初はこれでも問題なかった 最初だけね...
- 内部コンポーネントを制御するためのPropsが際限なく追加される - 内部で利用しているコンポーネントの機能を制御する必要が出てきた - 制御変数が多くなりすぎて内部実装が複雑になる - 他のライブラリ(ReactHookForm等)との組み込みがしづらくなる - 誰も手をつけられない神ボタンコンポーネントの☆完☆成☆
生まれた問題点
None
結局何がいけなかったの? - DRY(Don’t Repeat Yourself) 原則の適用を間違えた - 似て非なるものを同一視してしまった - SRP(Single
Responsibility Principle)に違反した
どうすればよかったの? - 各コンポーネントを責務という観点で独立させる - <a>タグはHTMLにおいて他のリソースへの参照を示す - <button>は文書上のフォームのコントロールや単純なボタンとしての機 能を提供する
TL;DR DRYかどうかの前に単一責務かどうか考えて