RubyTapas #115 - #119
115 pp
★★
p = puts + .inspect
pp -> pretty print
indentation, nested hashes
出力を変数に格納して後で扱うことができる
pretty = repo.pretty_inspect
pretty
puts pretty
116 Extract Command Object
★
12分
RubyNation Conference
fundamental refactoring
200 lines
pull method out to extract command object
/commands/ folder
module Commands
arguments -> initializer
create and inherit Base class
@inspect_proc = -> { ... }
最終的に
Commands::Mimic.new(self, ...
@builderがたくさん出てきているから、さらにリファクタリングを考えても良い
117 Client Session Object
★★
Mechanizeでページを扱うプログラム
毎回ログインをするのもどうかと思うからclassに抜き出す話
class AdminSession
def initialize(login, password, options={})
def agent
def established?
def establish(login=@login, password=@password)
login_page = @agent.get('https://getdpd.com/login')
Mechanize良く使うから今度意識してみたい
118 Even And Odd
★
1分
i % 2 == 0
# ↓
2.even?
much more readable
119 Intention Revealing Argument
★★
store.transaction(true) do
のtrueは何を意図しているかわかりにくい
ローカル変数で名前をつける、シンボル渡す、引数のところで代入とかいろいろ可能なパターンはあるが、混乱を招きやすいものもある
結局、だれにでも比較的分かりやすい書き方は
read_only = true
store.transaction(read_only) do