Clean code

18
Adegoke Obasa Clean Code

Transcript of Clean code

Page 1: Clean code

Adegoke Obasa

Clean Code

Page 2: Clean code

What is Clean Code

“Clean code is a code that is written by

someone who cares” - Micheal Feathers

It is written by someone who has treated it as

an art and paid attention to all details.

Page 3: Clean code

Focused- SRP (Single Responsibility Principle)

- Must do one thing only

Page 4: Clean code

Not Redundant- DRY rule (Don’t Repeat Yourself)

Page 5: Clean code

Pleasant- Harry Potter :)

- Lord Of The Rings

- Asa’s Tunes

- KISS principle (Keep It Simple, Stupid!)

- YAGNI principle (You Ain’t Gonna Need It)

Page 6: Clean code

Easily Extended- You write code for other developers

- You could be that other developer

Page 7: Clean code

Smaller is Better- There should be a standard for max number of lines in a method.

- Example

- Methods - Avg. 30 code lines

- Class - < 30 Methods

- Packages - <= 30 Classes

Page 8: Clean code

Others- Unit Tests

- Loose Coupling

- High Cohesion

- Design Patterns

- Frameworks

Page 9: Clean code

Demo

Page 10: Clean code

public class Xbps {

public void go(String s) {

List l = prm.ld(s);

List l2 = copy(l);

for (int i = 0; i < l.size(); i++) {

String p = (String) l.get(i);

if (p.substring(5, 9).equals("9982")) {

l2.remove(p);

}

}

prm.sv(s, l2);

}...

Page 11: Clean code

public class ParametersValidator {

public void go(String s) {

List l = prm.ld(s);

List l2 = copy(l);

for (int i = 0; i < l.size(); i++) {

String p = (String) l.get(i);

if (!p.substring(5, 9).equals("9982")) {

l.remove(p);

}

}

prm.sv(s, l2);

}

...

Page 12: Clean code

public class ParametersValidator {

public void go(String s) {

List l = parameterStore.load(s);

List l2 = copy(l);

for (int i = 0; i < l.size(); i++) {

String p = (String) l.get(i);

if (!p.substring(5, 9).equals("9982")) {

l.remove(p);

}

}

parameterStore.save(s, l2);

}

...

Page 13: Clean code

public class ParametersValidator {

public void go(String webServiceName) {

List parameters =

parameterStore.load(webServiceName);

List validParams = copy(parameters);

for (int i = 0; i < parameters.size(); i++) {

String parameter = (String) parameters.get(i);

if (!parameter.substring(5, 9).equals("9982"))

{

validParams.remove(parameter);

}

}

parameterStore.save(webServiceName, validParams);

}

...

}

Page 14: Clean code

public class ParametersValidator {

public void removeInvalidParameters(String

webServiceName) {

List parameters =

parameterStore.load(webServiceName);

List validParams = copy(parameters);

for (int i = 0; i < parameters.size(); i++) {

String parameter = (String) parameters.get(i);

if (isInvalid(parameter)) {

validParams.remove(parameter);

}

}

parameterStore.save(webServiceName, validParams);

}

Page 15: Clean code

Lessons- Good Naming Conventions

- PascalCasing

- camelCasing

- snake_casing

- Good Code Formatting

- Coding Standards

- Good Comments

- Not too Much

Page 16: Clean code

Q & A

Page 17: Clean code

Further Reading

http://blog.goyello.com/2013/01/21/top-9-

principles-clean-code/

..on Software

<http://bodtoki.blogspot.com/2010/12/1-good-

names-good-code-series.html>

Page 18: Clean code

Thanks :)Adegoke Obasa

@goke_epapa