保守不可能な PHP コードを記述するためのステップバイステップ ガイド
失業率がますます高くなる中、多くの人が仕事を維持することがいかに重要かを認識しています。では、仕事を続け、自分をかけがえのない存在にするための良い方法は何でしょうか?単純な事実は、誰もあなたのコードを保守できない限り、あなたは仕事をうまく続けているということです。保守不可能なコードを書くのは特別なスキルですが、不思議なことに、一部の開発者にとっては自然に身につくようです。ただし、残りの開発者のために、保守不可能なコードを書き始めるためのヒントとヒントをいくつか紹介します。
最初にやるべきこと
最初のステップは仕事を見つけることです。あなたは、自分が成長し、維持できない可能性を実現できる適切な会社を探す必要があります。必ずしも会社の PHP の第一人者である必要はありません。そうであれば、それはさらに良いことです。仕事を探すときに、仕事の説明に別のプログラムから PHP への移行が記載されている場合 (つまり、あなたが決定権を握るのは自分であることがわかっているため)、PHP5 の 10 年の経験に加えて熟練度を必要とする誤解を招くような仕事も検索できます。 FrontPage と Netscape のコンポーザー。
この一生に一度の機会を手に入れたら、初日から一歩を踏み出しましょう。会議では積極的に発言し、自分の声を届けましょう。オブジェクト指向アーキテクチャの設計、企業、改革計画、十分な機能をより良くする方法について大胆に語ってください。もちろん、それに対応する取り組みも行う必要があります。重要なコーディング手順については、必ず全員に相談してください。
保守不可能なコア
優れた記事「保守不可能なコードの記述」 (仕事を続けたい人は必ず読んでください) からインスピレーションを得たもので、必要なものは次の 2 つです。マスターして習得すべき重要な概念:
-
他の人が何かを壊さずに何かを簡単に変更できないようにする必要があります。
メンテナにはコードを理解する時間がありません。保守可能なコードとは、コードの山の中から特定の部分をすばやく見つけて、コードがどのように機能するかをすぐに理解し、何かを壊さずに変更できることを意味します。そんなことはできません。他の人が何かを検索したり、期待する場所で見つけたりするのを簡単にしないでください。
-
コードは保守不可能に「見える」ことはできません (他の人がそう疑うため)、保守不可能である必要があります。
コードはメンテナにとっては普通に見えるはずですが、メンテナがまったく予期しないときに驚かされます。
コード規約はありません。 エンコードと命名規則に関する批判は尽きません。このようなことは、優れた組織では決して起こらないはずです。素晴らしいプロジェクトに取り組む必要があり、タブとスペースのどちらを使用するかを議論するのに数え切れないほどの時間を費やすことはできません。さらに、合意には制限があります。新しい人が会社に入社して、あなたの同意に慣れていなかったら、その人は惨めになるでしょう。不幸なプログラマーは無能なプログラマーです。尋ねる人には説明してください。誰もが自分の好みのスタイルでコードを記述できます。独自のコードに関しては、慣習を変えてください。月曜日は camelCase
で名前が付けられ、火曜日は
all_ lowercaseで名前が付けられ、金曜日は混合され、各 2 月 29 日にはハンガリー語表記が使用されます。
- #コメントは書かないでください。
あなたのコードは美しいので、コメントは必要ありません。あなたのコードを理解できない人は、それほど優れたプログラマではない可能性が高くなります。できればコメントを書かざるを得なくなったら、大げさに書いてしまいましょう。最も明白で重要度の低いコードを詳細に説明し、残りは省略します。
メモ帳を使用して をエンコードします。または、コードのインデントを表示しない別のエディタを使用してください。他の人を苦しめ、最終的にはチームを去ります。そうすれば、彼らの苦情を常に聞く必要がなくなります。メモ帳を使用する理由を誰かに尋ねられたら、次のように説明できるように準備してください。メモ帳は Windows (今日のクリエイティブなプログラマーにとって唯一のオペレーティング システム) から来ており、必要なトレーニングは必要なく、費用もかかりません。 Web ページのコーディングには、Word を含む任意のプログラムを使用できるという参考資料がオンラインで見つかると思いますが、実際の権限を持つのはメモ帳だけです。結局のところ、会社で雇用されているのはあなただけです。
単体テストを拒否します。あなたに質問してきた人には、あなたは高品質でバグのないコードを書くために雇われたのだと説明してください (したがってテストは必要ありません)。正常な思考を持つ人が、コードが正しく動作することを証明するために時間をかけて簡単なテストを作成する必要はありません。人生には、空が青い、太陽が東から昇る、コードが機能する、ありがとうございます、というようなことがあります。続行します (コメントと同様に、テストを受けるように強制された場合は、明白な部分をテストして残りを飛ばす準備をしてください)
# テンプレート エンジンを使用しない 。テンプレート エンジンは、ビジネス ロジック層とプレゼンテーション層を区別するのに役立ちます。コードの保守性を確保するため、このルールに従うことはできません。 PHP の父であるラスムス・レルドルフ氏は、「PHP はテンプレート エンジンです」と述べました。テンプレート エンジンを使用する必要がある場合でも、テンプレートにビジネス コードを追加したり、データベース アクセス層に HTML (および CSS と JavaScript) コードを慎重に混合したりするなど、テンプレート エンジンを悪用する方法を見つけてください。
一般に、可能な限り、PHP、HTML、CSS、および JavaScript コードを同じコード行にきちんと混在させるようにしてください。 PHP コード内でインライン スタイルを使用して JavaScript および HTML コードを作成します。誰かに尋ねられたら、このパターンは「カプセル化」と呼ばれるものであり、コードに対して全責任を負うことを伝えてください。 ###############バージョン管理###。これを避けるのは難しいですが、フォームやバージョン管理から解放されるように努める価値はあります。ディスカッション中に、冷酷なバージョン管理ソフトウェアに依存するのではなく、これによりチーム メンバー間のコミュニケーションが向上することを実証できます。誰も説得できなくても、絶望しないでください。送信時にすべてをコミットする必要はありません。独自のコードの一部をローカルに保存します。これらの小さくても致命的なコードは、あなた以外の誰かがプロジェクトをビルドしてデプロイしようとするとプロジェクトを破壊します。捕まった場合は、そのコードはまだプレゼンテーションに適していないと主張してください。結局のところ、あなたは、後輩チームを教育できる高品質のコードと優れたソリューションを提出したのですから。これらの小さな男の子と女の子は、期待してあなたを見上げているでしょう。フレームワークを構築します。そうすれば必然的にあなたは建築家となり、あなたの権威は疑いの余地がありません。このようにして、最も経験豊富なメンテナでも検出できない秘密の規約 (もちろん、そのほとんどが矛盾する場合もあります) を追加できます。あなたのフレームワークがすべてを処理してくれるので、誰もフレームワークをわざわざ理解する必要がなく、あなただけで開発が容易になり、会社全体の生産性が向上するので、誰もが満足するでしょう。フレームワークをオープンソースとしてリリースしないでください。a) フレームワークは会社の財産であり、会社はそれに多額の資金を投資しています。b) オープンソース コミュニティはあなたを笑いものにし、あなたの虚勢の終わり。
命名関連変数名は不可解なものにする必要があり、できれば 1 文字だけにしてください。このようにすると、単純な検索では誰も必要なものを見つけることができなくなります。
クラス名とメソッドは 1 文字で定義するのが最適です。本当に通常の名前を定義したい場合は、常にその名前を使用してください。情報を隠す最善の方法は、それを頻繁に使用することであることを忘れないでください。同じ名前を再利用する場合 (「オブジェクト指向プログラミング」と呼ばれる)、括弧と中括弧を新しい行に置くと、コードの可読性が向上し、コード内にチームメイトを保持するのに役立ちます。正規表現をブラッシュアップする必要があります。次の点を考慮してください:
$noodles = 1; class noodles { var $noodles = 2; function noodles () { $noodles['noodles'] = 'noodles'; } } function noodles() { return new noodles; } $noodles = noodles(); var_dump($noodles);
派手な文字セットを使用して変数に名前を付けることもできます。一部の文字はローマ字に似ていますが、そうではないため、キリル文字は完璧です (すべて xopekacMEBCTAKXOPH)。その場合、次の出力は次のようになります。
$alert = 1; $аlert = 2; echo $alert;
2 番目の
アラートがキリル文字「a」で始まる場合、それは不可能です。
引用相关
即使你非常正常的定义来一些东西,但并不意味着你不能以有趣的方式来使用它。主要的武器有:
eval()
可变变量
可变类,比如
$strudels = "noodles"; $noo = new $strudels;
call_user_func()
基本上任何将代码视为字符串的语言结构都是你的好朋友。
// calling abc(); $z = 'A'; call_user_func($z .'bC');
大写
字母例子,函数方法名不区分大小写,滥用这个特点。
function abc(){ echo "abc";}AbC();
另一方面,数组的健(key) 对大小写敏感,也滥用这个特点。
$a['UseConvetionsOnlyTobreakThem'] = 1;if (isset($a['UseConvetionsOnlyToBreakThem'])) { // ?? 大写 B !!1!}
重写
在不期望的情况下重写全局变量,尤其是超全局变量。尽早重写 $_GET
数组中的属性,多次重写,$_POST
亦是如此。在 $_REQUEST
上做一些不起眼的重写作为点缀。如果是在 WTF-ed 上,你可以解释是在防止用户输入的 XSS 攻击、注入攻击以及其他的病毒攻击。
控制结构
使用、混合、匹配所有备选的 if
,while
,for
,foreach
,switch
语法。如果被问起来,所有的这些,请解释说你正在培训新员工学习真正的语言。
if ($a > 5): if ($a > 4) { while ($a > 0): echo --$a; endwhile; }endif;
嵌套三元运算符,没有比这个更好、更简洁的代码了。
// 猜猜这里输出什么echo true ? 'true' : false ? 't' : 'f';
在 for
的循环体内,再次增加 $i
以保持所有人的注意。或者,通过不使用 $i
来实现循环增量的惊喜。从不。
嵌套循环、深入,然后突然跳出它们(循环)。像 break 2
和 break 3
这样的代码存粹是为了娱乐,尤其是当混合了奇怪的缩进代码时。
这是一个开始!
这就是今天的全部。我希望你相信你自己也能做到,你也可以编写不可维护的代码。现在你的未来就在你的手中!当然,你也可以编写可读性比较高的代码,但是冒着被替代的风险。
Practice makes perfect.
原文地址:http://www.phpied.com/how-to-write-unmaintainable-php-code-2009/
相关文章推荐:
1. 2019 PHP安全指南

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。