1 / 155

青木峰郎 日本 Ruby の会

ふつうの Ruby プログラマに贈る Ruby プログラミング講座. 13-B-3. 青木峰郎 日本 Ruby の会. 自己紹介. 青木峰郎 (日本 Ruby の会). Ruby がらみで やってること. Ruby 関係のおしごと. 書籍 『Rubyist Magazine 出張版 』 MYCOM 書籍 『Ruby レシピブック第二版 』 SBC r 書籍 『Ruby ソースコード完全解説 』 Impress 書籍 『Ruby を 256 倍使う本 無道編 』 ASCII リファレンスマニュアル刷新計画 隊長

eavan
Download Presentation

青木峰郎 日本 Ruby の会

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ふつうのRubyプログラマに贈るRubyプログラミング講座ふつうのRubyプログラマに贈るRubyプログラミング講座 13-B-3 青木峰郎 日本Rubyの会

  2. 自己紹介

  3. 青木峰郎(日本Rubyの会)

  4. Rubyがらみでやってること

  5. Ruby関係のおしごと 書籍『Rubyist Magazine出張版』 MYCOM 書籍『Rubyレシピブック第二版』 SBCr 書籍『Rubyソースコード完全解説』 Impress 書籍『Rubyを256倍使う本 無道編』 ASCII リファレンスマニュアル刷新計画 隊長 標準ライブラリいくつか (net/http, fileutils, ...) それ以外のアプリ各種 (BitChannel,Racc, ..)

  6. まとめ:いろいろやってます。

  7. 今日の内容

  8. agenda 1/2 • 第一部:Rubyプログラミングのツボ • protected • pとpp • unlessとuntil • クラスと名前空間 • ファイル名とクラス名 • 大クラス主義

  9. agenda 2/2 • 第二部:Rubyプログラミングの、押しすぎるとヤバいツボのうちのいくつか • Visitorパターンめどい • 1.8と1.9でメソッド違いすぎwww

  10. 1.protected

  11. Q: protected使ってますか?

  12. protectedは通常必要ありません!

  13. protectedの95%は間違い

  14. Railsも使いかたを間違ってた

  15. RubyのprotectedはJava/C++のprotectedとは違う

  16. Javaの可視性

  17. Rubyの可視性

  18. Java/C++はクラス単位Rubyはオブジェクト単位

  19. 違いの出る場面

  20. Rubyではprivateメソッドも継承する class Adef m() puts “OK” endprivate :m end class B < Adef call_m m end end フツーに呼べる

  21. protectedの使いどころ

  22. Rubyでprotectedが活用できる場面 class SomeObject attr_reader :prop protected :prop def ==(other) @prop == other.prop end end 外から (レシーバをつけた形式で)呼べる

  23. ぶっちゃけprotectedなんて使わない

  24. 結論:Rubyではpublicとprivateだけ使ってればOK

  25. 2. pとpp

  26. Q: pメソッド使ってますか?

  27. p Object.new

  28. printfデバッグ(pデバッグ?)に便利

  29. Q: ppメソッド使ってますか?

  30. require 'pp'ppObject.new

  31. 表示が見やすい p

  32. C:\>ruby -e "p File.stat('.')"#<File::Stat dev=0x2, ino=0, mode=040755, nlink=1, uid=0, gid=0, rdev=0x2, size=0, blksize=nil, blocks=nil, atime=Wed Feb 13 06:55:59 +0900 2008, mtime=Sun Feb 13 21:03:44 +0900 2008, ctime=Thu Jun 29 16:52:04 +0900 2006>

  33. C:\>ruby -rpp -e "pp File.stat('.')"#<File::Stat dev=0x2, ino=0, mode=040755 (directory rwxr-xr-x), nlink=1, uid=0, gid=0, rdev=0x2 (0, 0), size=0, blksize=nil, blocks=nil, atime=Wed Feb 13 06:55:59 +0900 2008 (1202853359), mtime=Sun Feb 03 21:03:44 +0900 2008 (1202040224), ctime=Thu Jun 29 16:52:04 +0900 2006 (1151567524)>

  34. pのしくみ

  35. def p(obj) puts obj.inspectend

  36. 出力先はstdout

  37. 誰もがstderrに出力されることを期待しそして裏切られる誰もがstderrに出力されることを期待しそして裏切られる

  38. inspectを自分で定義すれば表示を変更できる

  39. to_sとinspectの違い

  40. inspectはデバッグ用途にだけ使おう!

  41. 3. unlessとuntil

  42. Q: unless使ってますか?

  43. Q: until使ってますか?

  44. unless = if notuntil = while not

  45. 制御構造はえり好みせず使おう

  46. ただしredoを除く

  47. 多様な意図を表現するには多様な制御構造を使ったほうがいい多様な意図を表現するには多様な制御構造を使ったほうがいい

  48. 「if/whileで書けるからいらない」?

  49. あらゆる制御構造はgotoで実現できます

More Related