ryanmcdermott / clean-code-javascript JavaScript 95K 13K Clean Code concepts adapted for JavaScript javascript principles composition inheritance