Perlの記述はシンプル&省略したほうがいいのですか?

[上に] [前に] [次に]
ないん 2000/02/08(火) 12:01:04
Perlの記述なんですが、これは極力省略とかして記述する方がいいのでしょうか?
コメントも少ないですし・・・・。
そのほうが構文解析が早くなるとかの理由でもあるのですか?

Cとかでもそうだったんですけど、省略して書くと、
後で見たときに自分が混乱するので・・・(^_^;)

2000/02/08(火) 13:07:45
最近この手の質問多いですが、コメントを減らしたり、省略を駆使してシンプルかつエレガントにしたところで体感時間はほとんど変りません。
自身でおっしゃっているように、後で同じコードを再度解析しなくてはならない手間の方が何倍も無駄です。
コメントはガンガン書きましょう。
後で分からなくなりそうな省略はやめましょう。
これが一番です。

ないん 2000/02/08(火) 13:14:01
[[解決]]
繰り返しなしつもんで、すいませんでしたm(__)m
返答ありがとうございましたm(__)m

無責任官庁 2000/02/08(火) 13:14:07
これについては人それぞれ意見があるとは思いますけども、

>そのほうが構文解析が早くなるとかの理由でもあるのですか?
ありません。
モノにもよりますけど、人間が書かなかった部分については
インタプリタが補完するはずなので、よほど強烈に少ないソースにならない
限り、人間が気にするほどの違いはあらわれないはずです。

例えばですが、1万ステップのソースを、強烈にちぢめて書いたら
100ステップになった、とかなら、単純にI/Oが減るから
早くはなりますが。

UNIX系のプログラムには昔から書き方の美学というモノが存在するらしく、
まあ要するにプログラマの自己満足の世界ですが。
なにが「美しいプログラム」なのかは、書いた本人の美的センスに依存します。

なので、

>後で見たときに自分が混乱するので

は、論外です。自分が満足する書き方で書くのがベストです。
ただし、1本のソースが数十万ステップにでもなるようなら、
考え方を改めた方がいいと思います。

ちなみにC言語はコンパイルするので、どんな書き方しても結果は一緒です。

B-Cus 2000/02/08(火) 13:24:03
& を付ける付けないで動作が変わる場合がありますが、
詳しく知りたければ青ラクダ本などを読んで下さい。

ないん 2000/02/08(火) 16:08:53
無責任官庁さま、B-Cusさま、レスありがとうございましたm(__)m

UNIXの書き方の美学というのは初めて聞きました。
まだまだヒヨコですな自分・・・(^_^;)

ぺぱーど 2000/02/09(水) 00:33:17
例えば$bが0だったら$aに1を代入.それ以外なら0を代入なら・・・

A:
$a=0;
if($b==0){
    $a=1;
}

B:
if($b==0){
    $a=1;
}else{
    $a=0;
}

C:
$a=($b==0)?1:0;

という書き方が出来ますがA〜Cのどれが好みでしょうか?

匿名2000X 2000/02/09(水) 00:50:41
やっぱ、Aっしょ。

匿名2000X 2000/02/09(水) 00:52:07
Bでした。miss。

B-Cus 2000/02/09(水) 01:02:48
$a=$b==0;
とか
$a= ($b==0) || 0;
とかもあるでよ。
# 人それぞれ。

mm 2000/02/09(水) 01:46:05
>$a=$b==0;
比較演算子は、偽の場合に "" を返すんで、ちょっと違うかな…
数値で評価すればいいんですけど。

こんな単純なコードなら、可読性の良さからCです。
しかし、条件演算子は、嫌われてるのかな?…Rubyでもアンドキュメントだし…

ないん 2000/02/09(水) 09:04:18
私はBです。

mm 2000/02/09(水) 09:09:45
>$a= ($b==0) || 0;
って、"" の代わりに 0 を返すようにした改良版なんですね。
全く別物としてコードを読んでました。失礼しました。

ぺぱーど 2000/02/11(金) 23:43:24
Aは一般的でない(アブノーマル)し判断文の流れ的にも駄目.#結果としては用件を満たすんだけど.
Bは基本に忠実(ベーシック)だし分かり易い.
Cは凝っている(クール)けど少し分かり難い.#慣れれば良いんだけど.
というところかな.
#A,B,Cは意味あって付けた.(^^;;;

>$a= ($b==0) || 0;
こう言う手もありましたね.

やっぱり好みとかもあって当然と.

[上に] [前に] [次に]