ソースコードテロをやってみた

Github 上の OSS なプロダクトをデザイナーさんが奇麗なデザインを当ててくれる「デザインテロ」なるものがあるそうな。
http://www.slideshare.net/machidanohimitsu/ss-6678537


で、昨日 Twitter でこんなんが流れてきた。

ソースコードを見てみると短時間で出来そうだったのでやってみた。


before
GitHub - woopsdez/omikujigohan: at random lunch suggestion


after
GitHub - heavenshell/omikujigohan at PHP53_Silex_refactor


大幅に書き変えさせてもらった。
変更したポイントは以下の通り。

  • 最初 Python と Flask でやろうかと思ったが、元が PHP なので PHP5.3 にした
    • 今更 PHP5.2 だなんて…
  • デザインのテンプレートとロジックが一つの PHP ファイルに記述されているので、メンテナンスビリティを上げるためテンプレートを分離
  • menu.txt がドキュメントルートと同階層に置いてあるのはブラウザから見えてしまうので、静的に配信できるディレクトリを作成し、index.php はそこに設置
  • フレームワークを使わなくても良い規模だが、ルーティングとかめんどかったので Silex を使用
  • index.php 内でルーティングを受けるメソッドにゴリゴリ書くのが嫌なので Model のクラスを作成
  • テンプレートエンジンは Twig を使うのではなく素の PHP を使用
  • Silex に PHP のテンプレートエンジンが無くてビックリしたが、テンプレートとなるファイルを include してごまかす
  • .htaccess を設置して index.php/result ではなく /result というふうにアクセスできるようにした
  • テストコードが無いのでロジックの部分のテストコードを作成
    • Action となる部分のテストって何書いたらいいの…
  • ロジックの部分は無名関数を使い簡潔に書けるように心がける
    • use の引数で & を付けないとスコープ外の変数が束縛されないって…


というような事をふまえてやったら割と簡単に出来た。
こういった形で全く面識がない方と繋がるってのは面白いし楽しい。