WHAT BAD CODE BASES SHARE WHAT BAD CODE BASES SHARE No structure, whatsoever Different coding styles... even in the same line Lack of any form of architecture Unreadable 5
COMMENTS IN CODE COMMENTS IN CODE ARE THE SOURCE OF ARE THE SOURCE OF GREAT EVIL GREAT EVIL ..EXCEPT WHEN IT COMES TO DOCS ..EXCEPT WHEN IT COMES TO DOCS ...OR RESOURCES, MAGIC AND OTHER STUFF LIKE THAT ...OR RESOURCES, MAGIC AND OTHER STUFF LIKE THAT 12
Non understandable (variable) naming According to: // A has no meaning, whatsoever $a = [ "Bella" ,"Lucy" , "Daisy" ]; // Variable is self explaing $top_3_most_popular_female_dog_names = [ "Bella" ,"Lucy" ,"Daisy" ]; wideopenpets.com 17
Non understandable (variable) naming // Abbreviation is not clear // $thing doesn't make it any better either $trans_cost = get_trans_cost($thing); // Now we now it are transaction costs $transaction_cost = get_trans_cost($thing); 18
UNSURE WHY SOME CODE WORKS UNSURE WHY SOME CODE WORKS function cartesian(arg) { var r = [], max = arg.length-1; function helper(arr, i) { for (var j=0, l=arg[i].length; jvar a = arr.slice(0); // clone arr a.push(arg[i][j]); if (i==max) r.push(a); else helper(a, i+1); } } helper([], 0); return r; } 19
UNSURE WHY SOME CODE WORKS UNSURE WHY SOME CODE WORKS // Cartesian shuffle in order to generate all possible combina // see: https://stackoverflow.com/q/33524132 function cartesian(arg) { var r = [], max = arg.length-1; ... } helper([], 0); return r; } 20
SET VARIABLES WHERE THEY BELONG SET VARIABLES WHERE THEY BELONG function cartesian(arg) { var r = [], max = arg.length-1; function helper(arr, i) { for (var j=0, l=arg[i].length; jvar a = arr.slice(0); // clone arr a.push(arg[i][j]); if (i==max) ... } } ... } 25
SET VARIABLES WHERE THEY BELONG SET VARIABLES WHERE THEY BELONG function cartesian(arg) { var result = []; function helper(arr, i) { var maxLength = args[i].length - 1; for (var helperI = 0, helperIvar a = arr.slice(0); // clone arr a.push(arg[helperI][j]); if (i===maxLength) ... } } ... } 26
The Flying V for (var i = 0; i < array.lenght; i++) { for (var nestedArrI = 0; nestedArrI < array[i].length; i++ if (array[i][nestedArrI] === true) { while (1 == 1) { switch(array[i][nestedArrI]) { case X: if (...) { ... } } } } } } } 36
DON'T BE THE ROCKSTAR DON'T BE THE ROCKSTAR YOUR CODE IS ONLY AS MAINTAINABLE YOUR CODE IS ONLY AS MAINTAINABLE AS THE MOST JUNIOR DEV IN YOUR TEAM AS THE MOST JUNIOR DEV IN YOUR TEAM 45
TAKE AWAYS TAKE AWAYS Setup linters, both for Dev-enviroment and C.I. Ensure your code stays readable and comprehensible Keep evaluating your code maintainability and keep technical depth in scope 54