2016-09-09 1 views
1

値を返し、それを悪い習慣とみなされる変数に格納していませんか?次の関数を考える

function lamePathValidator(path) { 
    if (typeof path !== 'string') { 
     throw new TypeError(`Invalid path "${path}": should be a string.`); 
    } 

    return path; 
    } 

は時折、それが変数に戻り値を格納することなく使われている場合、それは悪い習慣と考えられますか?

... 
lamePathValidator('./data'); 
... 

編集:私は戻り値を必要とする唯一のユースケースなど、コンストラクタでプロパティの割り当てのためのものです:

constructor(basepath) { 
    this._basepath = this._validatePath(basepath); 
} 

私はもちろん書き込みの可能性:

constructor(basepath) { 
    this._validatePath(basepath) 
    this._basepath = basepath; 
} 

前者のブロックはより簡潔です。

編集#2: それらのどれが実際にどのような方法で変更されていないされているので、私はまた、_validateAll(params)関数にコンストラクタのパラメータを渡すことができます。結局のところ、「妥当性検査」ではなく、「サニタイズ」しません。 :)

+2

なぜこの関数は何かを返しますか?戻り値は無駄です。 – user2357112

+1

コメントはあなたがその質問を理解していないことを示しています。 –

+2

本質的に悪い習慣ではありませんが、私は、 'throw'または' throw'するのがより理にかなっていると思います**または**この特別なケースで 'true'または' false'を返します。 。 –

答えて

2

いつも役に立つとは限りませんが、時にはデータを返す関数がたくさんあります。あなたがそれを必要としないときに出力を保存しないそれらのケースでは、それは理にかなっています。

ただし、戻り値が有用でない場合は、最初に返さないでください。あなたのサンプル関数では、パスは変更されていないので、それを返す理由はないので、呼び出しコードにはすでにそれがあります。

+0

私は参照してください。 input = outputであるので、出力を取り除く。ありがとう。 :) – Kootoopas

+0

私はOPのような質問を解釈する関数の作家です。 –

+0

OPが2つの異なる場所で呼び出され、それらの場所の1つが出力を気にし、もう1つがそうでない場合、関数は何かを返すはずですが、常に出力を格納するわけではありません。 –

1

関数は、必要に応じて値を返すことができます。 値を返すことは必須ではありません。あなたの場合、値を返す必要はありません。

js関数のドキュメントを読むhere

+0

返り値を気にしないことが良い習慣であるかどうかという疑問がありました。 –

関連する問題