Webアプリケーション(PHP)開発用のベストプラクティスワークフローツールを検討してください。[閉まっている]


18

私の答えの例に従って、より経験のある人が質問を編集できることを本当に望んでいます:

  • バージョン管理を使用する
  • テスト駆動開発
  • デバッグコード(PHPのxdebug)
  • UML図の使用
  • 保守可能で再利用可能なコードのためのOOPの使用
  • 迅速なアプリケーション開発のためのフレームワーク(PHPのZend Frameworkなど)の使用

他に何か、または私が上で述べたことの詳細?

基本的に、私は開発者のチーム(私自身は開発者です)を結成している最中です。プロのプログラマー/デザイナーなどがどのように連携すべきか、どの標準/パラダイムを使用すべきかについてアドバイスをお願いします。

また、誰かが本に関する本やリンクを持っているなら、それを歓迎します!

私はこれを見つけましたが、私が探しているもの、または少なくともその一部を満たしていると思います:

http://www.ibm.com/developerworks/websphere/library/techarticles/0306_perks/perks2.html

回答:


9

バージョン管理を使用する

SVNは非常に一般的ですが、mercurialはよりハンサムで強力で、GUIをしっかりサポートしています。

テスト駆動開発

ユニットテストを行う場合は、すでに勝者側にいます。ツールについては、選択の問題です。テストはできるだけ簡単でなければなりません。それが、SimpleTestにPHPUnitを捨てた理由です。

デバッグコード

単体テストでは、xdebugはほとんど必要ありません。通常、プロファイリングのみにxdebugを使用します。(KCachegrind btwをご覧ください)

UML図の使用

コードロジックを反映するすべてのものの最大の問題は、同期を保つために多くの手作業が必要なことです。いくつかのタスクを自動化できますが、あまり便利ではありません。通常、何かをする前にumlを使いたいからです。他の問題は、図ツールはペンと紙またはホワイトボードよりもはるかに使いにくいことです。複数の開発者に問題を伝える必要がある場合、または自分で抽象化が必要な場合は、UMLを使用します。(「dia」は便利な無料のツールです。また、マインドマッピングツールはブレーンストーミングに非常に便利で、実際にはペンと紙と競合できます。)

保守可能で再利用可能なコードのためのOOPの使用

まあ、OOPはある程度機能します。:)良いアドバイス:構成>継承。継承は一目で再利用するための強力なツールですが、メンテナンスと疎結合はそれに苦しみます。2番目の良いアドバイス:メンテナンス>再利用。抽象システムは非常に強力ですが、維持するのも困難です。

迅速なアプリケーション開発のためのフレームワーク(PHPのZend Frameworkなど)の使用

RADは、アプリを早期に公開するのに適しています。しかし、少なくともスケーラビリティに関しては、いくつかのコンポーネント、特にORMが足を踏み入れるでしょう。ここでの主要な問題は、ドメインロジックをオブジェクトと連動させることです。これは、スケーラブルなデータベースに最適化された純粋なソリューションが必要な場合、ファクタリングを非常に難しくします。それに注意して、開発者に高レベルの抽象化レイヤーなしでデータベースを利用するように勧めてください。データベースの抽象化は神話であり、オームは嘘です。

接吻

新参者は通常、これらのベストプラクティスをすべて適用し、コーディング標準を設定し、すべての素晴らしいツールチェーンを使用します。一部の開発者には有効ですが、厳しすぎると精神的な障害に陥る開発者もいます。単体テストとscmは本当に必須です。しかし、単体テストを初めて使う人は、それが好きになる前にその価値を学ぶ必要があります。無理をせず、手順をステップごとに適用し、それがどのように機能するかを確認します。また、KISSはコードに要約されます。困難な問題を解決するための最善の方法は、それを間違って解決することです。6度の分離アルゴリズムが必要ですか?友達をランダムに選んでください。間違ったロジックを使用して、完全なアプリケーションを作成できます。顧客が最終的にそれを捨てることにした場合、誰もが多くのお金を節約しました。

機敏

アジャイル方法論、極端なプログラミング、スクラムなどについて学びます。そこには多くの本があります。どんな本でもあなたのチームを良くしますが、すべてのチームメイトを参加させるのが最善です。


1
素晴らしい答え!ありがとう。あなたのための+150担当者!質問の下のページの上部にあるように、投稿に他のものを自由に追加してください。@TODOのコード、コメント、ドキュメントソフトウェアなどのようなもの
ダミアンロシュ

2
  • バージョン管理: Windowsの場合、TortoiseSVNは私の経験上、最も直感的で使いやすい最高のものです。

  • フレームワーク: CodeIgniterの。PHPに最適なWeb​​開発プラットフォームを手に入れてください。

  • IDE: Netbeansは、Windowsで使用したPHPに最適なIDEです。

  • 単体テスト:いくつかのオプションがありますが、グーグル検索では多くの選択肢が見つかります。CodeIgniterには、独自のユニットテスターも用意されています。

  • デバッガー: Xdebug。

  • Javascriptライブラリ: Jquery

  • FTPプログラム: FileZilla

  • データベース管理: PhpMyAdmin

  • ワイヤーフレーム:バルシマスモックアップ、またはホワイトボードを使用します。

  • その他: apache、mysql、およびphpをすべて1つのパッケージで簡単にインストール、開始、停止、および再起動するには、Windowsの場合はWAMPを使用します。

また、多くの異なるWebサイトで作業する予定であり、それらのWebサイトのほとんどに、サインアップ、ログイン/ログアウト、ユーザーを検索するための管理セクションなどの一般的な機能がある場合、どのフレームワークでも小さなプロジェクトを構築することをお勧めします選択して、そのプロジェクトを開始するすべての新しいプロジェクトのベースとして使用します。通常、このプロジェクトを「スケルトン」と呼びます。xyz.comで作業を開始する場合は、スケルトンディレクトリをコピーして「xyz.com」という名前に変更し、いくつかの構成ファイルを入力します。いくつかの機能を備えたxyz.comのコピーがありますすでに働いています。


1
この投稿を読んで、Netbeans IDEを試してみることにしたいくつかの推奨アイテムをすでに使用していることを確認しました。PHP / Codeigniter開発に使用する価値のあるプラグインを誰でも推奨できますか?また、Wampserverでうまく機能しますか?
ゴートロン

1
@Gortron codeigniterでnetbeansを使用します。codeigniter / netbeansのオートコンプリートツールがあります:rhasan.com/blog/2009/09/codeigniter-auto-complete-with-netbeans PHPは本当にUnix言語であり、Linux仮想マシンでの開発は良い考えです。また、転覆を避けるために、2010年には配布されたもの(git、hg、bzr)が使用されます。hginit.com
Keyo

Framework: CodeIgniter. Hands on the best web development platform for PHP.これは、率直に言って、でたらめです。symfony、rails、またはdjangoを使用したことがある場合、いくつかの大きな問題が発生します。モジュラーディレクトリ構造、コマンドラインインターフェイスはありません。次に、フォームやモデルなどのコアコンポーネントが多くのコードを占有します。ソフトウェアパターンをまったく知っている場合、codeigniterが大きな時間を費やすことがわかります。少なくとも、コハナを使用してください。コハナは、コミュニティが死んだ後、CIでフォークされ、適切に行われます。
Keyo

Windowsを使用している場合は、phpMyAdminではなくSQLyog(コミュニティエディションがあります)をお勧めします。私は恥であるLinux上SQLyogのためのまともな代替、...見つけたことがありません
ディーン・ハーディングを

1
@keyo、リンクありがとうございます。Netbeansにオートコンプリートツールを追加しました。これは、モデルに多くの機能があるプロジェクトに非常に便利です。私はまだSVNから変更するつもりはありません。私は1軍だけで、現時点では分散システムは必要ありません。
ゴートロン

2

Click Upvoteの投稿にほぼ同意しますが、比較的大きなサイトで作業している場合は、Doctrine ORMと組み合わせたSymfonyフレームワークの使用をお勧めします。

来年のプロジェクトの期限が来たら、Symfony2とDoctrine2に投資する時間を取ってください。

また、Unixベースのシステムで開発することの重要性を十分に強調することはできません。Ubuntuは私の好みであり、優れたWebサーバーです。私は主にWindowsで作業していますが、デスクトップ(または仕事中のサーバー)のVMWare仮想マシンで実行されているUbuntuで開発しています。

IDEに関しては、NuSphere PHPEdまたはStorm PHPを使用することを強くお勧めします。


ORMの場合は+1。私はcodeigniterで定型的なクエリを書くのに無数の時間を費やしました。
Keyo

Linuxベースのシステムでは、PHPの方がはるかに優れています。あなたはCベースのプラグイン(libmemcachedまたはImageMagickのが頭に浮かぶ)を使用したい場合は特に
ディーン・ハーディング

いくつかの素晴らしいものは無料ですが、Linuxはどうですか?
dan_waterworth

0

UMLダイアグラムの使用は便利ですが、完全にオプションです。チームが意味を理解している限り、どんな図でも機能します。誰もがよく知っている標準的なものを使用しようとすると、問題が発生したり時間を無駄にしたりする可能性があります。

モックアップ(http://balsamiq.com)から各ページを開始するか、デザイナーに作成してもらうことをお勧めします。開発者が視覚的な美学に長けていて、どこからともなく良いページを作成することを期待しないでください。

複数の上級チームメンバーがいる場合は、誰かにコードレビューの義務を割り当てます。ローテーションでレビューを行わせます(レビューボード)。


0

共同作業を扱う場合、以下が必要です。

•バージョン管理の使用:GitまたはSubversionは非常にスムーズに機能すると思います

•テスト駆動開発:これが必須であることを学び始めていますが、極端に進めないでください。

•デバッグコード(PHPのxdebug):xdebugが私の選択です

•UMLダイアグラムの使用:これは、全員がOOプログラミングとDesignPatternsの実用的な知識を持っている場合に役立ちますが、常に良い習慣です。

•保守可能で再利用可能なコードへのOOPの使用:柔軟性、これがOOPの重要な側面だと思います。

•迅速なアプリケーション開発のためのフレームワーク(PHPのZend Frameworkなど)の使用:My Adviseは、最初のphpフレームワーク(ツールキットではない)SYMFONYです。非常に大きなコミュニティ、多くのドキュメントがあり、完全にphpに実装されています。私はそれで1年間働いてきましたが、OOPと完全に結びつきます

•バグ、機能要求などを追跡するシステムが必要になる場合があります。Mantisまたは Track。このシステムは非常に簡単で簡単です。また、サブバージョンをバインドし、コミットを特定の機能またはユーザーが投稿するバグに関連付けることもできます。

最後に、開発チームを率いて小規模な会議を定期的に開催し、特定の時点で誰もがシステムの状態を把握し、その方法で計画や方法を確認できるようにすることが重要です。

私の会社では、何に取り組んでいるのか、どこに合併症があるのか​​を毎日メールで送信しなければなりません。

幸運を祈ります!


0
  • フレームワーク:codeigniter、間違いなく。それはあなたが必要な場合がありますすべての機能を持っており、あなたがない限り、それらのいずれかを使用することを強制しないでくださいそれらを必要とします。
  • IDE、バージョン管理:私はかなり古く、私の答えが本当に役立つとは思わない。
  • Wireframing、UML:これも旧式ですが、実際にはホワイトボードが勝ちます。柔軟性と拡張性があり、適切と思われる規則をサポートします。
  • データベース管理:phpmyadmin;
  • 開発サーバーOS:私は平凡かもしれませんが、Ubuntu。LAMPサーバーを数秒でインストールします。新しいライブラリの追加にてないでください(恐ろしいimagick:1つのコマンド、完了)。PHPが好きなら、おそらく実稼働環境のLinuxサーバーで作業することになりますので、練習を始めた方が良いでしょう。(免責事項:Ubuntuは私のお気に入りのディストリビューションではありません)。
  • その他:grepは、他の人のコードをデバッグするときに非常に役立ちます(特定のモデルを使用するコントローラーの数を知りたいですか?完了!)。

編集する

最も重要なことを忘れていました:仕様。コードに触れる前に、プロジェクトの実際の仕様を書いてください。すべてのユーザーインタラクション図を念頭に置いてください。それは何世紀もあなたを救います。


0

バージョン管理 チームで作業しているので、配布されたものを使用するのが最善です。あなたの候補者はGitとMercurialです。つまり、チームはプロジェクトを中断せずにローカルにコミットできますが、作業を追跡し、これらのコミットを中央サーバーにプッシュできます。また、コードはリビジョンではなく変更セットとして追跡されるため、はるかに高速でマージの競合が少なくなります。hginitガイド(スタックオーバーフローの共同創始者によって書かれた)も読んでください。DVCSが何であるかについてもう少し理解できます。http://hginit.com/

また、rsyncまたはftpの代わりに、展開用のリポジトリを使用する必要があります。

テスト駆動開発テストの 内容によっては、多くの時間が浪費される可能性があります。小規模なプロジェクトではオーバーヘッドになるため、完全にスキップする必要はありません。ライブラリまたは大規模な長期プロジェクトを作成している場合は、必ずテストを作成してください。テストは、メンテナンスフェーズで役立ちます。TDDはすべてのバグを見つけることができないことに注意してください。ユーザーエクスペリエンスの問題、レイアウトの問題、パフォーマンスの問題などがあります。

ここでは、Xdebugのデバッグが基本的に唯一の選択肢です。Netbeansとうまく統合します。変数を出力する必要があると感じた場合は、ログファイルを使用する必要があります。フレームワークのログ機能を使用します。これは、本番環境でより安全です。

計画/図 優れたフレームワークを使用している場合、詳細な図をあまり作成する必要はありません。シンプルに保ち、リリースサイクルを短くして作業してください。計画を立てやすくなります。プロジェクトの要件と仕様は変更される可能性があるため、すべての時間を費やすことはしません。コードは最も詳細なレベルの仕様であることを忘れないでください。

バグ追跡ツール(以下を参照)を使用して、仕様をチームメンバーに割り当てることができるタスクに分割します。中央のツールを使用してプロジェクトを文書化します。バグトラッカーにはおそらくwikiがあります。

Mysql Workbenchなどのツールを使用して、図のデータベーススキーマを設計し、SQLとしてエクスポートできます。

フレームワークとOOP これはおそらく最も重要な部分です。迅速な開発とコードの再利用をサポートする人気のあるフレームワークを見つけてください。一部の人々は私がこれを言うのを嫌いますが、フレームワークはあなたの働き方を決定する必要があります。開発者がプロ​​ジェクトを切り替えて、特定のページのコントローラーがどこにあるか、テンプレート変数が何であるか、モデルを照会する方法を正確に知ることができるように、構造を提供する必要があります。一部のフレームワークはここで柔軟性が高すぎるため、開発者は常に同じ方法でフレームワークを使用するとは限りません。私はpythonの哲学が好きです。すべてを行う1つの明白な方法があるはずです。だからこそ私はdjangoとrailsが好きです。彼らは非常に熱心で、他の誰かのコードを見て、それが何をするのか理解できるということです。ここでは、symfonyが最適なオプションのように見えますが、

このようなスタックオーバーフローに関する多くの「フレームワーク」の質問があります:https : //stackoverflow.com/questions/2648/what-php-framework-would-you-choose-for-a-new-application-and-why

バグ追跡 チームに開発者向けの優れたバグ追跡ツールを提供します。basecampのような単純化されたものを使用しないでください。RedmineとUnfuddleは、優れたバグトラッカーの2つの例です。また、時間を追跡し、リポジトリと統合することもできます。チームは、メールやIMではなく、このツールを使用して問題についてコミュニケーションを取る必要があります。バグとドキュメントの既存の履歴がある場合、新しい開発者にとって簡単になります。この記事では、優れたバグトラッカーが行う必要のあることとその理由について正確に説明します。http://www.joelonsoftware.com/articles/fog0000000029.html


0

バージョン管理については、Bazaarをご覧になることをお勧めします。Gitと比較して、Windows、Mac OS、Linuxで実際に使いやすく、インストールが簡単であるという大きな利点があります。また、bzrコマンドはsvnのコマンドに非常に似ているため、以前にSubversionを使用したことがある人は、学習曲線をあまり必要とせずにBazaarを簡単に使用できます。Gitを見ています。

それとは別に、私はあなたの開発者に何も強制しないことを強く信じています。そのビーイングは、彼らが好むIDE、オペレーティングシステムなどを使用できるようにしました。

それとは別に、どんなに面倒でも、すべてのコードに対してwirteテストを行うことを強くお勧めします。

フレームワークの私見に対する賛成または反対の決定は、ここで行われた推奨事項に基づいて行うことはできません。機能に基づいて、あなたに期待できるものをリストし、それらのすべてに小さなテストアプリを作成することをお勧めします。(毎回同じものを書いてください。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.