$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DRY原則を誤った結果生まれた技術的負債
Search
Tech Leverages
June 30, 2023
Technology
0
6.5k
DRY原則を誤った結果生まれた技術的負債
DRY原則を誤った結果生まれた技術的負債
Tech Leverages
June 30, 2023
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
ディメンショナルモデリングを採用してない組織がモデリング本を通じて得られたこと
leveragestech
0
83
レバレジーズのLangfuse活用事例
leveragestech
0
26
CloudComposerによる大規模ETL 「制御と実行の分離」の実践
leveragestech
0
360
「ELT職人」から卒業!Fivetranでデータパイプラインの構築・運用から解放され、 本来の価値創造に集中できる ようになった事例
leveragestech
0
34
SpecKitでどこまでできる? コストはどれくらい?
leveragestech
2
3.6k
未来を拓くAI技術〜エージェント開発とAI駆動開発〜
leveragestech
2
280
コンテキストエンジニアリングで変わるAI活用 リファクタリングワークフローの実践から学んだ形式知
leveragestech
0
180
AirflowでDataformを制御するポイント
leveragestech
0
140
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
1.5k
Other Decks in Technology
See All in Technology
初めてのDatabricks AI/BI Genie
taka_aki
0
190
ChatGPTで論⽂は読めるのか
spatial_ai_network
9
29k
今年のデータ・ML系アップデートと気になるアプデのご紹介
nayuts
1
420
AI-DLCを現場にインストールしてみた:プロトタイプ開発で分かったこと・やめたこと
recruitengineers
PRO
2
150
AI駆動開発における設計思想 認知負荷を下げるフロントエンドアーキテクチャ/ 20251211 Teppei Hanai
shift_evolve
PRO
2
400
Debugging Edge AI on Zephyr and Lessons Learned
iotengineer22
0
210
MLflowダイエット大作戦
lycorptech_jp
PRO
1
140
学習データって増やせばいいんですか?
ftakahashi
2
390
エンジニアリングをやめたくないので問い続ける
estie
2
1.2k
RAG/Agent開発のアップデートまとめ
taka0709
0
180
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
3.3k
エンジニアとPMのドメイン知識の溝をなくす、 AIネイティブな開発プロセス
applism118
4
1.3k
Featured
See All Featured
Building Adaptive Systems
keathley
44
2.9k
Git: the NoSQL Database
bkeepers
PRO
432
66k
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.8k
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.6k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
1k
Speed Design
sergeychernyshev
33
1.4k
Facilitating Awesome Meetings
lara
57
6.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
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かどうかの前に単一責務かどうか考えて