clean code coding like a professional

44
Clean Code Coding like a professional XPDay Vietnam @ Hanoi May, 2016 Nguyễn Khắc Nhật | Learning Master @ Học Viện Agile | [email protected]

Upload: nhat-khac

Post on 15-Apr-2017

182 views

Category:

Software


4 download

TRANSCRIPT

Page 1: Clean code   coding like a professional

Clean CodeCoding like a professional

XPDay Vietnam @ Hanoi May, 2016

Nguyễn Khắc Nhật | Learning Master @ Học Viện Agile

| [email protected]

Page 2: Clean code   coding like a professional

| Agile | Scrum | Kanban | Lean

| Java | Scala | Typescript | NodeJS

| Virtual DOM | Bobril | ReactJS | AngularJS

Page 3: Clean code   coding like a professional

The snake game

Page 4: Clean code   coding like a professional

What is the difference?

Good CodeBad Code

Page 5: Clean code   coding like a professional

Bad code looks like this...

Page 6: Clean code   coding like a professional

or even this...

Page 7: Clean code   coding like a professional

Good code looks like this...

Page 8: Clean code   coding like a professional

or this...

Page 9: Clean code   coding like a professional

Productivity trend

Page 10: Clean code   coding like a professional
Page 11: Clean code   coding like a professional

So...

Page 12: Clean code   coding like a professional

What is clean code?

“Clean code is simple and direct. Clean code reads like well-written prose. Clean code never obscures the designer’s intent but rather is full of crisp abstractions and straightforward lines of control”

Grady Booch Object Oriented Analysis

Page 13: Clean code   coding like a professional

What is clean code?

“Clean code can be read, and enhanced by an developer other than its original author. It has unit and acceptance tests. It has meaningful names. It provides one way rather than many ways of doing one thing. It has minimal dependencies,...”

Dave Thomas OTI, Eclipse

Page 14: Clean code   coding like a professional

What is clean code?

“I could list all of the qualities that I notice in clean code, but there is one overarching quality that leads to all of them. Clean code always looks like it was written by someone who cares...”

Michael FeathersWorking effectively with Legacy Code

Page 15: Clean code   coding like a professional

What is clean code?

“In recent years I begin, and nearly end, with Beck’s rules of simple code. In priority order, simple code:

Run all the tests;

Contains no duplication;

Express all the design ideas that are in the system

Minimizes the numbers of entities such as classes, methods, functions,...”

Ron JeffriesExtreme Programming Installed

Extreme Programing Adventures in C#

Page 16: Clean code   coding like a professional

and...

Page 17: Clean code   coding like a professional

What make bad or good code?

Names Functions Comments Formats

Objects andData Structure

Error Handling

Unit Tests

Boundaries

Classes System ...

Page 18: Clean code   coding like a professional

Names

Page 19: Clean code   coding like a professional

Meaningful Names

Page 20: Clean code   coding like a professional

Meaningful Names

Page 21: Clean code   coding like a professional

Naming Rules

Use Intention-Revealing Names

Avoid Disinformation

Make meaningful Distinctions

Use Pronounceable Names

Use Searchable Names

Avoid Encodings

Avoid Mental Mapping

Class Names

Method Names

Don’t Be Cute

Pick One Word per Concept

Don’t Pun

Use Solution Domain Names

Use Problem Domain Names

Add meaningful Context

Don’t Add Gratuitous Context

Page 22: Clean code   coding like a professional

Try with this code….

Page 23: Clean code   coding like a professional

and then….

Page 24: Clean code   coding like a professional

and, how about this...

Page 25: Clean code   coding like a professional

Functions

Page 26: Clean code   coding like a professional

Function Arguments

Page 27: Clean code   coding like a professional

Function Rules

Functions Should be Small

Functions Should Do Only One Thing

One level of Abstraction per Function

Use Descriptive Names

Function Arguments

Have No Side Effects

Command/Query Separation

Prefer Exceptions to Returning Error Codes

Don’t Repeat Yourself

Multiple Returns

Page 28: Clean code   coding like a professional

Demo with compareTo() method

Page 29: Clean code   coding like a professional

The beauty of functional programming

Page 30: Clean code   coding like a professional

Comments

"Don’t comment bad code—rewrite it."

Page 31: Clean code   coding like a professional

Formats

Page 32: Clean code   coding like a professional

Formatting

Vertical Formatting

Horizontal Formatting

The team’s rules first!!!

Page 33: Clean code   coding like a professional

Conventions

Page 34: Clean code   coding like a professional

Objects andData Structure

Page 35: Clean code   coding like a professional

Objects and Data structures

Object Data Structure

Page 36: Clean code   coding like a professional

Law of Demeter

Given method ƒ of class C, ƒ should only call methods of:

● C

● An object created by ƒ

● An object passed as an argument to ƒ

● An instance variable of C

Page 37: Clean code   coding like a professional

...

Page 38: Clean code   coding like a professional

Clean, Clean, Clean

Page 39: Clean code   coding like a professional

Pair Programming

Page 40: Clean code   coding like a professional

like this …

Page 41: Clean code   coding like a professional

CodingDojo

Page 42: Clean code   coding like a professional

CodeRetreat

Page 43: Clean code   coding like a professional
Page 44: Clean code   coding like a professional

THANK YOU!