失業率がますます高くなる中、多くの人が仕事を維持することがいかに重要かを認識しています。では、仕事を続け、自分をかけがえのない存在にするための良い方法は何でしょうか?単純な事実は、誰もあなたのコードを保守できない限り、あなたは仕事をうまく続けているということです。保守不可能なコードを書くのは特別なスキルですが、不思議なことに、一部の開発者にとっては自然に身につくようです。ただし、残りの開発者のために、保守不可能なコードを書き始めるためのヒントとヒントをいくつか紹介します。
最初にやるべきこと
最初のステップは仕事を見つけることです。あなたは、自分が成長し、維持できない可能性を実現できる適切な会社を探す必要があります。必ずしも会社の 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 文字だけにしてください。このようにすると、単純な検索では誰も必要なものを見つけることができなくなります。
$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安全指南