Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Clean Software Design - DevNot Summit Istanbul 2017

1,233 views

Published on

This the content that I shared at DevNot Summit 2017 conference. It mentions my ideas about clean software design.

Published in: Software
  • DOWNLOAD TH1S BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc EBOOK Here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Clean Software Design - DevNot Summit Istanbul 2017

  1. 1. CLEAN DESIGN SOFTWARE LEMi ORHAN ERGiN agile software craftsman @ iyzico
  2. 2. codedesign processteam management organization tests customer ux & ui culture office architecture infrastructure ux & uimeetingssecurity
  3. 3. things smell… and if something smells bad, it means it is not clean
  4. 4. LEMi ORHAN ERGiN agile software craftsman @ iyzico /lemiorhan lemiorhanergin.com @lemiorhan agile practice lead at iyzico developing software since 2001 worked at Sony, eBay/GittiGidiyor, ACM consultant, architect, mentor, developer founder of Software Craftsmanship Turkey ex community leader of Agile Turkey meetup.scturkey.org agileturkey.org dev.iyzipay.com
  5. 5. Jack W. Reeves The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf What is So"ware Design?
  6. 6. Source code is the real so"ware design Designing so!ware is an exercise in managing complexity Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  7. 7. The so"ware design is not complete until it has been coded and tested Testing is part of the process of refining the design Jack W. Reeves What is Software Design? The C++ JournalVol. 2, No. 2. 1992 http://user.it.uu.se/~carle/softcraft/notes/Reeve_SourceCodeIsTheDesign.pdf
  8. 8. Programming Source Code SOFTWARE DESIGN Automated Testing (Unit, Functional, etc.)
  9. 9. The very first value of so"ware is Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site …
  10. 10. to tolerate and facilitate on-going changes Robert C. Martin Author of Clean Code and Clean Coder Owner of cleancoders.com training site The very first value of so"ware is
  11. 11. Each city has to be renewed in order to meet the needs of its populace. So!ware-intensive systems are like that. Grady Booch Developed UML Wrote foreword to “Design Patterns” and “Technical Debt” books Istanbul, TurkeyCredit: European Space Imaging
  12. 12. Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.)
  13. 13. Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.) Testing and Refactoring 
 are first class citizens of so"ware design Tests should pass Refactoring should be continuous
  14. 14. Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.)
  15. 15. Programming Source Code SOFTWARE DESIGN Refactoring clean? Automated Testing (Unit, Functional, etc.)
  16. 16. COUPLING When readfile() is changed, do you change writeFile() too? It shows how many places we need to change
  17. 17. Two elements are loosely coupled if they are not shown in the same diff Kent Beck The creator of extreme programming One of the signatories of the Agile Manifesto Pioneered software design patterns and TDD
  18. 18. COHESION Do you search a lot where to change? It shows how easy to find the places we need to change
  19. 19. How many files at any one time is still open for edit shows the level of cohesion Nat Pryce Co-Author of Growing Object-Oriented Software Guided by Tests Early adopter of XP
  20. 20. Programming Source Code SOFTWARE DESIGN Refactoring Low Coupling High Cohesion Automated Testing (Unit, Functional, etc.)
  21. 21. Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion Refactor namings (how) mailer.useGmailSmtpSendEmail (what) mailer.sendEmail (why) mailer.sendActivationEmail Reveal what you are doing or why you are doing, not how you are doing
  22. 22. Refactor namings Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion manager handler helper utils facade service validator converter repository wrapper interceptor controller parser gateway generator dto, vo, entity Know what these really means
  23. 23. Split methods, Create new abstractions, Re-organize code Programming Source Code SOFTWARE DESIGN Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion Be aware of leaky abstractions. Do not expose details and limitations of its underlying implementation to its users that should ideally be hidden away.
  24. 24. Programming Source Code Refactoring Low Coupling High Cohesion Automated Testing (Unit, Functional, etc.) and Code Review Pair Programming
  25. 25. When code is reviewed, the design will be cleaner. Programming Source Code Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion and Code Review Pair Programming Pair prog makes you code cheaper due to spending less time in decision taking, bug fixing and debugging.
  26. 26. Find and remove duplications Programming Source Code Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion and Code Review Pair Programming It’s not about code duplication, it’s about knowledge duplication. Don’t repeat yourself. Every piece of knowledge should have one and only one representation.
  27. 27. Programming Source Code Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion and Code Review Pair Programming Keep it SMALLclasses, interfaces, responsibilities, methods, modules, components… use design pa!erns wisely
  28. 28. Programming Source Code Refactoring Automated Testing (Unit, Functional, etc.) Low Coupling High Cohesion and Code Review Pair Programming these STOP Singletons? Sharing state Static & new keywords Framework slave coding Premature optimization Primitive obssession Huge upfront design Controling flows with exceptions or use them wisely
  29. 29. Programming Source Code Refactoring Low Coupling High Cohesion Automated Testing (Unit, Functional, etc.) and Code Review Pair Programming
  30. 30. LEMi ORHAN ERGiN agile software craftsman @ iyzico /lemiorhan lemiorhanergin.com @lemiorhan

×