がるの健忘録

エンジニアでゲーマーで講師で占い師なおいちゃんのブログです。

あっちへいっちまえ!!

PHP 5.3で登場、goto命令
http://journal.mycom.co.jp/news/2009/01/08/037/index.html
経由
Goto your Christmas presents with PHP 5.3
http://schlueters.de/blog/archives/94-Goto-your-Christmas-presents-with-PHP-5.3.html


んと…

ZEND DEVELOPER ZONE, PHP: GOTO 5.3でJohannes Schluter氏の公開したブログが紹介されている。氏は自身のブログにおいてPHP5.3で導入される新機能のいくつかを紹介しており、特にGoto your Christmas presents with PHP 5.3が興味深い。PHP 5.3で導入されるgoto構文をわかりやすいコードとともに紹介している。

はぁ「わかりやすいコード」ですかなるほどふぅんへぇはぁほぉあほ。


一応、サンプルコードを書いてみる。

    <?php
    function process_file($filename) {
        $fp = fopen($filename, "r");
        if (!$fp) {
            goto cleanup;
        }

        $row = fread($fp, 1024);
        // do something with the row
        if ($error_while_processing) {
            goto cleanup;
        }

        $a_few_bytes = fread($fp, 4);
        // do something again ...
            if ($error_while_processing) {
            goto cleanup;
        }

        /* ... */cleanup:
        fclose($fp);
    }

    ?>

……………orz
どう考えても

<?php
function process_file($filename) {

  $ret = false;

  $fp = fopen($filename, "r");
  if (false === $fp) {
    return $ret;
  }
  
  $row = fread($fp, 1024);
  // do something with the row
  if (false === $error_while_processing) {
    $a_few_bytes = fread($fp, 4);
    // do something again ...
      if (false === $error_while_processing) {
        $ret = true;
    }
  }

  /* ... */
  fclose($fp);

  //
  return $ret;
}

?>

せめてこうだべさっていうかどこにgotoが介在する余地あるねん?
或いはちゃんと例外でぶん投げるかね。

goto命令の多用はメンテナンスできないソースコードを生むため懸念されることも多いが、Goto your Christmas presents with PHP 5.3で紹介されているようにエラー発生時に飛ばしてまとめて終端処理をするというのはgoto命令がよく使われるケースだ。

えと…何のために「例外」がある思うてるねん?
っていうか筆者さん、例外って概念ご存じないのかしらんもしかして*1
さらにっていうかなんていうか。マイコミジャーナルってろくな記事が無いような気がするのは気のせいかしらん?


ついでに。元のやつだと「open出来てないハンドルをcloseしてる」し。
なんていうか…「だめだこりゃ」。

*1:Javaやってるはずだからgotoよりよっぽど例外のほうが馴染んでるはずなんだけどなぁ…普通に考えると

人は天沼矛を持てない

システム開発…にかぎらんのですが。とりあえず開発に限定するとして(会話が楽だからw)。


タスクのうち、おそらく8割程度は「きちんと細分化した上で担当とかが確定できる」です。
インフラはインフラ屋さん、DBはDB屋さん、設計は設計屋さん。で、マネジメントってか進捗管理プロマネさんに。
ただ。残念ながら、残り2割程度は、おおよそ「誰が担当してるんだかよくわからない微妙なところ」にあったりするです。
問題は。その「微妙な2割」は、細分化された各担当において「俺のタスクじゃない」と言われてしまうものになります。
でどうなるかってぇと、プロジェクトの終盤あたりでその辺が顕在化して、パニックになるわけです。或いはより一層よくあるパターンとしては「一番立場の弱い人間に押しつける」状況が発生するです。
でっすまぁちっ! でっすまぁちっ!! でっすまぁちっ!!!


おいといて。


根本的に誤解があるのですが。
元々、新しく作るものは、まだできあがっていない「混沌」です。
問題は。人間は(少なくとも自分が知っているかぎりにおいて)、天沼矛を持っていません。「光あれ」なる便利な言霊もなければ、12羽の雛をつれた水鳥を従えている訳でもないわけです。
従って。どんなに頑張って混沌をかき混ぜて、ある程度、したたり落ちる大地が出来たとしても。依然としてそこにはまだ混沌が残り続けている訳です。


ところが。
多くの、特に発注者は。したたり落ちた大地だけを見て「ああもう混沌はないんだ」と勘違いします。
ちなみに。2割の混沌を処理するために全体の8割の労力が必要なのは言うまでも有りません B-p


とりあえず。
プロジェクトに参画した時は、混沌に対する指揮命令権と抹消責任が「どこにあるのか」だけは明確にしておきましょう。
で、自分がもし担わざるを得ない場合。相応の覚悟と、覚悟にふさわしいだけのリソース(時間、報酬、権限その他)くらいはちゃんと請求しておきましょう。


…おもむろに。そゆう役回りを「沼矛(ぬぼこ)持ち」とか銘々してみようかしらん?
略して「ぬ」?w
用法例
「このプロジェクトの"ぬ"って誰〜?」