重构36计(25-30)
第二十五计:函数体最多不超过100行
记得以前看过一个函数有9000多行,很壮观啊,从那以后看到长函数时也不奇怪了,我认为过长函数的主要缺点是:
1、严重影响代码的阅读,使用到某个变量的地方可能间隔几百甚至上千行,如果if-else嵌套层次较多的话那就更噩梦了。
2、不利于代码的重用,短小而独立的逻辑处理单元更容易被重用,而过长的代码段则需要经过进一步分解才行。
我觉得函数最好不要超过100行,对于过长的函数要尽可能地进行分解,如果实在不能分解,那么就通过注释的方式增加该函数处理步骤的说明,例如:
public void foo(){// 1、验证参数、内部状态的有效性...// 2、开始倾斜角度...// 2.1 计算角度1...// 2.2 计算角度2...// 3、输出计算说明书...}// 表示用户状态的常量声明public static int USER_STATE_ACTIVE = 0;public static int USER_STATE_DELETE = 1;// 表示用户角色的常量声明public static int USER_ROLE_NORMAL = 2;public static int USER_ROLE_MANAGER = 3;// 下面用户是否被激活的判断if(userState == USER_ROLE_NORMAL){}public class State{ private int state; public State(int s){ state = s; }}// 表示用户状态的常量声明public static State USER_STATE_ACTIVE = new State(0);public static State USER_STATE_DELETE = new State(1);public class Role{ private int role; public Role(int r){ role = r; }}// 表示用户角色的常量声明public static Role USER_ROLE_NORMAL = new Role(2);public static Role USER_ROLE_MANAGER = new Role(3);if(userState == USER_ROLE_NORMAL){}