top recent

本棚:CodeComplete

関連ページ

本棚

目次

  1. こんなふうに...
  2. ひどいコードの例...
  3. 同じようなコードの"価値"が言語によって変わって来るのは、ある意味で悲しいことだ...
  4. 365ページにしっかり CODING HORROR タグ付きで…w...
  5. もしかして原書でしょうか。...

こんなふうに

派生話題はページを分けてもいいんじゃないでしょうか。--SHIMADA

[[id:1226]] 2002-09-18 15:33:11


ひどいコードの例

Code Complete(本棚)

再帰を使った階乗計算がひどい例になっているのも印象的でした。曰く、再帰を使わずに済むならそうしろ、と。

#sumim

----
なぬ、そうだったっけ?*

SML:
fun fact 0 = 1
| fact n = n * fact (n - 1);

Haskell:
fact 0 = 1
fact n = n * fact (n - 1)

この簡潔な定義のどこが「ひどいコード」なんだと小一時間問い詰めたい。
お前パターンマッチを知らないだけちゃうんかと。‥‥‥え? C?*

[[id:1221]] 2002-09-18 15:10:59


同じようなコードの"価値"が言語によって変わって来るのは、ある意味で悲しいことだ

re:ひどいコードの例 (#2)

デザパタでも同じ事が言われてますね。
(とりあえずGoFの)デザパタの幾つかは、JavaやC++のローカルな事情のせいで必要になった(に過ぎない)パターンだ、と。

[[id:1224]] 2002-09-18 15:13:07


365ページにしっかり CODING HORROR タグ付きで…w

ひどいコードの例 (#2)

ええ。まあ、C でですが…。

#オフトピですが、インデックスの美しさを壊すのでこういうときは突っ込み機能は使わない方がよいのでしょうか?

#sumim

----
ひょっとしてこんなのですか? =D
int fact(int n)
{
n ? n * fact(n - 1)
: 1;
}

[[id:1223]] 2002-09-18 15:23:41


もしかして原書でしょうか。

365ページにしっかり CODING HORROR タグ付きで…w (#4)

僕の手元の訳書では、p419 でした。
「階乗やフィボナッチ数の計算に」再帰を使用してはならない、となっていました。
- C や Pascal に限った話でしょう。「速度が遅い事と実行時のメモリ量が予想できないことに加えて、繰り返しバージョンに比べてわかりにくい。」とあります。

再帰については、「つねに有効とは限らないが、分別をもって使用すればきわめてエレガントな解法となる」だそうです。

そうです。原書でのページ数でした。話は変わりますが、XOR かなにかを使って作業用変数を使わずに、2変数の値を入れ替える…といった Tips の紹介は同書にありますか? 実はその手の Tips がたくさん載っていると知人に聞いてこの本を買ったのですが、結局、当該記述は見つけられませんでした…(T_T)。Smalltalk は無視しているし…、踏んだり蹴ったりw。--sumim

[[id:1295]] 2002-09-25 01:37:31


top recent

HashedWiki version 3 beta
SHIMADA Keiki