Clean code and the clean coders

4,960 views

Published on

Presentación del movimiento craftmanship, el clean code ( y los clean coders) para la Melee

Published in: Technology
1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
4,960
On SlideShare
0
From Embeds
0
Number of Embeds
3,055
Actions
Shares
0
Downloads
48
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Clean code and the clean coders

    1. 1. CLEAN CODEand the clean coders Breves apuntes realizados por Luis (programania DevTeam)
    2. 2. ¿Qué es?
    3. 3. ¿Qué es?dos libros
    4. 4. ¿Qué es?dos librosresumen unaescuela depensamiento(softwarecraftmanship)
    5. 5. ¿Qué es?dos librosresumen unaescuela depensamiento(softwarecraftmanship)obviedades (aveces humillantes)
    6. 6. ¿Quién?
    7. 7. ¿Quién? Uncle Bob (Robert C. Martin)
    8. 8. ¿Quién? Uncle Bob (Robert C. Martin) 40 años como PROGRAMADOR
    9. 9. ¿Quién? Uncle Bob (Robert C. Martin) 40 años como PROGRAMADOR Escuchemos a nuestros mayores
    10. 10. http://twitter.com/#!/thecleancodershttp://twitter.com/#!/unclebobmartinhttp://www.cleancoders.com/http://www.objectmentor.com/
    11. 11. clean codersrepaso a toda una escuela de programación(XP, agile, craftmanship)
    12. 12. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns
    13. 13. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patternspragmatic programmer
    14. 14. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patternspragmatic programmerclean code
    15. 15. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patternspragmatic programmerclean codeagile softwaredevelopment: princpiles,patterns and practices
    16. 16. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patternspragmatic programmerclean codeagile softwaredevelopment: princpiles,patterns and practicesTestDriven Developmentat IBM
    17. 17. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patternspragmatic programmerclean codeagile softwaredevelopment: princpiles,patterns and practicesTestDriven Developmentat IBMTest drivendevelopment: an initialinvestigationon theindustry
    18. 18. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean codeagile softwaredevelopment: princpiles,patterns and practicesTestDriven Developmentat IBMTest drivendevelopment: an initialinvestigationon theindustry
    19. 19. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programmingagile software languagedevelopment: princpiles,patterns and practicesTestDriven Developmentat IBMTest drivendevelopment: an initialinvestigationon theindustry
    20. 20. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programmingagile software languagedevelopment: princpiles,patterns and practices Succeding with agile (uncle bob series)TestDriven Developmentat IBMTest drivendevelopment: an initialinvestigationon theindustry
    21. 21. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programmingagile software languagedevelopment: princpiles,patterns and practices Succeding with agile (uncle bob series)TestDriven Developmentat IBM Software estimation: demytifiedTest drivendevelopment: an initialinvestigationon theindustry
    22. 22. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programmingagile software languagedevelopment: princpiles,patterns and practices Succeding with agile (uncle bob series)TestDriven Developmentat IBM Software estimation: demytifiedTest drivendevelopment: an initial Software engineerininvestigationon the economicsindustry
    23. 23. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programming Planning poker or howagile software language to avoid analysisdevelopment: princpiles, paralysis while realasepatterns and practices planning Succeding with agile (uncle bob series)TestDriven Developmentat IBM Software estimation: demytifiedTest drivendevelopment: an initial Software engineerininvestigationon the economicsindustry
    24. 24. clean coders repaso a toda una escuela de programación (XP, agile, craftmanship)apprenticeship patterns Realizing quality improvements throughpragmatic programmer test driven developmentclean code the c programming Planning poker or howagile software language to avoid analysisdevelopment: princpiles, paralysis while realasepatterns and practices planning Succeding with agile (uncle bob series)TestDriven Development Agile Estimating andat IBM Planning (uncle bob) Software estimation: demytifiedTest drivendevelopment: an initial Software engineerininvestigationon the economicsindustry
    25. 25. Repaso superficial a prácticas
    26. 26. Repaso superficial a prácticasTDD
    27. 27. Repaso superficial a prácticasTDDtest asdocumentation
    28. 28. Repaso superficial a prácticasTDDtest asdocumentationdojos, katas, opensource
    29. 29. Repaso superficial a prácticasTDDtest asdocumentationdojos, katas, opensourcedefinition of done
    30. 30. Repaso superficial a prácticasTDDtest asdocumentationdojos, katas, opensourcedefinition of donemeetings:necessary, hugetime of wasting
    31. 31. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentationdojos, katas, opensourcedefinition of donemeetings:necessary, hugetime of wasting
    32. 32. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentation focus: sleep,dojos, katas, open cafeine, timesource boxing, tomatoesdefinition of donemeetings:necessary, hugetime of wasting
    33. 33. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentation focus: sleep,dojos, katas, open cafeine, timesource boxing, tomatoesdefinition of done poker planningmeetings:necessary, hugetime of wasting
    34. 34. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentation focus: sleep,dojos, katas, open cafeine, timesource boxing, tomatoesdefinition of done poker planningmeetings: collective codenecessary, huge ownershiptime of wasting
    35. 35. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentation focus: sleep,dojos, katas, open cafeine, timesource boxing, tomatoesdefinition of done poker planningmeetings: collective codenecessary, huge ownershiptime of wasting project velocity
    36. 36. Repaso superficial a prácticas stand-upTDD meetings, iteration planing,test as etc.documentation focus: sleep, mentoring,dojos, katas, open cafeine, time apprenticeshipsource boxing, tomatoes and craftsmanshipdefinition of done poker planningmeetings: collective codenecessary, huge ownershiptime of wasting project velocity
    37. 37. LEARNED
    38. 38. LEARNEDEl tiempo de debugging es tiempo de programación. Muchosprogramadores no lo ven así.
    39. 39. LEARNEDEl tiempo de debugging es tiempo de programación. Muchosprogramadores no lo ven así.El desarrollo de software es un marathon, no un sprint.
    40. 40. LEARNEDEl tiempo de debugging es tiempo de programación. Muchosprogramadores no lo ven así.El desarrollo de software es un marathon, no un sprint.Being late: a todos nos pasa. El truco está en detectarlo pronto yser transparente. Estima, y reestima continuamente, y presenta losdatos a la gente implicada en el proyecto constantemente
    41. 41. LEARNEDEl tiempo de debugging es tiempo de programación. Muchosprogramadores no lo ven así.El desarrollo de software es un marathon, no un sprint.Being late: a todos nos pasa. El truco está en detectarlo pronto yser transparente. Estima, y reestima continuamente, y presenta losdatos a la gente implicada en el proyecto constantementeTeams are harder to build than projects
    42. 42. LEARNEDEl tiempo de debugging es tiempo de programación. Muchosprogramadores no lo ven así.El desarrollo de software es un marathon, no un sprint.Being late: a todos nos pasa. El truco está en detectarlo pronto yser transparente. Estima, y reestima continuamente, y presenta losdatos a la gente implicada en el proyecto constantementeTeams are harder to build than projectsIDE: vi es el pasado. los grandes IDE´s son lo más por el refactoring
    43. 43. Responsabilidad y ética
    44. 44. Responsabilidad y éticabe carefull what you ask for
    45. 45. Responsabilidad y éticabe carefull what you ask forwork ethic
    46. 46. Responsabilidad y éticabe carefull what you ask forwork ethic¿sólo 40 horas a tu profesión?Distinguir profesión de trabajo.(katayunos, the melee, leer un libro...)
    47. 47. Responsabilidad y éticabe carefull what you ask forwork ethic¿sólo 40 horas a tu profesión?Distinguir profesión de trabajo.(katayunos, the melee, leer un libro...)programar 18 horas seguidas hasta las4 de la mañana no es responsable.
    48. 48. Responsabilidad y éticabe carefull what you ask forwork ethic¿sólo 40 horas a tu profesión?Distinguir profesión de trabajo.(katayunos, the melee, leer un libro...)programar 18 horas seguidas hasta las4 de la mañana no es responsable.programar es extenuante y requieregrandes dosis de concentración,aprende a gestionarla (avoid TheZone, pomodoro, pair programming).
    49. 49. Responsabilidad y éticabe carefull what you ask for Eres responsable de tu carrera, de tuwork ethic formación, etc.¿sólo 40 horas a tu profesión?Distinguir profesión de trabajo.(katayunos, the melee, leer un libro...)programar 18 horas seguidas hasta las4 de la mañana no es responsable.programar es extenuante y requieregrandes dosis de concentración,aprende a gestionarla (avoid TheZone, pomodoro, pair programming).
    50. 50. Responsabilidad y éticabe carefull what you ask for Eres responsable de tu carrera, de tuwork ethic formación, etc.¿sólo 40 horas a tu profesión? QA should find nothingDistinguir profesión de trabajo.(katayunos, the melee, leer un libro...)programar 18 horas seguidas hasta las4 de la mañana no es responsable.programar es extenuante y requieregrandes dosis de concentración,aprende a gestionarla (avoid TheZone, pomodoro, pair programming).
    51. 51. Responsabilidad y éticabe carefull what you ask for Eres responsable de tu carrera, de tuwork ethic formación, etc.¿sólo 40 horas a tu profesión? QA should find nothingDistinguir profesión de trabajo.(katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad.programar 18 horas seguidas hasta las4 de la mañana no es responsable.programar es extenuante y requieregrandes dosis de concentración,aprende a gestionarla (avoid TheZone, pomodoro, pair programming).
    52. 52. Responsabilidad y éticabe carefull what you ask for Eres responsable de tu carrera, de tuwork ethic formación, etc.¿sólo 40 horas a tu profesión? QA should find nothingDistinguir profesión de trabajo.(katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad.programar 18 horas seguidas hasta las4 de la mañana no es responsable. pide ayuda, nunca digas no cuando te piden ayuda.programar es extenuante y requieregrandes dosis de concentración,aprende a gestionarla (avoid TheZone, pomodoro, pair programming).
    53. 53. Responsabilidad y éticabe carefull what you ask for Eres responsable de tu carrera, de tuwork ethic formación, etc.¿sólo 40 horas a tu profesión? QA should find nothingDistinguir profesión de trabajo.(katayunos, the melee, leer un libro...) false delivery: gran ejercicio de irresponsabilidad.programar 18 horas seguidas hasta las4 de la mañana no es responsable. pide ayuda, nunca digas no cuando te piden ayuda.programar es extenuante y requieregrandes dosis de concentración, practice ethics --> practice on youraprende a gestionarla (avoid The own time, not at your employers timeZone, pomodoro, pair programming).
    54. 54. Aprender a decir no
    55. 55. Aprender a decir nohazlo o no lo hagas, pero no “lo intentes”
    56. 56. Aprender a decir nohazlo o no lo hagas, pero no “lo intentes”Falta de ética: cada vez que dices que “lointentarás” sabiendo que es imposible, huyes de laconfrontación.
    57. 57. Aprender a decir nohazlo o no lo hagas, pero no “lo intentes”Falta de ética: cada vez que dices que “lointentarás” sabiendo que es imposible, huyes de laconfrontación.De la confrontación nacen mejores soluciones
    58. 58. Aprender a decir nohazlo o no lo hagas, pero no “lo intentes”Falta de ética: cada vez que dices que “lointentarás” sabiendo que es imposible, huyes de laconfrontación.De la confrontación nacen mejores solucionesarguments/disagreements --> any argument that cant´b e settled in five minutes can´t be settled byarguing
    59. 59. Aprender a decir nohazlo o no lo hagas, pero no “lo intentes”Falta de ética: cada vez que dices que “lointentarás” sabiendo que es imposible, huyes de laconfrontación.De la confrontación nacen mejores solucionesarguments/disagreements --> any argument that cant´b e settled in five minutes can´t be settled byarguingLas estimaciones son eso: estimaciones
    60. 60. Dí sí
    61. 61. Dí síUn buen profesional debe comprometerse.
    62. 62. Dí síUn buen profesional debe comprometerse.“es que las estimaciones son estimaciones” -el gran cáncer del agilismo.
    63. 63. Dí síUn buen profesional debe comprometerse.“es que las estimaciones son estimaciones” -el gran cáncer del agilismo.Creando un lenguaje para el compromiso:
    64. 64. Dí síUn buen profesional debe comprometerse.“es que las estimaciones son estimaciones” -el gran cáncer del agilismo.Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend
    65. 65. Dí síUn buen profesional debe comprometerse.“es que las estimaciones son estimaciones” -el gran cáncer del agilismo.Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend I hope to get this done by tomorrow, I wish i had time fo rthat
    66. 66. Dí síUn buen profesional debe comprometerse.“es que las estimaciones son estimaciones” -el gran cáncer del agilismo.Creando un lenguaje para el compromiso: I need to lose weight, Some should make that happend I hope to get this done by tomorrow, I wish i had time fo rthat Let´s meet sometime. Let´s finish this thing
    67. 67. Trabajo bajo presión
    68. 68. Trabajo bajo presiónstay clean: professionals do not sucums tothe temptation to create a mess ir order tomove quickly. Quick and dirty is anoxymoron. Dirty always means slow!
    69. 69. Trabajo bajo presiónstay clean: professionals do not sucums tothe temptation to create a mess ir order tomove quickly. Quick and dirty is anoxymoron. Dirty always means slow!no abandonar tus principios en momentos depresión, sino hacerte más fuerte en ellos.Guarrear, o dormir menos, te hace menosproductivo, no más.
    70. 70. DETAILS
    71. 71. DETAILSCommunication about details is hard. It´s to easyfor each party to wave their handas and assumethat the other party understand.
    72. 72. DETAILSCommunication about details is hard. It´s to easyfor each party to wave their handas and assumethat the other party understand.uml/MDA --> mda assumes that the problem iscode. but code is not the problem. it has neverbeen the problem. the problem is detail.
    73. 73. THERE WILL BE CODE
    74. 74. THERE WILL BE CODEWe will never be rid of code, because code represents the detailsof the requirements. At some level those details cannot be ignoredor abstracted.
    75. 75. THERE WILL BE CODEWe will never be rid of code, because code represents the detailsof the requirements. At some level those details cannot be ignoredor abstracted.The level of abstraction of our languages will continue toincresase. But it will not elimnate code. All the specifications writtenin these higher level and domain-specific languege will be code!
    76. 76. THERE WILL BE CODEWe will never be rid of code, because code represents the detailsof the requirements. At some level those details cannot be ignoredor abstracted.The level of abstraction of our languages will continue toincresase. But it will not elimnate code. All the specifications writtenin these higher level and domain-specific languege will be code!if you have beenn a programmer for more than two or three years,you have probable been significantly slowed down by someoneelseñs messy code.
    77. 77. CLEAN CODE
    78. 78. the boy scout ruleleave the campground cleaner than you found it.
    79. 79. You are reading this book for two reasons.First, you are a programmer. Second, youwant to be a better programmer. Good. Weneed better programmers...
    80. 80. You are reading this book for two reasons.First, you are a programmer. Second, youwant to be a better programmer. Good. Weneed better programmers...is a prequel of Agile Software Development:Principles, Patterns, and Practices...
    81. 81. EXHAUSTIVO@arturoherrero:http://www.slideshare.net/arturoherrero/clean-code-8036914
    82. 82. MEANINGFULL NAMES int d; / elapsed time in days / int elapsedTimeInDays;
    83. 83. FUNCTIONS
    84. 84. FUNCTIONS/ mejor función es la que tiene cero argumentos /laFunctions that take three arguments are significantly harder tounderstand than dyads. The issues of ordering, pausing, and ignoringare more than doubled. I suggest you think very carefully beforecreating a triad.
    85. 85. FUNCTIONS/ mejor función es la que tiene cero argumentos /laFunctions that take three arguments are significantly harder tounderstand than dyads. The issues of ordering, pausing, and ignoringare more than doubled. I suggest you think very carefully beforecreating a triad.//mal...function activarSistema(boolean activar);//bien!function activarSistema();function desactivarSistema();
    86. 86. ERROR HANDLING
    87. 87. ERROR HANDLINGFunctions should do one thing. Error handing is one thing
    88. 88. ERROR HANDLINGFunctions should do one thing. Error handing is one thingpublic void delete(Page page) { try { deletePageAndAllReferences(page); } catch (Exception e) { logError(e);}private void deletePageAndAllReferences(Page page) throws Exception { deletePage(page); registry.deleteReference(page.name); configKeys.deleteKey(page.name.makeKey());}private void logError(Exception e) { logger.log(e.getMessage());}
    89. 89. COMMENTS
    90. 90. COMMENTSThe proper use of comments is to compensate for ourfailure to express ourself in code
    91. 91. COMMENTSThe proper use of comments is to compensate for ourfailure to express ourself in codeEvery time you write a comment, you should grimace andfeel the failure of your ability of expression.
    92. 92. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code Every time you write a comment, you should grimace and feel the failure of your ability of expression./ Check to see if the employee is eligible for full benefits / if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if (employee.isEligibleForFullBenefits())
    93. 93. COMMENTS The proper use of comments is to compensate for our failure to express ourself in code Every time you write a comment, you should grimace and feel the failure of your ability of expression./ Check to see if the employee is eligible for full benefits / if ((employee.flags & HOURLY_FLAG) && (employee.age > 65)) if (employee.isEligibleForFullBenefits()) //bien! / Returns an instance of the Responder being tested. / protected abstract Responder responderInstance();
    94. 94. FORMATTING//mal! máximo un nivel de tabulación!if (this.is){ String cocotero = “tralari”; for (i=0;i<10;i++){ pepo = coco[i]; while (pepo > coco){ cacaflush(); } }}
    95. 95. FORMATTING//mal! máximo un nivel de tabulación!if (this.is){ String cocotero = “tralari”; for (i=0;i<10;i++){ pepo = coco[i]; while (pepo > coco){ cacaflush(); } }}//bien! sin braquets, no hay otra...if (page != null) pageData = page.getData();while ((line = br.readLine()) != null) measureLine(line);
    96. 96. CLASES“Methods with no more than 5 lines of code,classes with no more than 3 public methods (average)” carlos ble
    97. 97. escribir código limpio te fuerza aseguir patrones, y prácticas, tras loscuales hay una serie de principios.
    98. 98. ?

    ×