难闻的代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
/* const */ var CONSONANTS = 'bcdfghjklmnpqrstvwxyz'; /* const */ var VOWELS = 'aeiou'; function englishToPigLatin(english) { /* const */ var SYLLABLE = 'ay'; var pigLatin = ''; if (english !== null && english.length > 0 && (VOWELS.indexOf(english[0]) > -1 || CONSONANTS.indexOf(english[0]) > -1 )) { if (VOWELS.indexOf(english[0]) > -1) { pigLatin = english + SYLLABLE; } else { var preConsonants = ''; for (var i = 0; i < english.length; ++i) { if (CONSONANTS.indexOf(english[i]) > -1) { preConsonants += english[i]; if (preConsonants == 'q' && i+1 < english.length && english[i+1] == 'u') { preConsonants += 'u'; i += 2; break; } } else { break; } } pigLatin = english.substring(i) + preConsonants + SYLLABLE; } } return pigLatin; } |
为毛是这个味?
很多原因:
- 声明过多
- 嵌套太深
- 复杂度太高
检查工具
Lint 规则
1 2 3 4 |
/*jshint maxstatements:15, maxdepth:2, maxcomplexity:5 */ /*jshint 最多声明:15, 最大深度:2, 最高复杂度:5*/ /*eslint max-statements:[2, 15], max-depth:[1, 2], complexity:[2, 5] */ |
结果
1 2 3 4 5 6 |
7:0 - Function 'englishToPigLatin' has a complexity of 7. //englishToPigLatin 方法复杂度为 7 7:0 - This function has too many statements (16). Maximum allowed is 15. // 次方法有太多声明(16)。最大允许值为 15。 22:10 - Blocks are nested too deeply (5). // 嵌套太深(5) |
重构
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 63598217-15">15 16 17 18 19 es notranslate" data-settings=" minimize scroll-always" style=" margin-top: 12px; margin-bottom: 12px; font-size: 13px !important; line-height: 15px !important;">
为毛是这个味?很多原因:
检查工具Lint 规则
结果
重构
|