改めて、SOLID(+ α)
こんにちは、kgmyshinです。
この記事は DMMグループAdvent Calendar の6日目の記事となります。 昨日は弊社新卒ありかくん( ありかくんの記事はこちら )に引き続き本日は自分の担当となります。
何かしらの技術ネタだったりを仕込みたかったのですが、時間がなかったのもありまして、今ちょうど作っているSOLID+α原則研修そのものと一部コンテンツの紹介の場とさせてください。 こういう社内研修をやろうとしてますよ、やってますよという宣伝です。
内容としては、N番どころじゃない煎じですが、それでも世間一般に出回ってるコンテンツよりもわかりやすいものを目指してたりはするのでチラ見してもらえると嬉しいです。
本研修では 座学 -> 個人ワーク -> グループディスカッション という流れで行う予定です。
研修のスコープは「SOLID 原則 + CQS原則 + DRY原則」です。 ターゲットは「これらを知りたい方、復習したい方」で、研修のゴールとしてはこれらの原則を理解してもらうことで普段の設計・コーディング・レビュー時の質が上がることとしています。
スライドは全部で130ページほどあり、ここでは一部の紹介となりますが、おいおいスライドの外部公開もするので興味ある方はもう少しお待ちください。
参考図書
参考図書は以下になります。
原則の解釈にオリジナリティが出ては困るので、自分でも改めてSOLID原則の章をいくつかの資料で確認しながら作っています。
日程感
(1.5時間~2時間)×2日間 の合計3~4時間となっています。
- 1日目
- 2日目
- OCP(オープンクローズド原則)
- LSP(リスコフの置換原則)
- CQS(コマンドクエリ分離の原則)
- DRY(Don’t Repeat Your Self原則)
SOLIDの順番にはしていません。
コンテンツ覗き見
早速いくつかのコンテンツを覗き見してみましょう。
OCP(オープンクローズド原則)
スライド | 説明 |
---|---|
まずはよくあるOC原則違反の例を示します。 | |
OC原則を守った場合、修正範囲が新しいクラスだけであることを明示し、この後にどうこのクラス設計を導くのかについて軽く触れます。 | |
ブラッシュアップ中なのでスライドは省きますが、SRPやDIPに従ってクラス設計していくことでOC原則を満たすコードが書きやすくなることを説明します |
DRY(Don’t Repeat Your Self原則)
DRY原則は誤解も多いのでその誤解をまず解きつつ、またやりすぎてしまう例にもしっかり触れるようにしました。
スライド | 説明 |
---|---|
誤解が多いところなのでしっかり触れておきます | |
コード重複の例にも触れておきます | |
重要なところです | |
DRY原則を守りすぎることで辛くなる例に触れます | |
SRPなどを重視しつつ、バランス見てDRYしていきましょう |
その後
上記のような座学をやった後に、実際にクラス図を書いてもらったり、原則違反をしちゃってる例を修正してもらう個人ワークを行います。 その後、(なるだけ)普段一緒に働いてるチームメンバーな参加者とグループになってもらい、個人ワークの解答をそれぞれ見せ合っては解釈をチームの共通認識に落とし込んでいくという流れになっております。
所感
まだコンテンツ作り中なので、こういう例題あるといいよねみたいなのあればシュッとtwitterとかで投げてもらえると嬉しいです。
余談
自分のTシャツも登場させました
明日は 弊社新卒 slme くんの技術ポエムがあがるそうです。 内容は聞いてないですが、私、とても期待しています。