程序首先为人,其次为计算机。好的程序应该朝着最小理解时间靠近,保持代码的整洁性利于阅读、维护,同时在大多情况下并没有带来很多的性能损失。围绕着最小理解化时间,我们应该可以想到以下的好代码具有的特性:
- 函数名称应该充分表达意思,如果有And或者Or,或者Process,Execute等词语,则一定有必要进行拆分,因为一个函数仅做一件事情。
- 尽量做到简单。一个函数一件事,一行代码一件事 ,一个循环一件事,一个变量一件事。
- 函数体内应该在一个抽象层次上,便于理解。
- 尽量用肯定的变量和函数名称。
- 函数里面哪怕只有一句话,如果这个函数名能更方便理解的话,那么可以写一个函数。
- 尽量减少函数复杂度和圈复杂度。函数复杂度有代码行数,参数个数,调用函数个数,每行运算符个数,调转语句个数,嵌套层数,变量个数,变量引用跨度,递归,函数出口,分支语句比例等。圈复杂度可想而知,指的是一个个的圈圈,if里面又一个if,就像一个圈里面又一个圈。If,while,case,catch,三元运算符等。我们写程序,每个函数尽量保持在圈复杂度小于5,则不容易出错。
- 对于Public方法,主要要体现流程,要像目录一样,这里其实也可以理解为系统的分层,在逻辑层就应该像目录一样,在数据操作层,则进行数据的各种操作,逻辑层调用数据操作层,则很方便了解业务像阅读书的目录,同时可以快速定位到具体的业务细节。
总之,写好函数是写好代码的一个重要方面,写函数要注意的是简单,简单,再简单!短小,短小,再短小!要像写优美的散文一样,写故事一样,使别人容易阅读,代码尽量做到自我解释,这样便于维护,大大减少维护时间,提高排错效率,不易出错,代码更加灵活。
写代码分为两种,一种是复杂,复杂到没有明显的缺陷;一种是简单,简单到明显没有缺陷。当我们真的写出很好的代码了,其实也很方便看出来代码有没有缺陷了。