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

The Elements of Style in Ruby

Bozhidar Batsov
September 30, 2014
120

The Elements of Style in Ruby

Slides from my talk at RailsClub.ru 2014

Bozhidar Batsov

September 30, 2014
Tweet

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. $:

  10. $;

  11. $*

  12. The Rules • Clear and concise • Illustrated with example

    code • Linkable • Neatly organised • Community-approved
  13. 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
  14. International • Chinese Simplified • Chinese Traditional • French •

    Japanese • Portuguese • Russian • Spanish • Vietnamese • Korean
  15. 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
  16. 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