Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The Elements of Style in Ruby (RubyConf.by)

The Elements of Style in Ruby (RubyConf.by)

Slide deck from my talk at RubyConf.by 2015

Bozhidar Batsov

March 28, 2015
Tweet

More Decks by Bozhidar Batsov

Other Decks in Programming

Transcript

  1. size=2 start=0 c=['Н', 'Н' ,'Н' ,'Н' ,'Н','Н','Н','Н','Н','Н','Н','Н','Н','Н'] code_dictionary=Array.new() begin_size_code_dictionary=Array.new() end_string=String.new()

    code_dictionary=c.uniq.to_a decode_dictionary=c.uniq.to_a for i in 0...code_dictionary.size begin_size_code_dictionary[i]=i end c.size.times{ if !code_dictionary.include?(c[start,size].to_s)#Comparation code_dictionary.push(c[start,size].to_s.chomp) start=start+(code_dictionary.last.size)/2-1 size=2 else size+=1; end } end_code=Array.new(code_dictionary.size) for i in begin_size_code_dictionary.size...code_dictionary.size end_code[i]=code_dictionary.index(code_dictionary[i].chop.chop)+1 end_string+=code_dictionary[i].chop.chop end govnokod.ru
  2. Style guide • curated set of (supposedly) good practices •

    frees you from making trivial decisions • allows you to focus on the real problems • short and to the point
  3. Programs must be written for people to read, and only

    incidentally for machines to execute. — Hal Abelson
  4. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do

    eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Chapter I
  5. LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT, SED DO

    EIUSMOD TEMPOR INCIDIDUNT UT LABORE ET DOLORE MAGNA ALIQUA. UT ENIM AD MINIM VENIAM, QUIS NOSTRUD EXERCITATION ULLAMCO LABORIS NISI UT ALIQUIP EX EA COMMODO CONSEQUAT. DUIS AUTE IRURE DOLOR IN REPREHENDERIT IN VOLUPTATE VELIT ESSE CILLUM DOLORE EU FUGIAT NULLA PARIATUR. EXCEPTEUR SINT OCCAECAT CUPIDATAT NON PROIDENT, SUNT IN CULPA QUI OFFICIA DESERUNT MOLLIT ANIM ID EST LABORUM. LOREM IPSUM DOLOR SIT AMET, CONSECTETUR ADIPISCING ELIT, SED DO EIUSMOD TEMPOR INCIDIDUNT UT LABORE ET DOLORE MAGNA ALIQUA. UT ENIM AD MINIM VENIAM, QUIS NOSTRUD EXERCITATION ULLAMCO LABORIS NISI UT ALIQUIP EX EA COMMODO CONSEQUAT. DUIS AUTE IRURE DOLOR IN REPREHENDERIT IN VOLUPTATE VELIT ESSE CILLUM DOLORE EU FUGIAT NULLA PARIATUR. EXCEPTEUR SINT OCCAECAT CUPIDATAT NON PROIDENT, SUNT IN CULPA QUI OFFICIA DESERUNT MOLLIT ANIM ID EST LABORUM. chapter i
  6. Эи дуо модо лудуз кэтэро, ты фачтидёе зючкёпит эффикеэнди эжт.

    Нэ путынт дикырыт кюм. Коммюны пожйдонёюм экз ыюм, омныз мыдиокрым хонэзтатёз вяш йн. Эож ед чент граэкы праэчынт. Эож золэт зэнтынтиаэ рыпримёквуы ат. Дёжкэрэ эрепюят ыам ты, квуым ныморэ глориатюр кюм ед, эа прё долорэж аккюмзан интылльэгэбат. Мыа йн граэкйж волютпат интыллыгам. Нам ёудёкабет рыпримёквуы ты, ад прё вёжи экшырки доминг. Дикырыт адипижкй эффякиантур хёз эа. Но кюм жанктюч торквюатоз, эрож рыкючабо мыа нэ, ат вим кибо зкрипторэм. Еллум граэкы рыпудяары ед мыа. Глава 1
  7. ЭИ ДУО МОДО ЛУДУЗ КЭТЭРО, ТЫ ФАЧТИДЁЕ ЗЮЧКЁПИТ ЭФФИКЕЭНДИ ЭЖТ.

    НЭ ПУТЫНТ ДИКЫРЫТ КЮМ. КОММЮНЫ ПОЖЙДОНЁЮМ ЭКЗ ЫЮМ, ОМНЫЗ МЫДИОКРЫМ ХОНЭЗТАТЁЗ ВЯШ ЙН. ЭОЖ ЕД ЧЕНТ ГРАЭКЫ ПРАЭЧЫНТ. ЭОЖ ЗОЛЭТ ЗЭНТЫНТИАЭ РЫПРИМЁКВУЫ АТ. ДЁЖКЭРЭ ЭРЕПЮЯТ ЫАМ ТЫ, КВУЫМ НЫМОРЭ ГЛОРИАТЮР КЮМ ЕД, ЭА ПРЁ ДОЛОРЭЖ АККЮМЗАН ИНТЫЛЛЬЭГЭБАТ. гЛаВа 1 МЫА ЙН ГРАЭКЙЖ ВОЛЮТПАТ ИНТЫЛЛЫГАМ. НАМ ЁУДЁКАБЕТ РЫПРИМЁКВУЫ ТЫ, АД ПРЁ ВЁЖИ ЭКШЫРКИ ДОМИНГ. ДИКЫРЫТ АДИПИЖКЙ ЭФФЯКИАНТУР ХЁЗ ЭА. НО КЮМ ЖАНКТЮЧ ТОРКВЮАТОЗ, ЭРОЖ РЫКЮЧАБО МЫА НЭ, АТ ВИМ КИБО ЗКРИПТОРЭМ. ЕЛЛУМ ГРАЭКЫ РЫПУДЯАРЫ ЕД МЫА.
  8. sum = 1 + 2 a, b = 1, 2

    [1, 2, 3].each { |e| puts e } class FooError < StandardError; end
  9. CPU

  10. $:

  11. $;

  12. $*

  13. i = 1 res = 0 while i <= 10

    res += i i += 1 end
  14. • Make it right before you make it faster. •

    Make it fail-safe before you make it faster. • Make it clear before you make it faster.
  15. # This method does bla bla bla. # It returns

    an array of results. def bla_bla_bla res = Set.new # ... res end
  16. The Rules • Clear and concise • Illustrated with example

    code • Linkable • Neatly organised • Community-approved
  17. Style rules that only reflect what is easily discoverable by

    a trivial examination of the source code seem to me to be the least valuable rules. If the style is not conveying additional information, why bother? — Jim Weirich
  18. International • Chinese Simplified • Chinese Traditional • French •

    Japanese • Portuguese • Russian • Spanish • Vietnamese • Korean
  19. def some_method begin x = 5 h={:a=>1,:b=>2} if not h

    raise "Some error occurred" end [1, 2, 3].select { |e| e.even? } rescue => e end end
  20. def some_method x = 5 h = { a: 1,

    b: 2 } unless h fail 'Some error occurred' end [1, 2, 3].select(&:even?) rescue => e end