The Elements of Programming Style (HackConf 2019)

The Elements of Programming Style (HackConf 2019)

1be785d1d788b82929e55fc83a9f0aaa?s=128

Bozhidar Batsov

October 13, 2019
Tweet

Transcript

  1. 1.
  2. 3.
  3. 4.
  4. 7.
  5. 8.
  6. 10.
  7. 11.
  8. 12.

    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
  9. 15.
  10. 21.
  11. 24.

    Всичко хубаво в тая държава сме го направили ние, те

    не могат да го боядисат - от метрото до Северната дъга, Тракия, Марица, Струма…
  12. 25.

    Живков и царя са ми като два университета. В една

    тема и двамата бяха много единни, че България и държавата са над всичко.
  13. 30.
  14. 32.
  15. 38.

    A Style Guide • a curated set of (supposedly) good

    practices • spares you the process of making trivial decisions • allows you to focus on the actual problems • simple and concise
  16. 40.

    Programs must be written for people to read, and only

    incidentally for machines to execute. — Hal Abelson
  17. 42.
  18. 43.
  19. 44.

    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
  20. 45.

    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
  21. 47.

    Правителство трябва да има на всяка цена, каза премиерът проф.

    Георги Близнашки пред журналисти в Котел, където беше по повод Деня на будителите. "Силно се надявам, че в следващите няколко дни, особено след като бъде връчен проучвателен мандат, разговорите ще придобият по-спокоен тон и ще се стигне до съставяне на правителство", заяви министър- председателят, цитиран от правителствената информационна служба. Той прогнозира тежки първи месеци за следващия кабинет, който трябва да предприеме неотложни и "не особено популярни мерки". Близнашки изрази надежда, че след това нещата ще тръгнат във възходяща линия, благодарение на финансовия ресурс, предвиден за страната ни по Споразумението за партньорство на ЕК с България до 2020 година. Глава 1
  22. 48.

    ПРАВИТЕЛСТВО ТРЯБВА ДА ИМА НА ВСЯКА ЦЕНА, КАЗА ПРЕМИЕРЪТ ПРОФ.

    ГЕОРГИ БЛИЗНАШКИ ПРЕД ЖУРНАЛИСТИ В КОТЕЛ, КЪДЕТО БЕШЕ ПО ПОВОД ДЕНЯ НА БУДИТЕЛИТЕ. "СИЛНО СЕ НАДЯВАМ, ЧЕ В СЛЕДВАЩИТЕ НЯКОЛКО ДНИ, ОСОБЕНО СЛЕД КАТО БЪДЕ ВРЪЧЕН ПРОУЧВАТЕЛЕН МАНДАТ, РАЗГОВОРИТЕ ЩЕ ПРИДОБИЯТ ПО-СПОКОЕН ТОН И ЩЕ СЕ СТИГНЕ ДО СЪСТАВЯНЕ НА ПРАВИТЕЛСТВО", ЗАЯВИ МИНИСТЪР-ПРЕДСЕДАТЕЛЯТ, ЦИТИРАН ОТ ПРАВИТЕЛСТВЕНАТА ИНФОРМАЦИОННА СЛУЖБА. гЛаВа 1 ТОЙ ПРОГНОЗИРА ТЕЖКИ ПЪРВИ МЕСЕЦИ ЗА СЛЕДВАЩИЯ КАБИНЕТ, КОЙТО ТРЯБВА ДА ПРЕДПРИЕМЕ НЕОТЛОЖНИ И "НЕ ОСОБЕНО ПОПУЛЯРНИ МЕРКИ". БЛИЗНАШКИ ИЗРАЗИ НАДЕЖДА, ЧЕ СЛЕД ТОВА НЕЩАТА ЩЕ ТРЪГНАТ ВЪВ ВЪЗХОДЯЩА ЛИНИЯ, БЛАГОДАРЕНИЕ НА ФИНАНСОВИЯ РЕСУРС, ПРЕДВИДЕН ЗА СТРАНАТА НИ ПО СПОРАЗУМЕНИЕТО ЗА ПАРТНЬОРСТВО НА ЕК С БЪЛГАРИЯ ДО 2020 ГОДИНА.
  23. 49.
  24. 52.

    sum = 1 + 2 a, b = 1, 2

    [1, 2, 3].each { |e| puts e } class FooError < StandardError; end
  25. 55.
  26. 58.
  27. 61.
  28. 63.
  29. 65.
  30. 67.
  31. 71.
  32. 75.
  33. 77.
  34. 81.
  35. 83.
  36. 86.
  37. 89.
  38. 91.
  39. 93.
  40. 95.
  41. 99.
  42. 100.

    $:

  43. 101.
  44. 102.

    $;

  45. 104.

    $*

  46. 105.
  47. 113.
  48. 121.
  49. 122.
  50. 124.
  51. 125.
  52. 126.
  53. 132.

    i = 1 res = 0 while i <= 10

    res += i i += 1 end
  54. 137.

    •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.
  55. 140.
  56. 143.
  57. 149.

    # This method does bla bla bla. # It returns

    an array of results. def bla_bla_bla res = Set.new # ... res end
  58. 154.
  59. 158.

    // // Dear maintainer: // // Once you are done

    trying to 'optimize' this routine, // and have realized what a terrible mistake that was, // please increment the following counter as a warning // to the next guy: // // total_hours_wasted_here = 42 //
  60. 160.
  61. 162.
  62. 164.
  63. 167.

    Go

  64. 169.
  65. 170.
  66. 172.
  67. 174.
  68. 176.
  69. 186.
  70. 188.