Standing on the Shoulder of Linus

Home / 2014 / 3月 / 16 / nagoya php vol.4 に参加しました。

nagoya php vol.4 に参加しました。

nagoya php vol.4 に参加しました。特定のフレームワークやアプリケーションではなく、純粋にPHPの勉強会です。

フォークじゃない 〜 横へな 2014.2.1 問題を実際に皆で解いてみる、という面白い試みがありました。codeiq.jpやcheckio.org等でコードを書いてみよう、というのがありますが、あれを集まった人がそれぞれ実行する、という形です。

素のPHPで書くことで、いろいろな発見がありますね。手続き型で書くことも最近ではあまり無くなりましたが、あえて書いてみると、オブジェクト指向についても再認識できるような気がします。私の書いたのはオブジェクトを使ったコードですが結構手続き型に近い形です。会場では後藤さんが手続き型で書いていました。

私の書いたコードです。(gist.github.com/ounziw/9563282)

お客が並ぶのは$queuelistですが、xが来たら$jammedlistに追加するようにします。$jammedlistの値が1以上かどうかで、xが来ているかどうかを判定しています。

元の課題では「xが来たらそれ以降そのレジはストップ」ということだったので、こういう実装にしてみました。特異な条件をつかっている分、シンプルに記述できますが、一方で汎用性は下がっています。元の課題を少し変更して、「xは通常の客の2倍の処理時間がかかる」にすると、このコードだと大幅に変更しなければなりません。「客」もしくは「レジ」を別オブジェクトに分離すると、この辺にも対処しやすそうな気がします。

ほんとは全部テストを書くべきなんでしょうけど、手抜きして「待ち人数が最小の所を求める」と「最終の出力を確かめる」だけ書いています。

$this->queuelist[$i] -= min($this->queuelist[$i], $this->capabilitylist[$i]);

の所は、元は

$this->queuelist[$i] = max(0, $this->queuelist[$i]-$this->capabilitylist[$i]);

のように書いていたのですが、第18回オフラインリアルタイムどう書くの問題をPythonでを参考に変更しました。

個人的にPythonはすごくお気に入りなので、CodeIQでもPythonに参考にする事が多いのですが、綺麗に書いてあるコードが多いような気がします。もしかしたらPHPのコードが汚いものが多いから、そう感じるのかもしれませんが。

関連

Posted in php | Tagged PHP, テスト
← 「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」を執筆しました。 OSC浜名湖に出展しました。 →

アーカイブ

人気の投稿とページ

  • キンドル本を印刷する(PDFに変換する)方法
  • 名古屋駅から国際センターまでの道のり(徒歩)
  • AGPL ライセンス(GPLとは似ているが違いもある)
  • 6年使ったイーモバイル(Y!mobile)を解約手続。店頭でSIM返却
  • JP-Secure SiteGuard WP Pluginは不正ログイン防止に役立つか

プロフィール

水野史土:月70万PVホームページ制作会社のレスキューワーク株式会社で、PHPソフトウェアのサポートを行っている。concrete5コミュニティリーダー、Novius OSコアコード貢献者でもある。 詳しくは管理者詳細参照。
大好評WordPress書籍「WordPressユーザーのためのPHP入門 はじめから、ていねいに。」サポートページ

Copyright © 2015 Standing on the Shoulder of Linus.