The Elements of Style in Programming (HWSW Mobile! 2016)

The Elements of Style in Programming (HWSW Mobile! 2016)

Slide deck from my presentation at HWSW Mobile! 2016 in Budapest.

1be785d1d788b82929e55fc83a9f0aaa?s=128

Bozhidar Batsov

November 23, 2016
Tweet

Transcript

  1. 3.
  2. 9.
  3. 12.
  4. 14.
  5. 15.
  6. 17.
  7. 18.
  8. 19.
  9. 20.
  10. 21.
  11. 23.
  12. 24.

    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
  13. 26.
  14. 27.
  15. 28.
  16. 38.
  17. 39.
  18. 40.
  19. 46.

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

    Programs must be written for people to read, and only

    incidentally for machines to execute. — Hal Abelson
  21. 50.
  22. 51.
  23. 52.

    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
  24. 53.

    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
  25. 54.
  26. 55.
  27. 56.
  28. 57.

    A Fideszt démonizálók közül meglepően sokan képzelik úgy, hogy a

    kor mánypár t valami nindzsahadsereghez hasonló, tökéletesen kiképzett, arctalan, fegyelmezett katonákból álló sereg, egyfajta f é l e l m e t e s e n h a t é k o n y p o l i t i k a i - é s propagandagépezet. Ugyanezt képzeli ráadásul, nem kis büszkeséggel, egy rakás Fidesz-rajongó is. Egy jó propagandaminiszter viszont tudja, hogy ez az imidzs egy határig kedvező ugyan a pártnak, de ha túlzottan kizárólagossá válik, a választók már nem tudnak azonosulni vele és a túlhajtott profizásnak meg klónhadseregezésnek elhidegülés lesz a vége. Fejezet 1
  29. 58.

    A FIDESZT DéMONIZáLóK KöZüL MEGLEPőEN SOKAN KéPZELIK úGY, HOGY A

    KORMáNYPáRT VALAMI NINDZSAHADSEREGHEZ HASONLó, T ö K é L E T E S E N K I K é P Z E T T, A R C TA L A N , FEGYELMEZETT KATONáKBóL áLLó SEREG, EGYFAJTA FéLELMETESEN HATéKONY POLITIKAI- éS PROPAGANDAGéPEZET. FeJeZet 1 U G YA N E Z T K é P Z E L I R á A D á S U L , N E M K I S BüSZKESéGGEL, EGY RAKáS FIDESZ-RAJONGó IS. EGY Jó PROPAGANDAMINISZTER VISZONT TUDJA, HOGY EZ AZ IMIDZS EGY HATáRIG KEDVEZő UGYAN A PáRTNAK, DE HA TúLZOTTAN KIZáRóLAGOSSá VáLIK, A VáLASZTóK MáR NEM TUDNAK AZONOSULNI VELE éS A T ú L H A J T O T T P R O F I Z á S N A K M E G KLóNHADSEREGEZéSNEK ELHIDEGüLéS LESZ A VéGE.
  30. 59.
  31. 63.

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

    [1, 2, 3].each { |e| puts e } class FooError < StandardError; end
  32. 64.
  33. 67.
  34. 70.
  35. 72.
  36. 74.
  37. 78.
  38. 82.
  39. 86.
  40. 90.
  41. 93.
  42. 95.
  43. 96.
  44. 97.
  45. 99.

    BKV

  46. 101.
  47. 103.
  48. 104.

    $:

  49. 105.
  50. 106.

    $;

  51. 108.

    $*

  52. 109.
  53. 117.
  54. 125.
  55. 126.
  56. 128.
  57. 129.
  58. 130.
  59. 131.
  60. 137.

    i = 1 res = 0 while i <= 10

    res += i i += 1 end
  61. 142.

    •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.
  62. 145.
  63. 148.
  64. 154.

    # This method does bla bla bla. # It returns

    an array of results. def bla_bla_bla res = Set.new # ... res end
  65. 162.

    // // 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 //
  66. 165.
  67. 167.
  68. 170.

    Go

  69. 172.
  70. 173.
  71. 176.

    PHP

  72. 178.
  73. 180.
  74. 182.
  75. 183.
  76. 193.