Upload
Download free for 30 days
Login
Submit search
Boilerplate vs Magic
1 like
1,961 views
Yoshitaka Kawashima
BoilerplateとMagic論争をStruts1を交えて考えてみました。
Software
Related topics:
Software Design Concepts
Read more
1 of 13
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
More Related Content
PDF
Antifragile Clojure
Yoshitaka Kawashima
PDF
SIerにとっての越境 @ DevLOVE 199
Yoshitaka Kawashima
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
PDF
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
PDF
Ble android
kudo1048
PDF
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
PPTX
Serviceability Toolsの裏側
Yasumasa Suenaga
Antifragile Clojure
Yoshitaka Kawashima
SIerにとっての越境 @ DevLOVE 199
Yoshitaka Kawashima
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
Try_to_writecode_practicaltest #atest_hack
kimukou_26 Kimukou
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Ble android
kudo1048
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JPCERT Coordination Center
Serviceability Toolsの裏側
Yasumasa Suenaga
Similar to Boilerplate vs Magic
(14)
PDF
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
PDF
実践 NestJS
Ayumi Goto
PPTX
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
PDF
GCを発生させないJVMとコーディングスタイル
Kenji Kazumura
PDF
Windows スクリプトセミナー WMI編 VBScript&WMI
junichi anno
PDF
Xamarin で ReactiveUI を使ってみた
Hironov OKUYAMA
PDF
WordPress widget api
Takami Kazuya
PPTX
Mithril - 軽量/高速なMVCフレームワーク
sairoutine
PPTX
[JavaDo] JAX-RS ハンズオン 第2部
haruki ueno
PDF
[Basic 9] 並列処理 / 排他制御
Yuto Takei
PDF
App widgetでテザリング
Eiichi Tsuru
PPTX
React を導入したフロントエンド開発
daisuke-a-matsui
PPTX
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
PDF
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
Masashi Umezawa
Javaセキュアコーディングセミナー東京第4回演習の解説
JPCERT Coordination Center
実践 NestJS
Ayumi Goto
JVMに裏から手を出す!JVMTIに触れてみよう(オープンソースカンファレンス2020 Online/Hiroshima 講演資料)
NTT DATA Technology & Innovation
GCを発生させないJVMとコーディングスタイル
Kenji Kazumura
Windows スクリプトセミナー WMI編 VBScript&WMI
junichi anno
Xamarin で ReactiveUI を使ってみた
Hironov OKUYAMA
WordPress widget api
Takami Kazuya
Mithril - 軽量/高速なMVCフレームワーク
sairoutine
[JavaDo] JAX-RS ハンズオン 第2部
haruki ueno
[Basic 9] 並列処理 / 排他制御
Yuto Takei
App widgetでテザリング
Eiichi Tsuru
React を導入したフロントエンド開発
daisuke-a-matsui
【SQiP2014】システム操作インターフェイス最適化によるテスト自動化ROI向上
Tatsuya Ishikawa
第142回Smalltalk勉強会 - PharoJSで作るWebアプリケーション
Masashi Umezawa
Ad
More from Yoshitaka Kawashima
(20)
PDF
Grokking Simplicity探訪
Yoshitaka Kawashima
PDF
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
PDF
Are Design Patterns Dead?
Yoshitaka Kawashima
PDF
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
PDF
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
PDF
Tackling Complexity
Yoshitaka Kawashima
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
PDF
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
PDF
ソフトウェア設計における 意思決定とそのレビューの秘訣
Yoshitaka Kawashima
PDF
本番障害に至る病
Yoshitaka Kawashima
PDF
システムダウンのひみつ
Yoshitaka Kawashima
PDF
Mavenの真実とウソ
Yoshitaka Kawashima
PDF
アンチフラジャイルの世界
Yoshitaka Kawashima
PDF
Atomic Architecture
Yoshitaka Kawashima
PDF
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
PDF
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
PDF
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
PDF
How to find tech books
Yoshitaka Kawashima
PDF
Antifragile Java - Java Day Tokyo 2017 D1-E1
Yoshitaka Kawashima
PDF
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
Grokking Simplicity探訪
Yoshitaka Kawashima
ブルックスのいう銀の弾丸とは何か?
Yoshitaka Kawashima
Are Design Patterns Dead?
Yoshitaka Kawashima
強いて言えば「集約どう実装するのかな、を考える」な話
Yoshitaka Kawashima
ソフトウェアにおける 複雑さとは何なのか?
Yoshitaka Kawashima
Tackling Complexity
Yoshitaka Kawashima
イミュータブルデータモデルの極意
Yoshitaka Kawashima
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
ソフトウェア設計における 意思決定とそのレビューの秘訣
Yoshitaka Kawashima
本番障害に至る病
Yoshitaka Kawashima
システムダウンのひみつ
Yoshitaka Kawashima
Mavenの真実とウソ
Yoshitaka Kawashima
アンチフラジャイルの世界
Yoshitaka Kawashima
Atomic Architecture
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
思考停止しないアーキテクチャ設計 ➖ JJUG CCC 2018 Fall
Yoshitaka Kawashima
ウォーターフォールとアジャイルのフェアな比較
Yoshitaka Kawashima
How to find tech books
Yoshitaka Kawashima
Antifragile Java - Java Day Tokyo 2017 D1-E1
Yoshitaka Kawashima
たとえ日本人同士でも必要な異文化理解力
Yoshitaka Kawashima
Ad
Boilerplate vs Magic
1.
Boilerplate vs Magic kawasima
2.
Boilerplate ● アプリケーションを書くうえで、頻繁に繰り返し出て くるコード片 ● よい日本語訳がない…
3.
↓Spring boot作ってる人
4.
http://www.davidtanzer.net/boilerplate_vs_magic public User getUser(final
long userId) { transactionManager.newTransaction(); User user = userRepository.get(userId); user.setLastAccessed(System.currentTimeMillis()); userRepository.save(user); transactionManager.commitTransaction(); return user; } Magic Magicというか極端な例
5.
Magicも単一責任原則(Single Responsibility Principle) が守られているならば、悪くはない http://プログラマが知るべき97のこと.com/エッセイ/単一責任原則 世論
6.
単一責任原則が守られていないことによって 引き起こされるCriticalな問題
7.
public abstract class
ActionForm implements Serializable { public void setMultipartRequestHandler( MultipartRequestHandler multipartRequestHandler) { this.multipartRequestHandler = multipartRequestHandler; } リクエストパラメータを保持するためのActionFormに、Multipartのハンドラもセット 出来るようになっているため、ここが攻撃の起点になってしまった
8.
Explicit is better
than implicit 似た話で、「"暗黙的"よりも"明示的"な方がよい」と いう原則がある。(多分Python由来) 暗黙に頼るとこういうことに…
9.
Mass assignment リクエストパラメータから、モデルに無条件でコピー すると、管理者権限のフラグなど書き換えられては 困るものまで、書き換えられてしまう問題。 JavaでもBeanUtils.populateで時々発生する。
10.
Map Entity × 暗黙の一括コピー SrcBean
src = new SrcBean(); DestBean dest = new DestBean(); ... Beans.copy(src, dest).excludes("foo", "bar").execute(); かと言って、includes/excludesする属性を選んでコピーするのも 仕様とあっているか確認しづらい
11.
型で明示しよう Map Map Form Entity そのビジネスロジックで使用するものだけを 受け付けるためにForm的なクラスが存在する。 だからこそ、複数のタイプのリクエストでFormクラスを共用するのは危険
12.
および、Entityをイミュータブルに設計しよう http://www.slideshare.net/kawasima/ss-40471672
13.
まとめ ● 単一責任原則が何よりも重要 ● 守れないクラス/メソッドを作るよりはBoilerplateの方 がよい ● 暗黙的な設計に頼り過ぎると、大きな落とし穴が待っ ているので、どこかに明示的なレイヤを設計しよう ● つまりは、Simple made easy
Download