同じプロパティに依存する一連のプロパティがある場合、それらを定義する最良の (保守可能、最速など) 方法は何ですか? 私はいくつか考えることができます:
A. それぞれのプロパティ:
isDraft: (->
@get('status') is App.Status.DRAFT
).property('status')
isPublished: (->
@get('status') is App.Status.PUBLISHED
).property('status')
isArchived: (->
@get('status') is App.Status.ARCHIVED
).property('status')
B. 一度にすべての小道具を設定するオブザーバー:
isDraft: true
isPublished: false
isArchived: false
statusDidChange: (->
@setProperties(
isDraft: @get('status') is App.Status.DRAFT
isPublished: @get('status') is App.Status.PUBLISHED
isArchived: @get('status') is App.Status.ARCHIVED
)
).observes('status')
C. ストレートアップの計算された小道具:
isDraft: Ember.computed.equal('status', App.Status.DRAFT)
isPublished: Ember.computed.equal('status', App.Status.PUBLISHED)
isArchived: Ember.computed.equal('status', App.Status.ARCHIVED)
(C) 間違いなく最も洗練されているように見えますが、1 つのオブザーバーに対して 3 つの計算されたプロパティを使用する場合に何らかのペナルティがあるのではないかと考えています。そして、(C) は基本的に A の省略形ですか? そこに違いはありますか?