刚在网上查了查“代码保护”,说的是公司代码,怕被员工偷走的事情。
我这里说的“代码保护”,说的不是这回事。说的是我在做项目过程中,经常写的如下的代码。
if (list != null && !list.isEmpty()) {
...
}
if (s != null && !s.equals("")) {
...
}
在你的代码中,可以想象很多也都是这样的代码。
从系统的稳定性来说,这些代码不可或缺。但是为了稳定性,写业务之前,是否定要这么一段。我想说的是,往往在我们的代码中,这些“保护代码”已经到了泛滥的地步。稳定性的重要性自不必说。
但对一个有些代码审美的人,面对这么多“保护代码”,真的觉得有点disgusting。
怎么才能又要稳定性,又让代码美呢。
其实这个问题,肯定不是我第一个提出。那就找找解决方案吧。现成的,何乐而不为呢。
其实以上代码可以称为“校验代码”。括号里面写的代码才能真正的业务代码。代码中如果校验代码和业务代码写在一块,那肯定让人看着难受。
引入个新名词-契约式编程。
简单释义:代码中只做按契约定好的事情,或者契约不满足,直接报错。
如果契约中定好了list不能为空,那代码应该如下写。
if (list == null || list.isEmpty()) {
throw new Exception("list should not be null or empty");
}
...
business code
而且最好以上的校验代码和业务代码分开在不同文件中,这样看着更清爽了。
契约式编程,我也是略懂皮毛,这里也做详细介绍。但是思想应该是没弄错。只要我们坚持契约式编程的思想,那我们的代码也会变得优美。
如果只是想写对代码,以上说的可能用处不大。如果想写好些代码,以上说的希望不是误导。