王银《编程的智慧》

编程是一种创造性的工作,是一门艺术

 

一:反复推敲代码

反复提炼,剔除垃圾

二:写优雅的代码

枝丫分明,树状代码

三:写模块化的代码

  • 避免写太长的函数
  • 制造小的工具函数(编译时会内联/inline)
  • 每个函数只做一件简单的事情
  • 避免使用全局变量和类成员(class member)来传递信息,尽量使用局部变量和参数

四:写可读的代码

  • 使用有意义的函数和变量名字
  • 局部变量应该尽量接近使用它的地方(清晰易读)
  • 局部变量名字应该简短
  • 不要重用局部变量(易读)
  • 把复杂的逻辑提取出去,做成“帮助函数”
  • 把复杂的表达式提取出去,做成中间变量
  • 在合理的地方换行(不要让换行干扰语义理解)

五:写简单的代码

  • 避免使用自增减表达式(i++,++i,i–,–i):读和写这两种完全不同的操作不能混淆缠绕
  • 永远不要省略花括号。
  • 合理使用括号,不要盲目依赖操作符优先级
  • 避免使用continue和break
  1. 如果出现了continue,你往往只需要把continue的条件反向,就可以消除continue。
  2. 如果出现了break,你往往可以把break的条件,合并到循环头部的终止条件里,从而去掉break。
  3. 有时候你可以把break替换成return,从而去掉break。
  4. 如果以上都失败了,你也许可以把循环里面复杂的部分提取出来,做成函数调用,之后continue或者break就可以去掉了。

六:写直观的代码

如果有更加直接,更加清晰的写法,就选择它,即使它看起来更长,更笨,也一样选择它。

七:写无懈可击的代码

if双分支,穷尽可能,滴水不漏

八:正确处理错误异常

  • 务必处理异常返回值
  • 尽量在异常出现的当时就作出处理
  • 异常捕获应该尽量具体,不可宽泛
  • try { … } catch里面,应该包含尽量少的代码

九:正确处理null指针

  • 尽量不要产生null指针(尽量不要用null来初始化变量,函数尽量不要返回null)
  • 不要catch NullPointerException
  • 不要把null放进“容器数据结构”里面(如果你真要表示“没有”,那你就干脆不要把它放进去;你可以指定一个特殊的,真正合法的对象,用来表示“没有”)
  • 函数调用者:明确理解null所表示的意义,尽早检查和处理null返回值,减少它的传播(null在不同的地方可能表示不同的意义)
  • 函数作者:明确声明不接受null参数,当参数是null时立即崩溃
  • 使用@NotNull和@Nullable标记
  • 使用Optional类型(把“检查”和“访问”这两个操作合二为一,成为一个“原子操作”)

十:防止过度工程

先可用后重用、扩展

  • 先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。
  • 先写出可用的代码,反复推敲,再考虑是否需要重用的问题。
  • 先写出可用,简单,明显没有bug的代码,再考虑测试的问题。

原文:编程的智慧-王垠

posted @ 2017-07-13 22:23  小天儿  阅读(340)  评论(0)    收藏  举报