2011年07月20日

mnesia:transaction/1固有の返値を

Simple dungeonはぼちぼちと更新中。

ちょっと迷ってるのが、各種データの保存/読み込み処理の、成功/失敗判断の条件。

今のコードはデータの保存にmnesiaを使っています。

したがって、mmoasp:change_passwordのような関数はすべてmnesia:transactionを中で呼んでます。返値も、mnesia:transactionの結果をほぼ素で返したいところ。

mnesia:transaction/1は、成功すると{atomic, _}、失敗すると{ng, _}を返すわけですが、呼び出し側で、「{atomic, ok}が帰ってきたら書き込み成功」と書いてしまっていいものかどうか。

「mnesiaを隠蔽した方がいいのではないか」という気もしつつ、「どうせ当面はmnesiaでいくんだし」という気もする。

YAGNIの原則からすると、「mnesia以外のストレージへの切り替え機能をつけるまでは、素直に{atomic,ok}で書いておけ」という気もするのですが、Erlang初学者としては、ここの「{atomic」を上位コードのcaseとかwhenにバキバキ書くというのが、どうにも気持ちが悪い。



他の人の書いたコードを読むか、Erlang MLに質問投げてみるか、、、
posted by へろ at 15:50| Comment(2) | TrackBack(0) | Erlang
この記事へのコメント
mnesia:transaction/1 ではなく mnesia:activity/2 を使うといいですよ。
Posted by voluntas at 2012年01月06日 22:29
voluntas さん、ありがとうございます。

mnesia:transaction/1は非推奨に近いんですね。mnesia_key_cache.erlのソースとか拝見しながら、mnesia:activity/2に書き換え始めることにしますー
Posted by へろ at 2012年01月07日 14:40
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/46855418

この記事へのトラックバック