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
4.6k
DRY原則を誤った結果生まれた技術的負債
DRY原則を誤った結果生まれた技術的負債
Tech Leverages
June 30, 2023
Tweet
Share
More Decks by Tech Leverages
See All by Tech Leverages
より快適なエラーログ監視を目指して
leveragestech
0
8
SREが強化するべき組織のケイパビリティ
leveragestech
0
26
DevOps実現のための私たちのSREのあり方
leveragestech
0
20
アウトプット=アウトカムではない世界で開発生産性を考える
leveragestech
4
400
ビジネス貢献を目指して 〜開発者体験から始める開発生産性向上~
leveragestech
2
160
中規模・ミドルTier開発組織におけるDevRelの戦略と実行と成果 - DevRel Guild Conference Mini -
leveragestech
2
280
RealFace技術広報への処方箋 - 技術広報の集い #5 納涼祭!-
leveragestech
0
51
SREチームの立ち上げから1年の取り組みとこれからの課題
leveragestech
1
54
ベロシティってなんで測るの??? - Agile Effect MeetUp -
leveragestech
1
21
Other Decks in Technology
See All in Technology
EitherT_with_Future
aoiroaoino
1
870
Evolving DevOps Teams and Flexible Organizational Culture
kakehashi
1
160
夏休みの(最後の)宿題 for JuliaTokyo #12
antimon2
0
130
エンジニア向け会社紹介資料
caddi_eng
15
250k
Datadog を使ったプロダクトとクラウドの セキュリティモニタリング
mrtc0
0
560
Eventual Detection Engineering
ken5scal
0
920
Autonomous Database Cloud 技術詳細 / adb-s_technical_detail_jp
oracle4engineer
PRO
15
39k
すぐに始めるAWSコスト削減。短期でできる改善策と長期的な運用負荷軽減への取り組み方を解説
ncdc
1
490
「名前解決」から振り返るAmazon VPC
yuki_ink
0
320
株式会社M2X エンジニアチーム紹介資料
m2xsoftware
0
390
ロボットアームを遠隔制御の話 & LLMをつかったIoTの話もしたい
soracom
PRO
1
180
LLM を現場で評価する
asei
4
690
Featured
See All Featured
The Language of Interfaces
destraynor
153
23k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
103
47k
Why You Should Never Use an ORM
jnunemaker
PRO
53
8.9k
A Philosophy of Restraint
colly
202
16k
Ruby is Unlike a Banana
tanoku
96
10k
Building a Modern Day E-commerce SEO Strategy
aleyda
35
6.8k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
41
6.5k
Speed Design
sergeychernyshev
18
400
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
29
2.6k
It's Worth the Effort
3n
182
27k
A Modern Web Designer's Workflow
chriscoyier
690
190k
Bash Introduction
62gerente
608
210k
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かどうかの前に単一責務かどうか考えて