これは以前の記事ですが、再構成して再度公開するのが良いと思います。誰もが何かを得ることができれば幸いです。
1. はじめに
1.1. 標準化の重要性**
標準化の問題は、ある意味で全員に頭痛の種を与え、誰もが同じ状況にあると感じさせます。これにより、多くのプロジェクトで推奨事項が進化し、多くの企業が何週間もかけて一字一句議論することになりました。標準化は特定の個人的なスタイルではなく、ローカルな変更を完全に受け入れます。
1.2. 利点
プロジェクトが公的標準に準拠しようとすると、次のような利点があります:
· プログラマーはあらゆるコードを理解し、プログラムのステータスを理解できます
・新人でもすぐに環境に慣れることができます
· PHP を初めて使用する人が、時間を節約する必要性から独自のスタイルを作成したり、生涯にわたる習慣を形成したりするのを防ぎます
· 初心者が同じ間違いを何度も繰り返さないようにします
· 一貫した環境では、人々は間違いを犯す可能性を減らすことができます
· プログラマーには共通の敵がいます
1.3. デメリット
· php を知らない人が基準を設定しているため、通常、基準はばかげているように見えます
・基準が自分のやっている事と違うので、基準がバカに見えることが多いです
· 標準は創造性を低下させる
・長く協力し合う人々に基準は必要ない
· 標準により強制されるフォーマットが多すぎます
1.4. ディスカッション
多くのプロジェクトの経験から、プログラミング標準を採用することでプロジェクトをよりスムーズに完了できるという結論に至ることがあります。成功の鍵は標準ですか?もちろん違います。しかし、彼らは私たちを助けてくれるはずです。私たちはできる限りの助けを必要としています。正直に言うと、詳細規格に関する議論のほとんどは主に利己主義から生じています。技術的な完全性が欠けていると言える合理的な基準に関するいくつかの決定は、単なる好みの問題です。したがって、柔軟性を持ってエゴを抑制し、どんなプロジェクトもチームの努力に依存していることを忘れないでください。
1.5. 説明
1.5.1. 標準実装
まず、開発チーム内の最も重要な要素をすべて特定します。おそらく、その標準が状況に十分に適切ではない可能性があります。重要な論点がまとめられているかもしれないし、その中には強い反対意見もあったかもしれない。いずれにせよ、最終的に物事がうまくいけば、人々はその標準が合理的であることを理解できるほど成熟し、その後、他のプログラマもそれが合理的であると判断し、ある程度の留保を付けながらも安心してそれに従うようになるでしょう。自発的な協力がない場合は、要件を策定することができます。標準はコードでテストする必要があります。検討しなければ、この解決策は不正確さに基づく単なる笑えるものばかりです。
1.5.2. の観点に同意します
1. これはうまくいきません。
2. うまくいくかもしれませんが、非現実的で退屈です。3. それは本当です、私も言いました。
4. 私が最初に思いついたのはこれです。5. こうあるべきです。
もしあなたがネガティブな偏見を持って物事を見るようになった場合は、広い心でいてください。それでも「くだらない」と結論付けることはできますが、そのためには、さまざまなアイデアを受け入れる必要があります。時間に余裕を持って取り組んでください。
1.5.3. プロジェクトの 4 つのフェーズ
1. データベース構造
2.デザイン
3. データレイヤー
4.HTMLレイヤー
2. 命名規則
2.1. 適切なネーミング
ネーミングは番組企画の核心です。古代人は、人の本当の名前を知ると、その人に対して信じられないほどの力が与えられると信じていました。物事に適切な名前を考えている限り、それはあなたとあなたの後に続く人たちに、コードよりも大きな力を与えるでしょう。笑うな!
その名前は、それが位置する生態環境における何かの長期的かつ広範囲にわたる結果です。一般に、システムを理解しているプログラマだけが、システムに最も適切な名前を思いつくことができます。すべての名前が自然に適切であれば、関係は明確であり、意味を推測することができ、一般の人々の推論が期待できます。
対応するオブジェクトに一致する名前が少数しかない場合は、デザインをもう一度よく見ることをお勧めします。
2.2. クラスの名前付け
· クラスに名前を付ける前に、まずそれが何であるかを理解する必要があります。クラス名が提供する手がかりに基づいてクラスが何であるかをまだ思い出せない場合は、設計が十分ではありません。
· 3 つ以上の単語で構成される名前が混在していると、システム内のさまざまなエンティティ間で混乱が生じやすくなります。設計を確認し、(CRC セッション カード) を使用して、その名前に対応するエンティティに非常に多くの機能があるかどうかを確認してください。
· 派生クラスに名前を付けるときは、その親クラスの名前を使用する誘惑を避ける必要があります。クラスの名前はそれ自体にのみ関連し、親クラスの名前とは何の関係もありません。
· たとえば、システムがエージェントを使用している場合、実際に情報を送信するコンポーネントに「DownloadAgent」という名前を付けます。
2.3. メソッドと関数の名前付け
· 通常、各メソッドと関数はアクションを実行するため、その名前はその動作を明確に示す必要があります。ErrorCheck() の代わりに CheckForErrors() を使用し、DataFile() の代わりに DumpDataToFile() を使用します。そうすることで、関数とデータがより区別しやすいオブジェクトになります。
· 接尾辞が役立つ場合があります:
o Max - エンティティに割り当てることができる最大値を意味します。
o Cnt - 実行中のカウント変数の現在値。
o キー - キーの値。
例: RetryMax は最大再試行数を表し、RetryCnt は現在の再試行数を表します。
· 接頭辞が役立つ場合があります:
o Is - 何かについて質問することを意味します。 Is を見るたびに、人々はそれが問題であることがわかります。
o Get - 値を取得することを意味します。
o Set - 値を設定することを意味します
例: IsHitRetryLimit。
2.4. 略語にはすべて大文字を使用しないでください。
· いずれの場合も、次のような状況が発生した場合は、略語を表すためにすべて大文字を使用する代わりに、最初の文字を大文字に、残りの文字を小文字にできます。
使用: GetHtmlStatistic。
GetHTMLStatistic は使用しないでください。
理由· 名前に略語が含まれている場合、人々の直感は大きく異なるようです。ネーミングの意味が完全に予測できるように、統一した規制を設けることが最善です。
NetworkABCKey の例を考えてみましょう。C が ABC の C であるべきか、キーの C であるべきかに注意してください。これは非常に混乱します。気にしない人もいれば、嫌う人もいます。したがって、コードごとに異なるルールが表示されるため、それを何と呼ぶべきかわかりません。
例えば
class FluidOz // FluidOZ は書かないでください
class GetHtmlStatistic // GetHTMLStatistic は記述しないでください
2.5. クラスの名前付け
· 単語の区切り文字として大文字を使用し、その他の文字はすべて小文字で使用します
· 名前の最初の文字を大文字にします
· アンダースコア (_) は使用しないでください
理由
· 多くの命名方法によると、ほとんどの人がこれが最良の方法であると考えています。
例えば
クラス名OneTwo
クラス名
2.6. クラスライブラリの名前付け
· 現在、異なるベンダーやグループのクラス ライブラリ間のクラス名の競合を避けるために、名前空間がますます広く使用されています。
· 名前空間がまだ採用されていない場合、クラス名の競合を避けるために、クラス名の前に一意の接頭辞を追加するのが一般的です。もちろん、それ以上の文字を使用する方が良いでしょう。
例えば
John Johnson のデータ構造クラス ライブラリには、次のように Jj という接頭辞を付けることができます:
クラスJjLinkList
{
}
もう 1 つの妥協策は、クラス ライブラリを含むディレクトリを作成し (実際、Java もこれを行います)、異なる名前空間を表すために異なるディレクトリを使用することです。
例えば
Microsoft のデータベース関連のクラス ライブラリは次の場所にあります:
/classes/com/Microsoft/Database/DbConn.php
Apache のデータベース関連のクラス ライブラリは次の場所にあります:
/classes/org/apache/Database/DbConn.php
2.7. メソッドの名前付け
· クラスの命名と同じルールを採用します
理由
· さまざまなルールをすべて使用しているほとんどの人は、これが最善の妥協策であると考えています。
例えば
クラス名OneTwo
{
関数 DoIt() {};
関数 HandleError() {};
}
2.8. 一般的な**命名
· 属性名には先頭に文字「m」を付ける必要があります。
· 接頭辞「m」は、一貫したクラス名の規則に従います。
· 「r」が参照を表すのと同じように、「m」は常に名前の先頭を修飾します。
理由
· 接頭辞 m は、クラス** とメソッド名の競合を防ぎます。メソッド名とプロパティ名は、特に要素にアクセスする場合によく似ています。
例えば
クラス名OneTwo
{
関数 VarAbc() {};
関数エラー番号() {};
var $mVarAbcvar $mErrorNumber
変数 $mrName
}
2.9. メソッド内のパラメータの名前付け
· 最初の文字には小文字を使用します。
· 最初の文字以降のすべての単語は、クラスの命名規則に従って大文字になります。
理由
· メソッド内の一般的な変数を区別できます。
· 名前の競合を引き起こすことなく、クラス名に似た名前を使用できます。
例えば
クラス名OneTwo
{
ふ