nagoya.php第11回に参加しました。
nagoya.php第11回に参加しました。
どう書く
nagoya.phpでは、毎回、一つの課題を決め、それを皆でコードを書く、ということを行っています。今回の課題は続柄でした。詳しくはリンク先に書いてありますが、
- 家計図(親子関係を示すもの)がある
- 2人を選んだとき、その2人の間の関係(親、おば、姉妹、いとこ、など)を調べたい
という課題です。課題では「子供が3人」という条件があるので、このことを活用したら楽にコードが書けるようです。
私は珍しくオブジェクト指向でかきました。https://gist.github.com/ounziw/ed70cd258158ebc5bfa875a8746d9ea2
womanというクラスに、「子供を産む」メソッドを実装しています。「子供を産む」ときに親子関係もセットする、という方式です。後は、「親を取得する」「子を取得する」「おばを取得する」...というメソッドを作成していきます。
- woman.php : womanクラスを定義しているファイル
- bear.php : 子供を産む処理を記述しているファイル
- index.php : メインの処理を書いているファイル
と3ファイルになりました。「子供が3人」という条件はwomanクラスで使用していないので、子供の人数が異なる場合でも対応しています。
「どう書く」が難しい人は
「どう書く」の課題は、1~2時間ぐらいで解く想定ですが、PHP暦2ヶ月、とかだと難しいかもしれません。そのような場合は一部だけ解く、もっと簡単な問題を解く、など、各自の経験に合わせてコードを書いていきます。
他の人のコード
私は今回はすごく直球のコードでした。コード量は多いですが、処理を追いやすいコードだと思います。
「親のほうへ遡っていく」という形で実装している方がいました。たとえば「姉妹」であれば、「お互いの親が一致する」ですし、「おば」であれば、「Aの祖母とBの母が一致する」です。私は思いつかなかった方法なのですが、面白いと思いました。
ピザの発注
懇親会のためにピザとビールを発注するのですが、どれくらい発注するのが良いか、というのを計算したい、という話がありました。金本さんのコードはこんな感じです。私はピザ枚数計算をJavaScriptで作成しました。