`
jianqicui
  • 浏览: 10557 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

从代码保护说开去

 
阅读更多

刚在网上查了查“代码保护”,说的是公司代码,怕被员工偷走的事情。

 

我这里说的“代码保护”,说的不是这回事。说的是我在做项目过程中,经常写的如下的代码。

 

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
 

而且最好以上的校验代码和业务代码分开在不同文件中,这样看着更清爽了。

 

契约式编程,我也是略懂皮毛,这里也做详细介绍。但是思想应该是没弄错。只要我们坚持契约式编程的思想,那我们的代码也会变得优美。

 

如果只是想写对代码,以上说的可能用处不大。如果想写好些代码,以上说的希望不是误导。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics