Hatena::Grouperlang

檜山正幸のErlang未確認情報 RSSフィード

 | 

2009-04-02 (木)

void, nullがない。

| 16:34

voidとかnullのように、標準的などうでもいい型、無効値がない。

アームストロングvoidというアトムが好きらしい。okを返している例も多い。undefinedもよくあるな。僕はnoneが好きでよく使っている(標準ライブラリでもnoneの例がある)。

最近思ったのだが、noneやundefinedは、積極的に「値がない/未定義」を意味するから、ほんとにどうでもいい、値を使うのはやめてくれ、捨ててくれ、ってときはvoidのほうがいいかも知れない。捨てられるのだから何だっていいんだけど、コンベンションとしてね。

エラー処理と責任問題

| 16:34

apply、アブネーー関数の存在確認、例外のリスローの問題だが、状況にもよるが、apply(M, F, A) だけして何もしないのが正解かもな。

undefだけ捕まえるのは明らかにマズイ、事前に存在確認しても例外が出るときは出る。対処のしようがないからそれは捕まえない。だったら、事前に存在確認もいらねーんじゃん。ダメなときゃダメなんだから。

コールバックを正しく作って正しく配備するのはそっち(誰?)の責任だから、呼び出す側は「正しくくセットされている」という前提で仕事して、そうじゃないなら天災人災だが)と考える。

Erlangだと「俺の責任」以外は「天災/もう知らん」と思ったほうが健全そうだ。

ホーア論理とブルートフォース・テスト

| 17:00

ホーア論理に始まりホーア論理に終わる -- 何が? まーともかく、仕様記述つったらホーア論理が基本でしょ。

一方、僕はモンキーテストとかブルートフォース式のテストが好き。理由は、猿とか猿に近い人とかに任せられるから。知的努力をするより、猿に任せた方がバグが出たりする。

受け入れテストをチャンとしている例を知らないのだけど、そもそも「受け入れテストをチャンとする」の意味がわからないし、イメージが湧かない。本来(?)なら、発注側が仕様を決めるから、発注側は仕様に対応するホーア式を持っているべきだろうが、そんな例を知らない。

受け入れテストをもしやるにしても、ブルートフォースになるんじゃなかろうか。実際のところ、リテラルで書かれたエクスペクテーションをイッパイ準備してもらって、はじからチェックするような形だろう。Excelファイルだったりするんだろう。

現実迎合派の僕としては、ブルートフォース・テストで済ませたいし、ブルートフォース or モンキーは絶対にやるべきだとも思っている。また一方、プログラマはホーア式を書くべきだとも思っている。しかし、そのホーア式がブルートフォースと一緒に使えないと意味ない。

つまり、ホーア式による仕様記述、実装プログラムコード、ブルートフォース用のデータ/エクスペクテーションをうまく協調させたい。プログラマがテストを嫌う状況を改善するのはどうも無理な気がするから、せめて「猿にテストさせやすいコードを書く」ように強制したい、圧力をかけたいのだよね。

size/1, tuple_size/1

| 17:31

size/1以外にtuple_size/1てのもある。もちろん、tuple専用。なぜか、binary_size/1はない。sizeが型オーバーロードしているなら、listのlengthも分かればいいのに。

wbdjkcqcpswbdjkcqcps2013/08/28 02:13vvoskfsmboh, <a href="http://www.teetlxcydi.com/">zeptfodakf</a> , [url=http://www.lfprwfvnog.com/]hrjlynvtod[/url], http://www.gjjqilpgam.com/ zeptfodakf

thxpfkitzuthxpfkitzu2014/03/18 18:03mxfmdfsmboh, <a href="http://www.cgeuxhshnw.com/">jxarsqwhxg</a> , [url=http://www.pfyavtpqjp.com/]pficlukqwf[/url], http://www.alpsvdvtvq.com/ jxarsqwhxg

lelocffzgtlelocffzgt2014/04/12 15:46vsmpafsmboh, <a href="http://www.mvqsrcvjyt.com/">jwqzrmhbxn</a> , [url=http://www.wnopwsfrwr.com/]xmzsismghz[/url], http://www.zpckatvivp.com/ jwqzrmhbxn

 |