教えてもらった本を読むよりは、自分なりに本屋さんで本を探して試行錯誤する方が身につくと思います。
(人間、自分で発見した知識の方が、重要感を抱くものだからです。)
とはいうものの、
きちんとした考えを持ってクラス設計が出来て、テストも行えるようになるにはどうしたら良いでしょうか。
という観点であれば、以下の本をオススメします。いずれもPHPの本ではありませんが、言語の構文の細部はどうでもいいので、考え方そのものを学ぶのに使えます。
オブジェクト指向入門 第2版 原則・コンセプト
バートランド・メイヤーによる、OOPの基本理論書です。Eiffelというマイナーな言語を使っていますが、かっちりとOOPを学ぶなら、まず外せないと思います。
増補改訂版Java言語で学ぶデザインパターン入門
結城浩によるデザインパターンの入門書。非常に質が高く、読みやすいです。デザインパターンを学ぶことで、世にあるクラスライブラリの設計の背景にある考え方がわかるようになります。
ソフトウェア作法
ブライアン・カーニハンとP.Jプローガーによる、小さな部品を組み合わせてソフトウェアを設計/実装するという哲学の入門書。UNIXの哲学はこの本に凝縮されていると言って良い。成功するソフトウェアの書き方のエッセンス。
**リファクタリング―既存のコードを安全に改善する― **
マーティン・ファウラーによるリファクタリングの決定本。xUnitによる自動テストがなぜ重要かと言えば、リファクタリングのために必要だから。リファクタリングしないなら、テストを一生懸命書いてもその威力は半減してしまう。なぜリファクタリングするのかを理解することで、テストの価値を理解できる。テストの価値がわからなければ、有意義なテストは書けません。
計算機プログラムの構造と解釈 第二版
ハル・エイブルソン, ジェリー・サスマン, ジュリー・サスマン共著によるコンピュータ科学の入門書。しかし、非常に学習曲線が急勾配で、初心者に限らず、誰にとっても厳しい。厳しいが、ここに書かれている理論はあらゆるプログラミングのエッセンスなので、非常に重要である。
Web上に全文公開されている。
https://github.com/minghai/sicp-pdf
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。