Upgrade to Pro — share decks privately, control downloads, hide ads and more …

clean code

clean code

clean code

Grzegorz Wilczyński

July 16, 2014
Tweet

More Decks by Grzegorz Wilczyński

Other Decks in Programming

Transcript

  1. –Robert C. Martin “It is not the language that makes

    a program look simple, but the programmer who makes the language appear simple”
  2. 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
  3. 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
  4. 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 ...
  5. Variables • date generationTimestamp 
 -------------------------
 date genymdhms • private

    const int WorkDaysPerWeek = 5;
 for (int i = 0; i < WorkDaysPerWeek; i++)
 -------------------------
 for (int i = 0; i < 5; i++)
  6. 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
  7. Functions • Niladic • Monadic
 private void BuildPageText() {
 StringBuilder

    pageInfo = new StringBuilder();
 pageInfo.Add(AddPageInfo()); 
 }
 private string AddPageInfo()
 -------------------------
 private void IncludePageInfo(StringBuilder pageText)
  8. 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)
  9. Comments • Explain yourself
 //checking is it working day or

    not 
 if (this.day >= 1 && this.day <= 5) -------------------------
 IsWorkingDay()
  10. Train Wrecks • string outputDir = ctxt.GetOptions().GetScratchDir().GetAbsoluteP ath();
 -------------------------
 Options

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