Good code, Bad Code

Post on 27-Dec-2014

1.896 views 494 download

description

 

Transcript of Good code, Bad Code

Good code, Bad codeJune 2013 @phplx by Jose da Silva

Agenda● WTF as a Metric● Clean Code● Bad Code Smells● Meaningful Names and Formatting● Comments● Functions● Error Handling● Your time :)

About meJose da Silva

● VP of Engineering @ GuestCentric

● Doing good and bad PHP since PHP 3 (1999)

● Zend Certified Engineer + Certified Scrum Master

● Open Source○ Slimframework.com contributor

● Hobbies○ Table tennis player for more than 20 y

Twitter: josedasilva

Linkedin: linkedin.com/in/josedasilva

Email: josedasilva@gmail.com

WTF as a metric

How many WTF are enough ?

WTF of the day

How to fix the WTF issue ?The developer's only amendment to fix the WTF problem

1. Complain less

+

2. Fix the code

+

3. Remove the unneeded WTF

Clean CodeWhat's clean code anyway ?

Clean CodeWhat's clean code anyway ?

Clean CodeWhat's clean code anyway ?

Clean CodeWhat's clean code anyway ?

Clean CodeWhat's clean code anyway ?

Formatted , Organized and Easy to read/modify

Clean CodeAdvantages

Clean CodeAdvantages

● Readable● Understandable● Less errors● Easy to maintain ( fix, modify, learn, support)● Testable

Clean CodeAdvantages

● Readable● Understandable● Less errors● Easy to maintain ( fix, modify, learn, support)● Testable

Hint: Time = Money

Clean CodeThe cost of owning a mess

http://www.informit.com/articles/article.aspx?p=1235624&seqNum=3

Bad Code smellsMostly found on legacy code

● No separation between PHP and HTML● Lots of requires● Global Variables● No Database Abstraction Layer

http://www.sxc.hu/photo/967754

Bad Code smells● Looks familiar ?

Meaningful Names

● Self explanatory ○ Variables, classes, functions

● Context aware ● Easy to understand by anyone● No comments needed

Meaningful Names

Meaningful Names

1. Bad variable name $n2. Bad variable name $t3. Dispensable comments4. Missing code indentation

Meaningful Names

1. Bad variable name $n2. Bad variable name $t3. Dispensable comments4. Missing code indentation

CommentsThe main purpose of comment is to explain code.

Please don't use a comment when you can use a function or variable.

Comments can contain lines

Comments Do's and don't

Comments Do's and don't

1. Localized comments and names ?

2. Comment adds nothing to the code

Comments Do's and don't

1. Localized comments and names ?2. Comment adds nothing to the

code

Comments Do's and don't

1. Inoffensive comments ?2. Clear code to read ?

Comments Do's and don't

1. Inoffensive comments ?2. Clear code to read ?

No comments needed !!!

Functions● Small ( 1K lines of code is not small !!! )

● Do ONE thing

● Reduced number of arguments

● No side effects

FunctionsDo ONE thing

FunctionsDo ONE thing

Function purpose :

1. Return parts list2. Maintain cache expiration

control ?

FunctionsDo ONE thing

Function purpose :

1. Return parts list

Error Handling1. Use Exceptions instead of returning values

for error handling2. Don't return 'null'3. Don't pass 'null'

Error Handling - Exceptions

Error HandlingDuplicate code

Error HandlingDuplicate code

Null values as error handling

Error Handling

No null returning valuesCentralized error handling

Your best friends = ToolsPHPLOC by Sebastian Bergmanhttps://github.com/sebastianbergmann/phploc

Quick analysis on the status of the code

Cyclomatic Complexity Analysis

Comment lines of code

Lines of code / Number of methods

... http://techportal.inviqa.com/2010/01/28/phploc-php-lines-of-code/

Your best friends = ToolsPHPMD by Manuel Pichlerhttp://phpmd.org/

Code Size Rules

Design Rules

Naming Rules

Unused Code Rules

Excessive Parameter List

...

Your best friends = ToolsPHP CodeSnifferhttp://pear.php.net/package/PHP_CodeSniffer/

Helps you to keep your code readable.

http://techportal.inviqa.com/2009/10/12/usphp_code_sniffer/

How to keep your code clean ?1. Refactor2. Refactor3. Refactor4. Frequent Peer Reviews5. Follow Naming Conventions6. Don't comment and leave code behind, just

DELETE it7. Use the tools often (PHPLOC, PHPMD, PHPCodeSniffer)8. Keep your logs shell open all the time

Recap : Clean CodeWhat's clean code anyway ?

Formatted , Organized and Easy to read/modify

ReferencesClean Code by Hendrik Ebel http://www.slideshare.net/hebel/clean-code

You code sucks, let's fix it by Rafael Dohmshttp://www.slideshare.net/rdohms/bettercode-phpbenelux212alternate

Clean Code Barcelona 2009 by Jan W. Eshuishttp://www.slideshare.net/jwenl/clean-code-barcelona-2009

http://techportal.inviqa.com/2010/01/28/phploc-php-lines-of-code/

We're hiring1. Back-end PHP Engineer

2. Front-end Engineer

3. Software Tester (QA)

4. System Administrator

If you are interested or know someone who, just contact me!

jose@guestcentric.com

Your time

Questions ? Comments ? Both ?

Thank you!

Feedback welcomedhttps://joind.in/talk/view/8815

Twitter: josedasilva

Linkedin: linkedin.com/in/josedasilva

Email: josedasilva@gmail.com