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