I have been using CoffeeScript for over four years now (since 2011) and will never go back.1
Here is a snippet that may tell you why. It uses several basic features of CoffeeScript that make code more readable and much shorter than the vanilla JavaScript version of the same code (at the right side).
1Unless somebody pays me enough money to waste my time using vanilla JS ;-).
Here is a snippet that may tell you why. It uses several basic features of CoffeeScript that make code more readable and much shorter than the vanilla JavaScript version of the same code (at the right side).
# Use CoffeeScript and stay DRY! (Don't repeat yourself) var $f, abc1, abc2, abc3, framework; # For instance, by using short notation {a,b,c,...} # for object composition from variables. $f = framework = (function() { # var count; # Here is a complete example, using the notation count = 0; # to reduce the number of lines of code (LoC) return { # of an artificial object creation framework: createProp: function(name, n) { return "This is " + name + " no. " + n; $f = framework = do -> }, count = 0 enhanceProp: function(prop) { createProp: (name,n) -> "This is #{name} no. #{n}" return "" + prop + ", enhanced!"; enhanceProp: (prop) -> "#{prop}, enhanced!" }, createAbcObject: -> createAbcObject: function() { # 1. basic variable setup var a, b, c; a = $f.createProp "a",count a = $f.createProp("a", count); b = $f.createProp "b",count b = $f.createProp("b", count); c = $f.createProp "c",count c = $f.createProp("c", count); if (count === 0) { # 2. more fiddling with the variables ... a = $f.enhanceProp(a); if count == 0 then a = $f.enhanceProp a } count++ count++; return { # 3. finally compose and return the a-b-c object a: a, {a,b,c} b: b, c: c abc1 = $f.createAbcObject() }; } abc2 = $f.createAbcObject() }; })(); abc3 = $f.createAbcObject() abc1 = $f.createAbcObject(); # You can also use it for DRY logging # to avoid quoting var names abc2 = $f.createAbcObject(); console.log "objects created", {abc1,abc2,abc3} abc3 = $f.createAbcObject(); # OMG! Over 50% LoC saved. Even with all these console.log("objects created", { # comments, CoffeeScript is still shorter and more abc1: abc1, # readable than the JavaScript version of the code. abc2: abc2, # abc3: abc3 # Stay DRY! Use CoffeeScript! });
1Unless somebody pays me enough money to waste my time using vanilla JS ;-).
Comments