1、Duplicated Code(重复代码)
坏味道行列中首当其冲的就是重复代码。如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将它们合而为一,程序会变得更好。
2、Long Method(过长函数)
应该积极的分解函数,我们遵循这样一条原则:每当感觉需要用注释来说明点说明的时候,我们就把需要说明的东西写进一个独立函数中,并以其用途(而非实现手法)命名。我们可以对一组甚至短短一行代码做这件事情。哪怕替换之后的函数调用动作比函数自身还长,只要函数名能够解释其用途,我们也该毫不犹豫地那么做。关键不在于函数的长度,而在于“做什么”和“如何做”之间的语义距离。
如何确定该提炼哪一段代码呢?一个很好的技巧是:寻找注释。他们通常能指出代码用途和实现手法之间的语义距离。如果代码前方有一行注释,就是在提醒你:可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。就算只有一行代码,如果它需要以注释来说明,那也值得jiagnta将它提炼到独立函数中去。
条件表达式和循环通常也是提炼的信号。可以使用Decompose Conditional(分解条件表达式)处理条件表达式、至于循环,应该将循环和其内的代码提炼到一个独立函数中。