A investigative report of refinements

14
yancya�には� Refinements�が わからぬ yancya�には� Refinements�が わからぬ A�investigative�report�of� refinements�� yancya RubyHiroba�2014 2014/09/21 Powered�by�Rabbit�2.1.3�and�COZMIXNG

description

RubyHiroba 2014 で発表した、Refinements についての LT 資料です

Transcript of A investigative report of refinements

Page 1: A investigative report of refinements

yancya�には�Refinements�が

わからぬ

yancya�には�Refinements�が

わからぬA�investigative�report�of�

refinements��

yancyaRubyHiroba�20142014/09/21

Powered�by�Rabbit�2.1.3�and�COZMIXNG

Page 2: A investigative report of refinements

自⼰紹介

@yancya

何者でも無い1⼈の Rubyist

Page 3: A investigative report of refinements

オープンクラス

特徴的な�Ruby�の機能

���������������������������������������������������������������������������������������������������������������

Page 4: A investigative report of refinements

オープンクラス

������������������������������������������������������������

��������������������������������������������������������

���������������������������������������������������������������

�����������������������������������������������������������

Page 5: A investigative report of refinements

オープンクラス

こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ

Page 6: A investigative report of refinements

オープンクラス

こんなモンキーパッチばかりしていると、プログラマがクラスを信じられなくなってしまうぞ

yancya�は「気をつける」のが苦⼿だろ

Page 7: A investigative report of refinements

Refinements

スコープを限定してモンキーパッチする仕組みがあるんだぞ

����������������������������������������������������������������������������������������������

�����������������������������������������

Page 8: A investigative report of refinements

Refinements

using�以降の、同⼀ファイル内のコードにのみ、影響するんだ

������������������������������������������

������������������������������������������������������������

���������������������������������������������������������������

Page 9: A investigative report of refinements

⾊々試してみよう

��������������

����������������������������������������������������������������

������������������������������������������������������������������������������������������������������������������������

Page 10: A investigative report of refinements

そ、そんなはずは

��������������

������������������������������

����������������������������������������������������������������

Page 11: A investigative report of refinements

何が悪いのか

&:symbol�って、:symbol.to̲proc.call(arg)�と同じだったような

Page 12: A investigative report of refinements

to̲proc,�send

やはり...

��������������

������������������������������������������������������

����������������������������������������������������������������

Page 13: A investigative report of refinements

気をつける

メソッドが、どこのスコープで実⾏されるのか、きちんと気をつけないとダメ

send�などのメタプログラミングメソッドを使うと、スコープがファイル外へすっ⾶んでいってしまうことがあるので

Page 14: A investigative report of refinements

結論

yancya�に�Refinements�は、まだ早すぎる

気をつけなくてもキチンと書けるようになるか、そういう仕組みを作るしかない

もうちょっと勉強してから出直してこよう

Powered�by�Rabbit�2.1.3�and�COZMIXNG