プログラマ ずんべ の日記

zunbe

プログラマ ずんべ の日記
プログラマ ずんべ の日記

探し物は見つかりましたか? サイト内検索を試してください。

海に… 海に… 演算の優先順位と評価順序 演算の優先順位と評価順序

2005/07/15

【若いモンの発想はわからん】(その1) どのファイルを処理するべきか

今日、こんな事があった。

簡単なバックアップのプログラムを社員に書かせたんだな。
仕様はこうだ。

(1).ファイル名は「YYYYMMDDHHNNSS.*」
(2).ローカルにあるファイル群を、他のサーバにFTPでアップロードする。
(3).指定期間以上経過したフバックアップァイルは、ローカル、サーバとも削除する。
(4).アップロード先のサーバに、既に存在しているファイルはアップロードしない。
(5).ファイルの日付は、ファイルのタイムスタンプではなく、ファイル名を用いる。

さて、社員がプログラムを作っているとき、こんな指示を出した。

・削除対象のファイルや、アップロード対象のファイルは、ファイル名にある日付で決めるのだから、以下の様に組みなさい。
「ファイルの一覧を取得した後、取得した一覧をファイル名でソートし、ソートした一覧の先頭から順に処理していき、日付が指定期間外になったところでループを終了しなさい。」

当然こうなりますな。
予めファイルの一覧を日付でソートしておいて、順に処理していけば、指定期間外になったところで、ループを終了すればいい。
それ以降に、指定期間内とマッチする事はありえないからだ。

ところが、うちの社員は仕様(4)でこれをやりおった。
サーバ上のファイルを走査して一覧を取得してファイル名でソート、その上で順位走査を行い、ローカルにあるファイルと突合せし、存在しているファイルを一覧から削除するというコードを書いた。
ところが、なぜか、「ファイルが存在していない」事を検出した時点で、その後の走査を打ち切り、それ以降は、全部アップロード対象とするコードになっていた。

こらこら、ファイルの存在の有無を検査するのに、なんで、日付が関係あるねん。
ファイルの日付に関係なく、「存在していないものをアップロード」しなければならないのに、何で「日付でソート」→「順にループ」→「ファイルが存在していないで終了」になるねん。
すべてのファイルを走査して、有無を検査しなきゃいかんだろうが。

まったく。



このエピソードはいかがでしたか?

投稿者 zunbe : 2005/07/15 01:10:16


コメント

 ちなみに、その失敗の状況で社員さんは「できた」と宣言したのでしょうか?

 どう考えてもサーバー上に意図しないファイルがたくさんできると思うのですが・・・。


 日付が絡む処理ってテストしにくい部分だと思いますが、師匠はそれを見越して「ファイル名で日付を判断」という仕様
を採用していると思いますので、デバッグも楽だと思いますが・・・。

投稿者 GOTTi : 2005/07/15 05:32:43

> ちなみに、その失敗の状況で社員さんは「できた」と宣言したのでしょうか?

「できた」と宣言したどころか、ずんべが「このコードはおかしい」と指摘したら、「日付でソートして、対象外になったら処理を終了すればいいと言ったじゃないですか」とのたまうんだな。

指示したコードの書き方が、「どんなケースでも当てはまる」と考えているところが、ずんべには理解できない。
どう考えたって、ファイルの存在確認を行うロジックには当てはまらないだろうに。

そもそも、そういったプログラムの書き方を指示しなければならない事自体、間違っている。
こんな事は、プログラマ自身が自分で考えて、自分で工夫して、自分で見出すものだ。
指示されてやるような事ではない。

> 師匠はそれを見越して「ファイル名で日付を判断」という仕様を採用している

そうなんだな。
できるだけプログラムを単純化するために、そのような仕様にしたのですが、それ以前の問題なんだなぁ。

あー、もー。
って愚痴っていても仕方がない。
がんばります。

投稿者 ずんべ : 2005/07/15 07:11:45

 そういう状況でしたか。
 僕がお世話になっていた頃に隣にいた、M谷さんの時も、
コードを書く前にフローチャートを書けということでフローチャート書かせてましたよね・・・。

 僕が学生のアルバイト雇っていたとき、Java のプログラムなどを作らせていたのですが、どうも、「段階的詳細化」というのがなかなか理解できないという感じでしたが、同じような感じかもしれませんね。
 プログラムのロジックを、一番低いレベルで全部考えてしまうんですよね・・・。
 ある程度のロジックの固まりをブラックボックスのようにして粒度を大きくしたロジックでプログラム(やシステムの構造)を考えられるようにならないと、一歩先には進めないですよね・・・。(僕もえらそうなことは言えませんが・・・)


投稿者 GOTTi : 2005/07/15 12:33:16

うちの社員の場合、それ以前に…

 DNSってなんですか?
 え?プログラムでFTPなんてできるんですか?
 サーバ/クライアント説明できません。
 EUCとSJISって何が違うんですか?
   :

人間、辛抱が大切です。

投稿者 ずんべ : 2005/07/15 12:51:00

 ホント 師匠には頭が下がります・・・・。

 しかし、そちらの社内のことですから、師匠自身でがんばってもらうしかないですからねぇ。(半分他人事)

 ただ、従業員に関していえば、こちらの会社は条件的にもっともっと悪い(まず地理的に通勤できる人って条件でほとんど該当なしになる)ので、今後同じ苦労を味わうことになっていくのだとは思いますが・・・。
 

投稿者 GOTTi : 2005/07/15 13:43:11


コメントしてください






保存しますか?


スパム対策:
この入力フィールドに「8」と入力してください。


プログラマ ずんべ の日記:ずばヒット アマゾン