大江戸Ruby会議

23
Rubyにおける Clean Code戦略 2011/04/10 大江戸Ruby会議

description

2011/4/10 大江戸Ruby会議

Transcript of 大江戸Ruby会議

Page 1: 大江戸Ruby会議

RubyにおけるClean Code戦略

2011/04/10大江戸Ruby会議

Page 2: 大江戸Ruby会議

赤松 祐希(@ukstudio)フリーのRubyプログラマ

http://[email protected]

Page 3: 大江戸Ruby会議

どうしてこうなった

Page 4: 大江戸Ruby会議

“しかし、ディルバートよ、間違っているのは、我々の星回りではなく、我々自身なのです。”

Clean Code P.30

“あなたがそれに負けない熱意を持ってコードを守ればよいのです。”

Page 5: 大江戸Ruby会議

http://www.flickr.com/photos/calliope/2313727442/

戦略

Page 6: 大江戸Ruby会議

テスト駆動開発リファクタリング

継続的インテグレーション

もしまだやってないのなら...

Page 7: 大江戸Ruby会議

http://www.flickr.com/photos/creative_tools/4353923698

汚れたコード

Page 8: 大江戸Ruby会議

20%

リファクタリング

Page 9: 大江戸Ruby会議

組み合わせる

http://www.flickr.com/photos/picken/3312949360/

ストーリー

リファクタ

Page 10: 大江戸Ruby会議

細目にクリーンにする

http://www.flickr.com/photos/picken/3312949360/

Page 11: 大江戸Ruby会議

プログラマの知るべき97のこと P.17

“ボーイスカウトには大切なルールがあります。それは、「来た時よりも美しく」です。たとえ自分が来た時にキャンプ場が汚くなっていたとしても、そしてたとえ汚したのが自分ではなかったとしても、きれいにしてからその場を去る、というルールです。”

Page 12: 大江戸Ruby会議

S.O.L.I.D原則

SRP OCP LSP

ISP DIP

単一責任 オープン・クローズド リスコフの置換オープン・クローズド

依存関係逆転

リスコフの置換

インターフェース分離

Page 13: 大江戸Ruby会議

単一責任の原則

Page 14: 大江戸Ruby会議

変更理由 = 役割・責務

Page 15: 大江戸Ruby会議

Userクラス

バリデーション認証権限

バリデーションに関する修正

認証に関する修正

権限に関する修正

Page 16: 大江戸Ruby会議

mixin

Page 17: 大江戸Ruby会議

Userクラス

バリデーションに関する修正

認証に関する修正

権限に関する修正

Authenticationモジュール

Validate::Userモジュール

Roleモジュール

Page 18: 大江戸Ruby会議

http://www.flickr.com/photos/seanfx/5092676658/

http://www.flickr.com/photos/stevensnodgrass/4460594204/

オープン・クローズド原則

Page 19: 大江戸Ruby会議

ダックタイピング

Page 20: 大江戸Ruby会議

ブロック

Page 21: 大江戸Ruby会議

http://www.ruby-assn.org/ruby-logo.html.ja

Rubyらしい設計

Page 22: 大江戸Ruby会議

http://www.flickr.com/photos/hawee/2194569264/

http://www.flickr.com/photos/usgo55/2885049548/

文化

スキル

Page 23: 大江戸Ruby会議

議論しよう