在工作,我们应该都不想看到非常的长函数。对于一个运行5年左右的项目,极有可能出现这种情况。由于长函数的长、if/else嵌套,导致代码的可读性非常差,这对于项目的维护和开发带来了极大的困难。所以我们应该避免写长函数,并且有改造方法。
1.长函数的定义
针对一个函数,多长才算是长函数呢?这个每个人都有不同的定义。我认为,不能仅仅从代码的多少去判断,应该从另一个角度(是否分类处理数据)来思考这个事情。如果是平铺直叙,一点点地加代码,这必会成为长函数。有人说超过20行就算是长函数,有人的标准更高。我认为一屏能够看下,基本都是可以接受的。
2.如何写程序,才能避免或改造长函数?
1)分类处理数据
public void TestLongMethod(Map<String,String> map){// 1.校验数据checkData(map);// 2.处理数据handleData(map);// 3.发送mq消息sendMq(map);}
2)继承或策略模式处理数据
在分类处理数据时,如果出现多种情况,每种情况都有这样一套分类处理的流程,此时可以考虑继承或者策略模式处理数据。
例如:一个活动,分为很多类型。每种类型的数据都是这样一套数据。
3)避免多重嵌套,应该规定最多2级
如下代码,一个方法内出现过多的if语句,应该根据具体业务,避免过多的if嵌套。
4)避免方法过长,有意识地去优化代码
如下代码,一个方法过长,应该分类处理数据,可以参考步骤1。(生产代码,所以做了处理)
3.自律
一个追求优秀的程序员对自己的代码风格应该有严格的自律,一定不会写出长函数。