【開発哲学3_18】〜『CODE COMPLETE第2版 第18章(上巻)』の感想〜テーブル駆動方式
感想
要は、配列や列挙体、プロパティストアなんかを使って、検索よりも値の参照をやった方がいいよってことね。
(いやいやそうじゃないとゆー人もいるかもだけど💦)
ここで言っているのとちょっと違う例かもしれないけど、、、
(もう1年くらい使ってないからあんま覚えてないけど)
アクセスとかでもよく、
ODBCとかでテーブルを引っ張る
↓
ミラー
↓
参照したいコードが参照しにくいと、キー列を追加
↓
SQLやクエリで加工
👉参照しやすくする。
とかよくやってたなあ。
なぜかテーブル操作がよくわかっていない人ほど、
一時的な列を増やすとかをせずに、SQL文もいっぺんに書こうとして、
ミラーもできてないから失敗してたな。
それが本番系でバックアップもしてないからどうしようみたいな。
恐ろしすぎる、、、。
そもそも、
テーブル = データの集合体
って前提がわかってなくてこの章を読んでも、
テーブル = DBの機能
なはずなのに、なんで配列?なんで列挙体?インデックス?ってなっちゃうかもね、、、。
この本の後に読む予定のデータベースリファクタリング
に、DBやテーブルの操作のコツは書いていた気が、、、。
詳細
見出しとしては、
テーブル駆動方式の概論
直接アクセステーブル
インデックスアクセステーブル
段階型アクセステーブル
テーブル参照のその他の例
まとめ
って感じ。
うーん、、
正直、テーブルの参照はたしかに設計が出来上がった後とかであれば、コードも短くなるし、読みやすいコードを書くには合致しているから、
設計がガッチガチに固まっていて、どの値がどこのレコードに入り、インデックスの振り方で規約とかもあるならいいんだろうけど。
要求が固まっていない段階から、あまりテーブルや列挙体を意識しても、却って手間が増える感しかないし、
プロパティストアに関しては、可読性の問題もあるしなあ。
って感じかな。
ある程度、要求が固まって、これ以上根本を治す必要がないなら、
特定の値以外は、同じコードで処理を繰り返しているのであれば、それでもいいのかもしれないけど。
以前の職場で、
配列や列挙体でまとめて似た処理を繰り返せばいいのに使ってない。
冗長なコードしか書けない
↓
この人は、配列や列挙体を知らない(or書けない) = 素人
って見做してくる人も若手(年齢関係なく、こういう系の本を読まずに、1〜2年現場で開発したことしかない人)もいたな。
例えば、
//各シート名を配列に格納
let sheets = [shA,shB,shC,ShD,ShE]
//メイン処理
for( sheet of sheets){
//共通のシート処理
}
//保険料を配列に格納
let hoken = [kokuho,kaigo,kouki]
//メイン処理
for( hokenryo of hoken){
//共通の保険料処理
}
みたいな感じで、まとめるのは簡単なんだけど、
シートにしろ、ここで出てくる保険料の計算にしろ、シートや料率が細目ごとに分かれている理由は、
👉処理してほしい計算方法とか目的が違う
ので、あまり、テーブルにしてまとめすぎると、
シート毎とか保険料毎のこざこざした違いに対応できなくなるし、
業務内容の変更や保険料率の改定で、保険料計算やそれに伴なって出力しないといけない台紙や用紙も違ってくるからねえ。
👉処理の変更しやすさ(可変性)が格段に落ちる、、、💦
実際、
安易にまとめすぎた結果、却ってまとめたものをばらけさせないといけなくなって、大量のシート名だけ違うコードとかを量産した上で、各業務のコードを追記しないといけなくなって涙目になってた人もいたなあ。
まとめ
まとめるのは読みやすさではたしかに、利益💃
しかし、なんでもかんでも考えなしにまとめるのは却って有害🕺
それをまとめても(未来永劫は言い過ぎだけど)
処理に問題ないのか、
他の人が利用するのに見やすさを削ってもいいか
をきちんと考えてからまとめる✨
近況報告
年度が変わってから急に、
今まで使えてたロジックが使えなくなったり、
ライブラリとの連携コード変更してもうまく行かなかったり、
何かしら基板側でリリースされてない仕様変更か、それに伴う考慮もれが起きてそう。
こう言う時機械に弱く自分で判断ができない管理者や経営者ほど、それを障害とかバグって認識するのが遅いんだよなあ。
他社サービスならなおのこと、その会社の方で事象を認識してないから障害なんだし。
事象を言っても、障害情報で上がってないって言うだけだもんなあ。
こちらのコードやミスを指摘されてるようなもん 笑
(昨日まで正常に動いていたもんが、何も一切変えてないのに今日から急に動かない、、、なんて結構ザラ)
ま、結局、
💃総当たりハックしながら対応できる他の方法で対応する方が早い🕺
障害情報のアップなんて他社のリリース待ってたら、(アップル以外)早くても余裕で1週間くらいかかるしー!