「なんでreturnするとき一時変数使うの?」まとめ

5

発端となったtweet

mzp @mzp

たまにこういうコード見るんだけど、何由来のスタイルなんだ。 String ret = ""; if(...) { ret = f(); } else { ret = g(); } return ret;

2014-01-25 18:50:33

Pascalだよ派

Miura Hideki @miura1729

@mzp Pascalでプログラミングを入門するとこういう癖がつくような気がします。

2014-01-25 19:27:54

MISRA-Cだよ派

おしいれのぼうけん @osiire

@mzp これはね、脱出個所が一か所になって、Complexity関連のメトリクスの値が高くならない、高度な技なのですよ。

2014-01-25 19:59:18
Kyohei FUSHIDA @kyoheif

MISRA-C教らしい。僕もこの宗教だった。 RT @mzp: たまにこういうコード見るんだけど、何由来のスタイルなんだ。 String ret = ""; if(...) { ret = f(); } else { ret = g(); } return ret;

2014-01-25 19:43:17
NaOHaq(苛性ソーダ) @NaOHaq

@notogawa @mzp returnは1関数1回のみ、breakはループ文1つにつき最大1回まで、という必須制約があります

2014-01-25 18:56:39

そういうコーディング規則多いよ派

shumaro @shumaro

@mzp 昔、ブロックの途中で終わるのを禁止するコーディング規約をよく見かけました。終了処理を通らないのを避けるという理由で。finallyが無かった頃の。

2014-01-25 19:56:03
神速 @sinsoku_listy

@mzp 「関数にreturnが複数あると読みにくいため、1つにするべき」みたいなコーディング規約から発生している気がする。

2014-01-25 19:08:47

そういう言語もあるよ派

空飛ぶモフモフにゃんこ教団 @seagull_kamome

@mzp なんでもかんでも一旦変数に入れたがるのは良くみますね。 多分ホスト時代のreturnできるのは変数だけ(その変数が呼び出し元との間で共有メモリになる)みたいなの由来じゃないですかね

2014-01-25 18:54:23
HARUYAMA Seigo @haruyama

@mzp MATLAB はそういう感じですね.

2014-01-25 18:55:15

その他

Charlotte Elizabeth @kozawa

@mzp メソッドの脱出点を一カ所にしろ教はよく聞いたことがあるので由来は知らないですけどその辺の影響かなぁとかなんとか

2014-01-25 19:22:30
こいんとす @cointoss1973

@mzp ???「関数では、関数の最後に唯一の出口がなくてはならない。」

2014-01-25 19:10:48
ELD-R-ESH-2 @eldesh

@mzp リターンが無い警告の回避では?

2014-01-25 19:00:00