代码的易读性和效率是难以兼得的,作为一个成长的第一步,我开始关注代码的清晰程度。长函数往往是导致代码晦涩难懂的罪魁祸首。
解决的途径就是对长函数进行分解,将其分解成为一个一个小函数。
在书写一个函数时要秉承这样一个原则:函数名称要与函数功能之间没有语义差别。这样写出来的代码即使不加备注,也是可以让人比较容易看懂的。
把长函数进行分割其实是一件比较简单的事,你只需要把长函数实现功能的方式进行分步,一步一个函数就可以了。只是在分割长函数时有两个需要注意的点。第一个点就是局部变量。只属于某个步骤的局部变量,就转移到相应的步骤函数中。通用的局部变量以传参和返回值的方式在各个小函数和原函数中传递。 临时变量往往是一个函数过长的罪魁祸首,不要让一个临时变量承担太多的任务,一个临时变量只有一个任务,for循环中计数的就只让它计数,当一个变量被多次赋值时你就要考虑是否需要用另一个变量来替他承担一些任务了。但依然存在难以处理的局部变量,这时可以选择用 get函数(名字不一定是getxxx )来代替变量的使用。还有一个令函数难懂的原因其中有些难懂的计算表达式,分解 他们。
分割函数不要矫枉过正,我翻看了很多源码,对一个功能实际实现的追踪是一个十分痛苦的事,因为你会发现你要路过无数个委托函数才能走到你真正寻找的函数那里。当你发现一个函数的函数体和它的函数名称一样简单易读,除去这个函数。
只是自己的总结 ,详细讲解在 Martin fowler的书中有代码演示。