Ember.computed.* is your friend!
I recently got turned on to a much more readable method for writing computed properties in Ember with CoffeeScript by way of Alex Speller’s talk at this year’s EmberFest, The mistakes everyone makes with Ember.JS - Avoiding Common Pitfalls. I had previously been writing computed properties like this:
foo: (->
"foo#{@get('bar')}"
).property('bar')
Which works out just fine, but it’s much more readable to take this same idea and turn it into this:
foo: Em.computed 'bar', ->
"foo#{@get('bar')}"
This new method of writing computed properties made me investigate the Ember namespace documentation, which opened my eyes to a ton of shorthand helpers for computed properties. There are tons of great shorthand methods to do simple computed property calculations that you should be utilizing. I highly recommend that you look at the documentation, but here are a few to get you excited.
Greater Than Comparisons
Before:
isElementGreater: Em.computed 'value', ->
@get('value') > 10
After:
isElementGreater: Em.computed.gt 'value', 10
Logical ‘Or’
Before:
orAllTheThings: Em.computed 'value1', 'value2', 'value3' ->
@get('value1') || @get('value2') || @get('value3')
After:
orAllTheThings: Em.computed.or 'value1', 'value2', 'value3'
Intersections
Before:
arrIntersect: Em.computed 'arr1', 'arr2', ->
# utilize lodash/underscore
# or (gasp) write it yourself
_.intersection(@get('arr1'), @get('arr2'))
After:
arrIntersect: Em.computed.intersect 'arr1', 'arr2'
Read the Docs!
Seriously, have a look at the Ember namespace documentation. Only write a custom computed property when you’re doing something really interesting. Otherwise, let the framework do the heavy lifting.