Clean code

17
clean_code by @wilq_

description

Clean code

Transcript of Clean code

Page 1: Clean code

clean_code

by @wilq_

Page 2: Clean code

Bible

http://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

Page 3: Clean code

–Robert C. Martin

“It is not the language that makes a program look simple, but the programmer who makes

the language appear simple”

Page 4: Clean code

What is clean code?• Bad code does too much – Clean code is focused

• The language you wrote your code with should look like it was made for the problem

• It should not be redundant

• Reading your code should be pleasant

• Can be easily extended by any other developer

• It should have minimal dependencies

• Smaller is better

• It should have unit and acceptance tests

• It should be expressive

Page 5: Clean code

Productivity vs time

Page 6: Clean code

Coding Style• http://blog.arkency.com/2014/07/code-style-

matters/

• https://github.com/bbatsov/ruby-style-guide ex. Use two spaces per indentation level (aka soft tabs). No hard tabs.

• http://google-styleguide.googlecode.com/svn/trunk/javaguide.html

Page 7: Clean code

Variables• int day

-------------------------int d

• int elapsedTimeInDays -------------------------int elapsed

• public static void Copy(string source, string destination) -------------------------public static void Copy(string a, string b)

• exception: i, j, k ...

Page 8: Clean code

Variables

• date generationTimestamp -------------------------date genymdhms

• private const int WorkDaysPerWeek = 5;for (int i = 0; i < WorkDaysPerWeek; i++)-------------------------for (int i = 0; i < 5; i++)

Page 9: Clean code

Classes

• Noun phrase, e.g. Cusomer, WikiPage, Account, AddressParser

• Never verb e.g. make, do, prepare etc.

• http://stackoverflow.com/questions/1866794/naming-classes-how-to-avoid-calling-everything-a-whatevermanager

Page 10: Clean code

Functions

• The Stepdown Rule

• Flagse.g. private void AddPageInfo(string title, bool add)

Page 11: Clean code

Functions• Niladic

• Monadicprivate void BuildPageText() { StringBuilder pageInfo = new StringBuilder(); pageInfo.Add(AddPageInfo()); }private string AddPageInfo()-------------------------private void IncludePageInfo(StringBuilder pageText)

Page 12: Clean code

Functions• Dyadic

• Triadic

• Polyadic public Availability(string contract, string languageCode, string depTLC, int depRadius, string arrTLC, int arrRadius, string isoDepDate, int depOffsetBefore, int depOffsetAfter, string isoRetDate, int retOffsetBefore, int retOffsetAfter, string isoDepTime, string isoRetTime, string cabinClass, int ADTCount, int CHDCount, int INFCount, int INSCount, int SRCCount, int STUCount, int YTHCount, EasyTravel.Serialization.Objects.Air.FlightType flightType, List<EasyTravel.Serialization.Objects.Air.Airline> mandatoryAirlines, List<EasyTravel.Serialization.Objects.Air.Airline> excludedAirlines)

Page 13: Clean code

Comments

• Explain yourself//checking is it working day or not if (this.day >= 1 && this.day <= 5) -------------------------IsWorkingDay()

Page 14: Clean code

Train Wrecks

• string outputDir = ctxt.GetOptions().GetScratchDir().GetAbsolutePath();-------------------------Options option = ctxt.GetOptions(); FileStream fileStream = option.GetScratchDir(); string outputDir = fileStream.GetAbsolutePath();

Page 15: Clean code

Sources

• http://blog.goyello.com/2013/01/21/top-9-principles-clean-code/

• http://technocracy.anixe.pl/2009/06/24/szkolenie-technocracy-vi-clean-code/

Page 16: Clean code

Images

• http://blog.claudiupersoiu.ro/wp-content/uploads/2011/08/DSC_3540_2.jpg

• http://javastart.pl/wp-content/uploads/2013/12/cleancode1.jpg

Page 17: Clean code

Thank you