2016-10-26 4 views
1

Google JS style guideによると、ゲッターとセッターはお勧めしません。どうしてこれなの?Google: "EcmaScript 5プロパティのgetterとsetterは推奨されません"なぜですか?

Mozilla JS Object docs jsでgettersとsettersを使用して明示的に提唱します。私は不一致について混乱しています。

+2

最初のリンクはスタイルガイドで、主観的です。 2番目のリンクは、それらを使用して「提唱する」のではなく、ドキュメントの使用方法のみを説明しています。残念なことに、この質問はあまりにも意見に基づいており、良い答えを出すことができません。 – tcooc

+3

それは_スタイルガイドです。それは彼らがコードを書くことを選択する方法です。 – vlaz

+0

そのMDNページではゲッターとセッターを使用することを推奨していますか? – robbmj

答えて

1

getterとsetterを使用すると、外部から見ると混乱する可能性があります。

私はオブジェクトmyObjectを次のプロパティstatusで作成するとします。そのプロパティはゲッターを使用し、取得するための結果を計算します。例:

const status = myObject.status; 
const open = status.open; // true 
const color = status.color; // "blue" 

今毎回私はちょうど直接プロパティにアクセスするが、それは真実じゃないように見えるmyObject.statusを使用しています。実際にはは多くの計算を行うことができる関数を呼び出します

は今myObjectという実装されていませんでした別の人が入って来、この

const open = myObject.status.open; // true 
const color = myObject.status.color; // "blue" 

を行い、それが動作します! 潜在的に計算する重い関数は、1回ではなく2回呼び出されます。 また、副作用(最悪の状況、副作用を伴うゲッターを使わないでください)を持つことができます。また、バグを探してどこから来るのか分からないときは、伝えにくいです。

だから、いくつかはconst status = myObject.getStatus();を使用することをお勧めします。 明示的な関数呼び出しです。

関連する問題