[ PHP ] 腕に自信がある男が書いた超絶プログラムを紹介します

Pocket

私の周りに凄腕のプログラマーがいました。あくまで自称であることが残念ではありますが、とにかく自信満々です。中堅と大手の間くらいの規模のシステムインテグレータに勤務していますが、地位もあるそうです。設計はもちろん、プログラミングもバリバリとのことです。

スポンサーリンク

自分勝手に global 変数を使って浪漫飛行

噂では、彼は専門学校卒業と言うことで、多少の学歴コンプレックスはあったようです。大なり小なり、みんなコンプレックスを抱えています。そんなことは問題ではありません。仕事ができるかできないかです。

そんな彼がコーディングした PHP のプログラムです。どうぞ。

// ----------------------------
// main.php
// ----------------------------
require_once "func1.php";

$var = 2; // 変数定義

// func1をコール
func1();

// $var を使って何か処理する


// ----------------------------
// func1.php
// ----------------------------
require_once "func2.php";
function func1()
{
    global $var;

    // main.php で定義された $var を使って何か処理する

    // func2をコール
    func2();
}

// ----------------------------
// func2.php
// ----------------------------
function func2()
{
    global $var;

    // main.php で定義された $var を使って何か処理する

}

main.php スクリプトが func1.php に宣言されている関数 func1 をコールし func1 の中で func2.php に宣言されている関数 func2 をコールしているスクリプトです。

見事に main.php で宣言された変数 $var が浪漫飛行しています。Fly away です。会社の看板で偉そうにしていると誰にも指摘されないのでしょうか?困ったものです。

誰が保守するのでしょうか?このような人が下請けに対して 「 プロなら直せるでしょ。簡単でしょ 」 というような態度を上から目線でとってくるのです。プロならこのようなプログラミングはしないのですけどね。

男らしくエラーは無視する

続いて、またまた彼の書いたプログラムがこちらです。実に男らしいです。エラーなんてゴミです。無視します。だって男の子ですから。

function commitWork($con)
{
    // オラオラコミット
    $ret = oraora_commit($con);
}

Work?

oraora_commit のリターン値は?

まあ、別に彼にとってはベストな選択だったようで、自信満々に使用を強制されたと友人から聞かされました。その理由は保守性のためらしいです。友人いわく、「 ドヤ顔にドロップキックしてやろうかと思った 」 とのことです。

保守性 wikiより

指定された条件下で規定された手順および資源(材料・設備・治工具・ソフトウェア等)を使用してアイテムの保守が行われた場合、与えられた使用条件において、要求された機能が保持される、または修復される能力をいう。

私ならキンクニバスターですね。自分のお尻が壊れちゃいそうですが。

キンニクバスター

キンニクバスター

その他にも、現在ではデフォルトで Off になっていますが、GET や POST パラメータをグローバル変数に自動で格納する register_globals は当然のように On です。開発に使用した PHP のバージョンでは、既にデフォルトで Off だったにも関わらず、ドヤ顔で On です。

また、エラー出力も開発当初から出力 Off にしていたらしいです。エラーが出力されると邪魔だとの理由らしいですが、エラーの内容を確認しようとすると Notice エラーはジャンジャンバリバリ画面上に出まくりです。大フィーバーです。チューリップクルクルです。

以上、友人の愚痴話を、さも自分が体験したかのように記載した話です。

スポンサーリンク


Pocket

Leave a Comment

Your email address will not be published. Required fields are marked *