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

[WitchTech 00728] Re: 文字列を数値に変換するには?



エル%高岡@鯆です。

2001/02/15 03:21 頃に
  「[WitchTech 00725] Re: 文字列を数値に変換するには?」ということで

Kenichiro Ueda さん
>> strcpy, strcat は見た目でやっていることが分るので、少なくと
>> も変なループが書いてあるよりは可読性が高いと思います。
> 「変なループ」の話は、この件では問題にしていないと思って
> いたんですけど。それに変なループはループを見直すのが重要
> なんであって、この問題に限った話ではないですよね。

ループであろうが、sprintf であろうが、それは strcat よりも確実
に可読性を落とすと思っています。

「文字列の終端に別の文字列を繋ぐ」手法は沢山あるんでしょうけど、
最も可読性が良い、つまりコードが目的を明に示しているのは strcat
だと思っています。

strcat をそれ以外の用途に使う可能性を考慮してコードを読むような
ことはないでしょう。

逆に sprintf は 文字列の終端に別の文字列を繋ぐ 以外の用途を考慮
しなければならない可能性を持っています、それは可読性が落ちている
ということです。

単に私は、#707 にあった
> strcat ですが、使わないように習慣をつけたほうがいい

という点について、理由として

> 文字列編集を strcpy と strcat を連発してやると読みに
> くいし処理も遅いから

という2点を挙げられていること、またそれに対して

> sprintfの使いかたを覚えましょう

と、比較されているかのようなことについて、

・strcat, strcpy は sprintf と比較して可読性が悪い
・strcat, strcpy は sprintf と比較して速度が速い

という両方の点に対して異論がある、というだけです。

format 関数が潜在的に持っている問題点については、特に触れなく
て結構ですし、その話をしたいとも思いません。

sprintf(buffer, "%s%s", buf1, buf2);

が

strcpy(strecpy(buffer, buf1), buf2);

とか

strcpy(buffer, buf2);
strcat(buffer, buf2);

よりも高速になるような状況は非常に稀有だと思います。
# sprintf の strcat/strcpy に対応した使い方、が うえけんさん の
# 思っている使い方と違ったらごめんなさい。

--
// El (K.Takaoka) ! saepro@din.or.jp 
// PGP : 7F61 E57E 972B 595D 14CD  EFA6 C055 7B61 13D4 F367


ML Archives