2008-03-16 春爛漫 [長年日記]
_ アジャイルプラクティス読書会
会社での読書会、(あまにょさんGJ!と言わざるを得ない)
6章「アジャイルなコーディング」は私が進行担当。
この章はプラクティスが多かったので、
最初に人気投票して人気順にやることにした。
25.意図を明確にするコードを書く 5票
26.コードで伝える 7票
27.トレードオフを積極的に考慮する 3票
28.インクリメンタルにコードを書く 3票
29.シンプルにすること 1票
30.凝集度の高いコードを書くこと 8票
31."Tell, Don't Ask" - 求めるな、命じよ 3票
32.取り決めを守ってコードを置き換える 0票
1人何票でも投票可、参加人数は10人くらい。
「凝集度の高いコードを書くこと」は
インパクト大な挿絵による貢献にぐっときた方が多かった模様。
(「おまえピアノかよ!」の絵)
凝集度が高いって読んだだけだとよく分からなかったのだけど、
みんなで話をしていたら理解が深まった気がする。
一言でいうと、
「責務が同じものは集めて、違うものは関連しないようにする」
のが凝集度の高いコードなのだろう。
「そのクラスのキャラを立てる」と言い換えてもいい。
あとはどこまで集めるかは見方次第、バランス重要、だから難しいのだろな。
もう1話題、"Tell, Don't Ask"の節で
「コマンドと問い合わせの分離」の話題を話したかったので独断で持ち出す。
状態を変える場合がコマンドで、
「いまどうよ?」って聞くだけの場合は問い合わせ。
問い合わせのときは状態を変えるべきではない。
変えられると困る。困ってる。まさにいま。(^^;)
ポイントは「コードで伝える」の節にある「悪い名前は間違った情報を伝える」ということ。
Getって名前だと問い合わせだろうと思って使いまくったら、
状態が変わってしおしおしお、、、とか。
そこで出た秀逸な議論。
「ファイルのリードみたいにポインタの指す場所が変わるものはどうする?」
確かに問い合わせなんだけど、読み出すポインタの場所が進んでいく。
結論としては、そういう場合はreadという名前を使えば、
皆ファイルのread(fread()とか)をイメージするので良いのでは、と。
なるほど納得。
そしてそーいう肝になる名付けはチームのコーディングルールで規定して意識あわせするのが吉ではと。
そういうときに使える言葉サンプル集ってどっかに書いてないですかね?
例えばget,set,read,write,update,,,とかとか。
CodeCraftには具体的な例はなかった。
Imprementation Patterns にあるかもとの話もでましたが、
どこかで見かけた方は教えてください。
ところで票数に私の数は入ってないのですが、
私が投票するならトレードオフ、シンプル、"Tell, Don't Ask"かな。
読書会に興味があるのですが、どんな感じで進めるので<br>しょうか?<br>最初にその章を読んで、それに対して皆で考えるような形<br>にも見えるのですが。<br><br>実は、年度明けから課内読書会をやろうかなとか思って、<br>水面下で企画検討中なのですが、検討している本人が読書<br>会がどんなものかよく分かってなかったり。(^^;<br>が、
私たちは今回はこんな感じでやってます。<br>・全員参加前に対象の章を読んでくる<br>・進行役が議論するネタを募る、ふる<br>・みんなで議論<br>・次のネタへ<br>・他、「私はこの文にぐっときた」など発表<br>本の種類とか、参加者が事前準備に時間をとるか、などで<br>良いパターンを考えるのがいいと思いますよ〜。<br>まずはやってみて、良い方法を模索するのもありだと思います。
なるほど。<br>一緒に読む会だと辛いかなと思ったのですが、<br>事前に読む縛りは有効そうです。<br><br>今考えてるのは、こんな感じでした。<br>・事前に当日読む部分の担当者を決めて、要点を纏めてもらう。<br> →これはヲレ視点で。<br>・当日、対象箇所を音読してもらう。<br>・その後、調査してもらた結果の発表<br>・他の人の意見を聞く<br><br>事前作業ってのが敷居が高いかなと思ってて、そこをどう<br>しようかなって考えてます。<br>強制したら勉強会の意味的にどうだろうとか。<br>本当の目的が自分で自発的に勉強する意識になるとっかかり<br>のお手伝いをしたいって事なので、強制はちょっとって感じ。