ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

念のためのコーディングって

うちのプロジェクトっていうか、そのお客さん全体の方針なのかは良く分からないのですが、データベースをいろんなシステムで共有しているっていうことがあるらしく、データベースでのロックは禁止されていたりします。
そんなわけで、タイムスタンプを比較して違っていたら残念メッセージを出すという、いわゆるオプティミスティック(楽観)なロック制御をしているわけですが、そんな中「念のため」というコーディングを見つけました。それはこんなん。

// タイムスタンプを比較
/* 現在のタイムスタンプを取得 */
if (/* !Timestampを比較 */ ) {
  /* 画面表示時と現在のタイムスタンプが相違しているためエラー */
}

// 念のためもう一度タイムスタンプを比較
/* 現在のタイムスタンプを取得 */
if (/* !Timestampを比較 */ ) {
  /* 画面表示時と現在のタイムスタンプが相違しているためエラー */
}

/* 後続処理 */

つうか、念のためを通過した後にタイムスタンプが変わってしまった場合はどっちにしても救えないですよね。なので、一回やれば良いでしょうということです。まあ、このロック制御方式もともとの問題があるっていうのもありますが。