专栏名称: 程序员大咖
为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE API等等。并不定期奉送各种福利。
目录
相关文章推荐
OSC开源社区  ·  马建仓 AI ... ·  昨天  
程序员的那些事  ·  疯了!我那些怀疑 AI ... ·  4 天前  
阿里技术  ·  Cursor入门:MCP开发调用和项目实战 ·  3 天前  
程序猿  ·  Spring 之父:我不是 Java ... ·  4 天前  
腾讯技术工程  ·  腾讯的CMS管理系统能好用到什么程度 ·  2 天前  
51好读  ›  专栏  ›  程序员大咖

看似简单但容易忽视的编程常识

程序员大咖  · 公众号  · 程序员  · 2018-03-24 10:24

正文

请到「今天看啥」查看全文



好的代码首先是逻辑正确的



如何用编程语言表述正确的代码逻辑,这个问题好像很少有人单独拎出来讲,因为这个问题的答案很简单,简单得你都懒得去思考它,因为你肯定觉得,用编程语言正确的表述代码逻辑无非就是if 、while 之类的东西,有什么好探讨的,其实我要分享的并不是这些关键词的本身在逻辑中表达的含义,而是这些关键词的背后,编写程序的过程中,是否真的认真思考过背后的逻辑。


我曾不止一次遇到有多年编程经验的程序员,犯下类似的错误,也见过很多年轻的同学,反复强调纠正后,逻辑上还是会漏洞百出,这几年,我会经常组织我组里面的同学对代码进行走读,总结这些编码中的逻辑错误,很大一部分也是因为编程逻辑背后的思考是不够的。所以我要讲的,是很简单的知识,但是往往是最容易忽略的思考点。


我先给大家看一个例子:



这段代码为的目的是判断userInfo不为空串的时候couponing,看起来这段代码非常简单,判断上似乎还算比较严谨,其实这段代码只是看到了眼前要做的事情,但是并没有看到整体逻辑,为什么这么说呢,请看下面几行代码,也许会引发最这个简单问题新的思考。



这段代码虽说相比之前的代码长了一些,但是反映出来的是逻辑思考的严谨性,从这两个例子比较我们可以很明显的感觉到,第一段代码的问题,我们看到的只是为了保护是否能做couponing的条件,但是并没有去思考,条件不满足的时候,如何去做,是否有能力去恢复这个错误,确实无法恢复的时候,我们是否还要在错误的道路上越错越远呢,这一点非常重要,也很容易忽略,需要在编码的过程中,进行完整的思考才会意识到这个问题的,如果让错误继续执行下去,直到程序运行到下一个我们不期望的点,如果下一个不期望的点,代码上也遵循这个风格,简单的判断不为null,就跳过执行,这样下去,就会有无穷的隐患,代码整体上看上去,就漏洞百出了。所以从这里要给大家一个建议:


【要有一颗勇敢的心,程序不要害怕抛出错误,越害怕,错误越多】



我们应该都知道,错误越是早发现越好处理,其实程序在执行过程中也是一样的,越早发现错误,执行中就越容易处理。我一般称这种代码为代码的盲目容错,看上去这行代码很健壮,不会报错,但是不报错,不能影响错误的客观存在性,错会还是会存在的,遇到错误的时候,我们应该首先想到的是恢复这个错误,对容错问题,是需要进行非常深入很全局的思考才能做的决定,盲目的容错,只会让情况变得更加不可控制。



【千万不要忘记else的思考】







请到「今天看啥」查看全文