🧩今日の学び
・SEARCH ALLの保証は命令ではなく、設計として明示しなければならない
・コメント・コード・構造の三層で書いて初めて「保証」になる
・速さを選ぶ命令ほど、責任の置き場所を先に決める必要がある
係長)じゃあ、その保証、プログラムのどこに書く?
SEARCH ALLの「保証」は、どこに書く問題
なるお)どこって…なぞなぞですか。
では虎をその屏風から出してください!みたいな?
屏風を燃やして、はい!こんがり焼けました!っていいんじゃないすかね。
係)お前一休さん読んだこと無いだろ…
な)だったら、なぜか像を動かさないと出てこないとかクランクで回さないと出てこない鍵のありかすか?
係)なんで、バイオハザードになるんだよ!
な)あ!バイオ知ってます?
係)いや、まぁ、その…
な)俺バイオも語れますよ!語り合いましょー!
係)そんなことはいいから!
いいか、答えは一つじゃない。だが「書く場所」は決まってる。
その保証は「コメント・コード・構造」の3か所に分けて書く。1か所だけは未熟だ。
コメントに書く保証:思想と前提を残す
係)まずは、「コメント」に書く(思想の固定)だ。
一番最初に書け。コードより先だ。
* このテーブルは ITEM-ID 昇順であることを前提とする
* 並び保証は SORT-ITEM-FILE で実施済み
* SEARCH ALL 使用可
これはな、
- コンパイラのためじゃない
- 実行のためでもない
未来の自分と、他人のためだ。
ここに書いてない保証は、無かったことになる。
コードで作る保証:壊れたら止まる仕組み
係)次に「コード」で保証を作る(事実)だ。
でもな、コメントだけじゃダメだ。お前みたいに簡単に嘘も書けるからな。
な)ひど!
俺が書くのは間違いコードだけですよ!
係)宣言するなよ!
だからコードで保証を作るんだ。
典型例
SORT ITEM-WORK
ON ASCENDING KEY ITEM-ID
または、
PERFORM CHECK-SORTED
IF SORT-ERROR
DISPLAY "SORT保証NG"
STOP RUN
END-IF
ここで初めて、
「このプログラムは並びを保証してからSEARCH ALLを使っている」
と言えるようになる。
構造で縛る保証:事故らせないための設計
係)さらに「構造」で縛る(事故防止)。
一番大事なのがこれだ。
悪い例
PERFORM READ-FILE
PERFORM SEARCH-ALL
PERFORM SORT
SORTがSEARCH ALLのあとになってしまうと事故ってしまう。
良い例
PERFORM SORT-ITEM-FILE
PERFORM SEARCH-ALL-ITEM
だから、SORTしないとSEARCH ALLに辿り着けないようにして、構造そのものが保証としてしまえ。
な)なんで、良い悪いで段落名が違うんすか?
適当すか?やり込める気すか?詐欺師の手口っすか!
ここに借りた10万円金貨があります!よく見ててください。この布をかけると、どうですか皆さん!10円玉に早変わりです!
っていう99990円詐欺っすね!
係)記念金貨を持ち歩くやつってどんなやつだよ…それもうサクラだろ。
まぁ、ちゃんと気がついてはいるんだな。
これは明確な理由があるから変えたんだよ。
(1) 段落名は「命令」じゃない
段落名は 契約書だからな、
• 何を対象にするか
• 何を保証するか
• 何が終わった状態なのか
これを名前に押し込む。
な)SORTOWATTAYO的な?
係)なんで日本語になるんだよ!見づらいわ!
例えばP100-SORT-AND-CHECK-ITEM のような書き方とかだよ。
これなら「並べ替えてチェックも済んだ状態」だと一目でわかるだろ。
な)ほーほー。
(2) 段落の並びは「フローチャート」
PERFORM が並ぶ順番は、
• 説明文であり
• 手順書であり
• 最小の設計図
COBOLはここが露骨に出る。
(3) 危険物(SEARCH ALL)は入口を狭くする
SEARCH ALLに入る条件を
• 名前
• 手順
• 構造
で縛る。
事故るやつは「事故る構造」を自分で作ってるからな、そういう構造にしないように最初から気にかけておけってことだ。
保証はな、
「信じてる」じゃなく「壊れたら止まる」まで書いて初めて完成だ。
だから現場では、
- チェックに失敗したら
DISPLAY吐いてSTOP RUN
これが普通だ。
おむすび
係)まとめるとこうだ。
| 場所 | 役割 |
|---|---|
| コメント | 意図・前提を残す |
| コード | 事実として保証を作る |
| 構造 | 事故らせない |
な)まとめるとこうだ!ってまたドヤ顔してるのはいいんですけどー
係)どこがドヤ顔なんだよ!
な)SEARCHの関係で回しすぎですよ、OCCURSだけに。
係)やかまし!
な)それにわからないの結構出てきてるんすけど…
係)ま、それはいいんじゃないか?
な)投げやり!?
係)だったら泊まり込みでやるか。
な)係長の家で酒飲みながらやりましょうよー。
係)だったら解散だ。
な)え!?
係長のワンポイント
SEARCH ALLの保証は、頭の中に置くものじゃない。
コメントで思想を書き、コードで事実を作り、構造で逃げ道を塞ぐ。
どれか一つ欠けたら、それは保証じゃなく願望だ。
並びを信じるなら、壊れた瞬間に止まる仕組みまで書け。SEARCH ALLは速さより、責任を書く命令だ。

コメント