先日また初心者ソースを見る機会があった。
元ネタがあり、それに追加編集を加えるのが今回の仕事らしい。
こんなんどうですか?
まだいけないとことかありますか?
など、学ぶ姿勢があることそのものに評価したいおいらがいてました。


(;´Д`)<あの〜。こういう構成のファイルなんですけど〜、こういうのってどうなんですか?
見せられたソースから判断。
( ´∀`)<1メソッド単位で見た場合には、これでええんでない?って構成になってるよん。
(;´Д`)<こんなんよーけあるんですけど。
( ´∀`)<HTMLを作成するための部品群のようにたくさんある分には、特におかしな点はない。むしろ歓迎すべきコトネ。
(;´Д`)<でもこんなんもあるんです。
そこにはAll in one Classとでも言えそうな様々な意味合いのメソッドの集合体がありました。
DBアクセスからHTMLの作成からUtility的役割まで。


(;´∀`)<あ〜あれだ。メソッド単位でみるとよい記述。
     しかしてクラス単位でみると、意味をごっちゃにしているのでよくない記述。
     そーゆーこったな。
     クラスをたくさん作るとincludeしたくない欲求に駆られるので、
     その欲望に負けたときにこーゆークラスが作られるもんだ。これ多分それ。


よーするにソースの構成者がサボったって話です。


(;´Д`)<そ〜ですか〜。
そんな時、なにげにヘッダコメントが目に入りました。


(,,゚Д゚)<作成者お前かーー!!!


よくよく話を聞いてみれば、元ネタとしたのは同じ会社の○○さんとのこと。
それを参考に作っていたらこうなった〜ってことだった。


ヽ(´ー`)ノよくある話ね。


ソースの構成などわが身のダメだしを求めた心意気に免じて
ソースは晒さないけれど、気になったことが1点。
そこから派生した組織の問題が1点。


気になったのは1文字変数。
当然のように使用されている「i」のループカウンタ。
おいらはいつもの如く聞いてみました。
( ´∀`)<その「i」はなんぞ意図あって使こてる?
     「プログラム記述者が記述時に楽したい」以外の理由があるなら聞いちゃろ。
こんな答えが返ってきました。
(;´Д`)<あの〜。本とかにあったんで〜。なんとなくです。


( ´∀`)<え〜。つまりは前の誰かが作ったのものにもあったと。
     ついでに世の風習に習ったと。
     そこに主張できる我がの言葉とこだわりはないのだな。

1文字変数に対するおいらの日ごろの主張はここいらに。
参照:
2005/09/08:コーディング規約を見直して
2005/04/21:1文字変数再び
2004/11/11:1文字変数
総じて一言にまとめると、
(,,゚Д゚)<Totalで見た作成効率落ちるから1文字変数使うのヤメロ。
ってこと。


組織の問題はこれが放置されていること。
例によってここの組織では「スコープの短い物に限りループカウンタはi,j,kを使用すること」なることをそのまんま利用している。
しかし。
今回見たソースはおおよそスコープが短いとは思えない形式だった。
こんな感じ。

for($i = 0,$i < $count; $i++){
  $recordset = $db->queryHoge($keys);
  // 中略
  foreach($recordset as $array){
    $tmp = $hogeObject[$array[$i]['member_id'] ];
    // 中略
  }
}

つまり、コーディング規約が機能してないってことよな。
機能していてこれなら形骸化しているってことよな。
やっぱり当初から心配していた通りの経過を経てるじゃない。
忙しさにかまけてソースコードレビューができないのであれば、より大きな不幸を浴びる予兆となる。


っとはいうものの。
今はじめて判明したわけじゃなく。
前から。
今改めてこれって問題だよね〜って認識されたこと。
今後も課題ですな。