Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
NSFW!Prezentace obsahuje   sprostá slova
•   Syntaktický cukr•   Čitelný kód•   Strukturování kódu odsazením                       FUJ!
Pochybuji, ţe se CoffeeScript ujme. Vlastněnepochybuji, jsem si zcela jist, neujme se, protoţeekosystém. Široká audience n...
Coffeescript je především krásný. Nejde jen o toušetřit si pár znaků při psaní kódu, ale hlavně ulevitočím při jeho čtení....
SYNTAX
FUNKCE ->dvojmoc = (x) -> x * xsoucet = (xs) ->   r = 0   (r = r + x) for x in xs   rconsole.log dvojmoc 5console.log souc...
PROMĚNNÉ BEZ VARvnejsi = 1funkce = ->  vnitrni = 2  vnejsi = 3vnitrni = funkce()
ŘETĚZCE"Třikrát pět je #{3 * 5}" //vyčíslíTřikrát pět je #{3 * 5} //nevyčíslíhtml =   <strong>  CoffeeScript!  </strong>
POLE A OBJEKTYznalosti =  php:    uroven: "pokrocily"    praxe: 8  html:    uroven: "zacatecnik"    praxe: 3
PODMÍNKY – IF, UNLESSif zima then zatop()if zima   zatop()zatop() if zimazatop() unless teplokotel = if teplo then "off" e...
PODMÍNĚNÉ PŘIŘAZENÍoptions or= defaults//JS: options || (options = defaults);unless odpoved? then odpoved = 42//JS:if (typ...
CYKLYwhile not file.EOF   read fileread file until file.EOFradky = readln file until file.EOF
VŠE JE VÝRAZ!radky = readln file until file.EOFkotel = if teplo then "off" else "on"dvojmoc = (x) -> x*xdvojmoci = (dvojmo...
SMYČKA FORdvojmoci = (dvojmoc(x) for x in [1..5])for jmeno in jmena   alert jmenoalert property for property of windowaler...
ROZSAHY [..][1..5]  [1, 2, 3, 4, 5][1...5]  [1, 2, 3, 4][5..1]  [5, 4, 3, 2, 1][1..100]  iterační funkce
VÝPUSTKA (SPLAT) …fn = (a, b...) -> čňčňčňčňfn 10, 20, 30, 40 // a=10, b=[20, 30, 40]fn = (a, b..., c) -> čňčňčňčňfn 10, 2...
DESTRUKTUROVANÉ PŘIŘAZENÍmiry = ->  [90, 60, 90][prsa, pas, boky] = miry()[a, b] = [b, a]pole = [3,1,4,1,5][prvni, telo......
TŘÍDY
TŘÍDAclass Prednasejici  honorar: 0  _wtf: trueja = new Prednasejicialert ja.honorar
KONSTRUKTORclass Prednasejici  constructor: (jmeno) -> this.jmeno=jmeno  honorar: 0ja = new Prednasejici("Martin")alert ja...
@PROPERTYclass Prednasejici  constructor: (jmeno) -> @jmeno=jmeno  honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
@PROPERTY, VOL. 2class Prednasejici  constructor: (@jmeno) ->  honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
DĚDIČNOSTclass DrzyPrednasejici extends Prednasejici  honorar: "Jidlo"ja = new DrzyPrednasejici("Martin")alert ja.honorar
PŘÍSTUP K PROTOTYPU ::Array::map = -> čňčňčň
PRO A PROTI
PROBLÉMYVýznamotvorná mezeraprefix = "prvek_"id1 = prefix + 12 /// == prvek_12id2 = prefix +12 /// TypeError        id2 = ...
PROBLÉMYAsociativita operátorůconsole.log (fn 3, fn 4)   console.log (fn (3, fn 4))console.log fn (3), fn (4)
PROBLÉMYPorovnání je vždy typovévar a =   0,   b = , c = 0;a == b;   //   truea == c;   //   trueb == c;   //   falseCoffe...
„A TO JE VŠECHNO?“ VOL. 1Interaktivní konzole na coffeescript.orgDialekty – Iced CoffeeScript (await, defer)CoffeeScript R...
„A TO JE VŠECHNO?“ VOL. 2Čistý kódSprávné JS konstrukceRobustní JS kód (vč. JSLint)Čitelný kód
„A TO JE VŠECHNO?“ BONUS„Literate CoffeeScript“ (od verze 1.5)Zápis kódu do dokumentu v Markdown – kód jesoučást svojí dok...
MATERIÁL KE STUDIU:      UTFG!
Develconf coffeescript
Develconf coffeescript
Develconf coffeescript
Upcoming SlideShare
Loading in …5
×

Develconf coffeescript

1,666 views

Published on

  • Be the first to comment

Develconf coffeescript

  1. 1. NSFW!Prezentace obsahuje sprostá slova
  2. 2. • Syntaktický cukr• Čitelný kód• Strukturování kódu odsazením FUJ!
  3. 3. Pochybuji, ţe se CoffeeScript ujme. Vlastněnepochybuji, jsem si zcela jist, neujme se, protoţeekosystém. Široká audience nikdy CoffeeScriptnepřijme, protoţe nejsou příklady, nejsoueditory, nejsou code syntax highlightery, nejsoudebuggery, nejsou přátelé na IM, prostě CoffeeScriptje v ekosystému RIA aplikací vetřelec. Syntax prorychlejší a přehlednější psaní js není to podstatné, ačjsem si sám dlouho myslel opak, co rozhoduje. Jesmutné, kdyţ někdo investuje svůj čas doreimplementace ko­la…DANIEL STEIGERWALD, 5.12.2010
  4. 4. Coffeescript je především krásný. Nejde jen o toušetřit si pár znaků při psaní kódu, ale hlavně ulevitočím při jeho čtení. Coffeescript je chytrý. Je tuelegantní a strohá definice třídy, skrze klíčovéslovo class. Ţe všechno je v Coffeescriptu výraz.A ţe uţ nikdy nemusím přemýšlet, zdali iterovatpomocí for in, nebo $.each. A nikdy uţ volat bind jenproto, ţe chci uţít closure a zachovat this.Pouţitelné nástroje existují, a kaţdý den se rodínové. (…)DANIEL STEIGERWALD, 19.8.2011
  5. 5. SYNTAX
  6. 6. FUNKCE ->dvojmoc = (x) -> x * xsoucet = (xs) -> r = 0 (r = r + x) for x in xs rconsole.log dvojmoc 5console.log soucet [1, 3, 3, 7]
  7. 7. PROMĚNNÉ BEZ VARvnejsi = 1funkce = -> vnitrni = 2 vnejsi = 3vnitrni = funkce()
  8. 8. ŘETĚZCE"Třikrát pět je #{3 * 5}" //vyčíslíTřikrát pět je #{3 * 5} //nevyčíslíhtml = <strong> CoffeeScript! </strong>
  9. 9. POLE A OBJEKTYznalosti = php: uroven: "pokrocily" praxe: 8 html: uroven: "zacatecnik" praxe: 3
  10. 10. PODMÍNKY – IF, UNLESSif zima then zatop()if zima zatop()zatop() if zimazatop() unless teplokotel = if teplo then "off" else "on"optimum = 18 < teplota < 23
  11. 11. PODMÍNĚNÉ PŘIŘAZENÍoptions or= defaults//JS: options || (options = defaults);unless odpoved? then odpoved = 42//JS:if (typeof odpoved === "undefined" ||odpoved === null) { odpoved = 42;}
  12. 12. CYKLYwhile not file.EOF read fileread file until file.EOFradky = readln file until file.EOF
  13. 13. VŠE JE VÝRAZ!radky = readln file until file.EOFkotel = if teplo then "off" else "on"dvojmoc = (x) -> x*xdvojmoci = (dvojmoc(x) for x in [1..5])
  14. 14. SMYČKA FORdvojmoci = (dvojmoc(x) for x in [1..5])for jmeno in jmena alert jmenoalert property for property of windowalert (property for property of window)for key, value of databasefor all key, value of database
  15. 15. ROZSAHY [..][1..5]  [1, 2, 3, 4, 5][1...5]  [1, 2, 3, 4][5..1]  [5, 4, 3, 2, 1][1..100]  iterační funkce
  16. 16. VÝPUSTKA (SPLAT) …fn = (a, b...) -> čňčňčňčňfn 10, 20, 30, 40 // a=10, b=[20, 30, 40]fn = (a, b..., c) -> čňčňčňčňfn 10, 20, 30, 40 // a=10, b=[20, 30], c=40par = [10,20,30,40]fn par // a=[10,20,30,40]fn par... // a=10, b=[20, 30], c=40
  17. 17. DESTRUKTUROVANÉ PŘIŘAZENÍmiry = -> [90, 60, 90][prsa, pas, boky] = miry()[a, b] = [b, a]pole = [3,1,4,1,5][prvni, telo..., posledni] = pole
  18. 18. TŘÍDY
  19. 19. TŘÍDAclass Prednasejici honorar: 0 _wtf: trueja = new Prednasejicialert ja.honorar
  20. 20. KONSTRUKTORclass Prednasejici constructor: (jmeno) -> this.jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  21. 21. @PROPERTYclass Prednasejici constructor: (jmeno) -> @jmeno=jmeno honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  22. 22. @PROPERTY, VOL. 2class Prednasejici constructor: (@jmeno) -> honorar: 0ja = new Prednasejici("Martin")alert ja.jmeno
  23. 23. DĚDIČNOSTclass DrzyPrednasejici extends Prednasejici honorar: "Jidlo"ja = new DrzyPrednasejici("Martin")alert ja.honorar
  24. 24. PŘÍSTUP K PROTOTYPU ::Array::map = -> čňčňčň
  25. 25. PRO A PROTI
  26. 26. PROBLÉMYVýznamotvorná mezeraprefix = "prvek_"id1 = prefix + 12 /// == prvek_12id2 = prefix +12 /// TypeError id2 = prefix(+12)
  27. 27. PROBLÉMYAsociativita operátorůconsole.log (fn 3, fn 4) console.log (fn (3, fn 4))console.log fn (3), fn (4)
  28. 28. PROBLÉMYPorovnání je vždy typovévar a = 0, b = , c = 0;a == b; // truea == c; // trueb == c; // falseCoffeeScript překládá == na ===
  29. 29. „A TO JE VŠECHNO?“ VOL. 1Interaktivní konzole na coffeescript.orgDialekty – Iced CoffeeScript (await, defer)CoffeeScript Redux – „source maps“Pluginy pro editoryKnihovnytranspilery
  30. 30. „A TO JE VŠECHNO?“ VOL. 2Čistý kódSprávné JS konstrukceRobustní JS kód (vč. JSLint)Čitelný kód
  31. 31. „A TO JE VŠECHNO?“ BONUS„Literate CoffeeScript“ (od verze 1.5)Zápis kódu do dokumentu v Markdown – kód jesoučást svojí dokumentace
  32. 32. MATERIÁL KE STUDIU: UTFG!

×