namazu-dev(ring)


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: proposal: nmz/mode



細かい話です。

Satoru Takabayashi <satoru-t@xxxxxxxxxxxxxxxxxx> wrote:

>それから、 magic.h, critical.h を廃止して libnamazu.h にまと
>めました。ついでに、error handling の処理を大ざっぱに書き換
>えました (DIE_HLIST, DIE_ERROR の類を廃止)。目を通してもらえ
>ると助かります。 > 野首さん

構造体 HLIST, HLIST_DATA に stat というメンバーを作ってそこ
に、エラーの状態を記録するようにしました。(たくさんヒットし
すぎたとか、インデックスを開くのに失敗したとか、エラーの状態
はたくさんある)

# 今、気づいたのだけど、これらの状態は PHRASERES に格納すべ
# きでした。 (output.c の print_word_hit_count() で使うので) 

で、最悪のエラー (メモリの確保に失敗したとか) のときは stat 
に ERR_FATAL を書き込んでそれを確認するようにしました。

が、よく考えてみれば、 HLIST, HLIST_DATA を操作する関数の戻
り値をすべてポインタにすれば、最悪のエラーのときは null
pointer を返せるので、それで判別できます。(自然なやり方)

というわけで、HLIST, HLIST_DATA を操作する関数の戻り値と引数
をすべてポインタで受け渡しするように修正したいと思います。メ
モリのコピーが減るので、わずかに効率が上がる、という効果もあ
ります。

いかがでしょう? (特に野首さん)

   ...

エラー処理についてじっくり考え直すことにします (難しいなあ…)。
そもそも、データ構造から考え直した方がいいのかも (きっとそう
だ)。

# 書き直すべき汚いコードがまだ山ほどあります。とりあえずは動
# いているけど、長期的な保守・改造を考えれば、やはりきれいに
# 書き直すべきでしょう。(scratch から書き直したい、という気
# 持ちはあるけど、今はその時期ではないと思う)

p.s.
最初の設計が悪いと、あとから修正するのが大変である、という事
実を身にしみています。 ;-)

-- Satoru Takabayashi
プログラミングをもっと勉強せねば