Jun Inoue
jun.l****@gmail*****
2005年 12月 13日 (火) 05:51:25 JST
なんか [Anthy-dev 2694] が届かないのでこれ (2688) に返信します。 > 昔Yamakenさんのコードが有ったんですが、あれはさらに抽象度高すぎ & 名前長す > ぎで僕の頭が完全にオーバーヒートして捨ててしまった経緯が有ります。 …ちょっと見てみたい気も(^^; > Compactのコードを見るのには書いた僕ですら相当の集中力が要るので、とりあえず > その敷居を下げるような作業を率先して行う方針で行きます。発案者が読めないと > いうのは痛いですし... > > SCM_TAG_OTHERS_VALUE_OFFSET_STRINGは確かに分かりづらい。TAGも冗長 > で、SCM_STRING_VALUE_OFFSETが一番わかり易いですね。変更しておきます。 うーん、わかりやすくない。私が言いたいのは ・一塊として捉えられるぐらい短く ・用語はちゃんと定義しておく ということです。抽象化の階層を減らすのは前者の一環。ただしより重要なの は後者。 その名前だと例えば offset が何を指すのか、value が何の値なのかがわかり ません。見たところ cdr の 32 bit のうち、型情報で無い部分を value と呼 んでいて、value の最下位 bit の位置を LSB からの index で指定したもの を offset としているようですが、これらの情報はどれ一つとして source に 出てきません。これらの情報を名前に含めるのは無理そうなので comment に 書いては? という事が言いたい。まあ offset は value の意味がはっきりす ればわかりそうですが。 他にも SCM_PRIMARY_GET_VALUE_AS_INT の primary (tag) とか value とか、 DIRECT_CAR の direct とか、よく調べないと意味がわかりません。Value は 特に S に入ってる値なのか X なのか Y なのかという曖昧さがあります。 AS_INT とか AS_OBJ も普通に cast した方がわかりやすいように思います。 繰り返しになりますが、外に見えない中間物に対して verbose な名前をつけ るのは code clutter を助長して邪魔になるだけです。暗号みたいでもいいか ら、一旦覚えれば一目見てそれと認識できる名前の方が望ましいでしょう。 > # それとytagって何の abbreviation ですか? S->Y についてる型情報 (TAG) の意味です。今は名前が変わったから CDRTAG の方が適切かな。そうすると多分 CDR-coding と競合するわけですが。ちなみ に「ちゃんと comment つけとけばこんな暗号みたいなのでもいいと思う」と いう例として出しただけなのであんまり深く考えないでください。 それと、{x, y} か {car, cdr} かに統一してください。どっちでもいいとは 思いますが、私なら accessor とかの命名をより簡潔にするために {x, y} を 採用します (ただし x, y だと macro 引数と競合しそうなので適当に回避)。 -- Jun Inoue jun.l****@gmail*****