独学で覚えて、ウェブサービスを作るようになりました。
ただ「汚い」ので、キレイに書く&管理する方法を学びたいと思っています。
まずは浅く広くで良いので、おすすめの本やURLをお教えください。
以下、具体的にどう汚いかをご説明します。
継ぎ足し継ぎ足しでサービスを拡充した結果、
いろんなファイルやデータが散らかっています。
ファイルや変数の名前の付け方もディレクトリもルールが無く曖昧。
無駄な処理が多くて、スピードアップできる余地も多々あるはず。
でも、お客さんは結構来て、儲けも取れそうですので
そろそろ、きちんとした開発をしようと考えました。
こんな状態で「キレイに整えて下さい」とプロのエンジニアに投げると
絶対嫌がられると思うので、まず事前に自分なりに整理してみようと思いました。
ファイル・変数名のつけ方や、ディレクトリのルールや
オブジェクト指向?(よく分かってません)的な構成とか
複数人でプログラムを管理するためのコメントの付け方とか、
プログラム全体の構成図の書き方とか、
まずは浅く広くで良いので学べるサイトや本があればお教えください!
「PHP 標準コーディング規約」の項は参考になるかと・・・。
http://www.ivystar.jp/archives/category/php/
整理を始める事によって既存のシステムがおかしくなる事は多々ありますので
整理をするのであれば、まずは機能を紙に書き出して整理するところから始めて
テスト項目を洗い出した上で改変&置換していくほうがよろしいかと・・・。
ありがとうございます。
Zend Frameworkは名前を良く聞きますが
よく見てみたら自分がいま部分的に使っているのはPEARですね。
開発規約というものがあるのは知りませんでした。
最大公約数的な、一番使われている
フレームワーク?開発規約?は、何なのでしょうか。
ちなみに主に作っているのは、色んなAPIを引っ張ってくるようなマッシュアップサイトです。
会員登録でDB使いますが大した量ではありません。
きれいに書きたいですよね。私もまだまだ勉強中ですが...
> ファイル・変数名のつけ方や、ディレクトリのルール
PEARのライブラリの中を読んでみてはいかがでしょうか。
もちろん全てがきちんとしたきれいなコードというわけではないですが、
ある程度参考になるとは思います。
> オブジェクト指向?(よく分かってません)的な構成とか
PHPを学んでいくならオブジェクト指向は避けて通れないと思います。
あんまり入門書的なものが思い浮かばないので、とりあえず
webで調べてみてはいかがでしょうか。
http://www.atmarkit.co.jp/im/carc/serial/object01/object01.html
など「オブジェクト指向」で調べるといろいろ出てきます。
> 複数人でプログラムを管理するためのコメントの付け方とか、
PHPDocというものがあり、こちらでほぼ統一されるかと思います。
JavaDocのwikipediaが参考になります。
http://ja.wikipedia.org/wiki/Javadoc
各言語に○○Docというのがありますが基本的に書き方は一緒です。
あと既出ですがコーディング規約でコメントのつけ方を指定している所もあります。
> プログラム全体の構成図の書き方とか、
これはある程度の規模のフレームワークを読み解くのが一番かと思います。
コメントが日本語でついてるEthnaあたりが読みやすいかと思います。
あと「リファクタリング―プログラムの体質改善テクニック」という本がありますので
こちらはプログラムをきれいに書き直すのに有用かと思います。
ご参考まで。
ご丁寧にありがとうございます。
オブジェクト指向って、一種の思想なんですね。
頂いた情報を元に事例を読みこなして、勉強していきたいと思います。
ありがとうございました!
自分で記述したコードが不ぞろいなのであれば、関数の命名規則を作り、インデントを徹底的に行ってください。
まずは、他人が読むことを意識したコードを書く癖をつけるべきです。
PHPの絵本など、簡単な書籍でもサンプルコードはついているので、まずはそれを見て書式を真似するのがいいんじゃないでしょうか。
ありがとうございます。手元の書籍を参考にしてみますね。
まずは、自分の中のルールとして、コーディング規約や、命名規則をまとめてみてください。
すべては紹介できませんが、
*クラスの命名規則
や、クラス名、メソッド名を付ける場合の名前の対称性として、
get/ set
add / remove
start / stop
begin / end
send / receive
first / last
etc...
などを、あらかじめ決めておいて、少し意識しながらコーディングするといいと思います。
また、コーディング規約に関しては、他の方も提示されていますが
上記等を参考にまとめてみてはいかがでしょうか?
なるほどなるほど、この名詞の対象性は分かりやすいですね。
かなりイメージが沸いてきました。ご丁寧にありがとうございます。
重要な事は、今後、プロのエンジニアに依頼を出来るスキルをつける事で、ご自身がプロのエンジニアになる事とは違います。
既出の情報を事細かく理解する必要はありません。あなたは、ご自身で勉強されて、サイトを構築し利益も出し始めてるのですから、今後は、その利益をもっとあげる為の勉強に一番時間を費やすべきです。
プロのエンジニアも、プログラマーレベルであれば、綺麗に書く事の費用対効果の計算は出来ません。ドキュメントを1から10まで残す事、プログラムを綺麗に書く事、これらの作業には、時間が掛かります。複数の人間や、複数の会社に発注をする場合には、ある程度の基準が必要ですが、この基準をどこに置くかで、利益率に繋がってきます。
あまりにも基準を高くすると費用ばかり食って、利益を損ないかねません。
既出の情報は、良い情報なので、ご覧になるには良いと思いますが、わたしの経験からするとサラッとこれらの情報をお読みになったレベルで十分ですので、発注されて構わないと思います。何も現在動いている物を書き直してから発注する必要は無いと思います。
また、その方が効率的だと私は考えます。
仰るとおりですね。ありがとうございます。
ただお任せで発注すると今の身の丈には合わない価格になりますし
レベニューシェアは面倒だし
安値で発注すると、テキトーな仕事をする方が多かったので、
勘所は押さえておこうと思って問い合わせた次第です。
分業は美しいですが、スモールスタートにおいては中々難しいですね。。
ありがとうございました。
まず「キレイなコードとはどんなコードか」のイメージが必要でしょう。既に挙がっていますが、マーチン・ファウラーの『リファクタリング』は必携書です。リファクタリングとは何か、整頓されたコードとはどんなコードかという所から始まり、「コードが汚い」状態に気づくためのコツを教えてくれます。
オブジェクト指向の考え方の次は、クラス同士をどう関係させるとスッキリするかの経験。これはフレームワークをちょっと使ってみるのが手っ取り早いと思います。面倒ならばマニュアルだけ斜め読みしても相当得るものがあるとは思いますが。個人的には必要最小限の機能でまとまってるCodeIgniterが好きですが、正直どれでも大差ないと思います。
この道を究めたいなら『エンタープライズ アプリケーションアーキテクチャパターン』(PoEAA)が最強の一冊です。凄すぎて理解不能ですが。
開発規模が大きくなるとソースコード管理が必須になってくるので、TortoiseSVNをインストールした方がよいと思います。複数人開発ならばサーバーを用意して運用するのですが、ひとりならばサーバーではなくローカルのファイルを使ってバージョン管理をすることも可能です。
将来像の参考になりました。ありがとうございます。
ありがとうございます。
そうですね、こういう感じの情報がもっと欲しいです。
tipsというよりは体系的に学べるものだと尚良いです。
皆様宜しくお願いします。