Good code, Bad Code
-
Upload
josedasilva -
Category
Technology
-
view
1.895 -
download
494
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: [email protected]
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!
Your time
Questions ? Comments ? Both ?
Thank you!
Feedback welcomedhttps://joind.in/talk/view/8815
Twitter: josedasilva
Linkedin: linkedin.com/in/josedasilva
Email: [email protected]