高质量程序好文分享之王垠《编程的智慧》

今天有幸读到了王垠博文《编程的智慧》,突然有一种知音得遇、相见恨晚之感。文中诸多观点自己非常赞同,这些观点的形成绝非易事,需要经过大量的实践编程,反思总结和得到大牛的指点云云。
编程中与我契合之极的一个词:优雅。是的,能够写出优雅的程序是我一直所追求的,什么性能、高质量编程完全可以用优雅二字概括,甚至可以从这二字中看出一个程序员的从容自信的性格。
这里将分享文中一些观点:
王垠《编程的智慧》原文地址:http://kb.cnblogs.com/page/549080/

  1. 编程是一种创造性的工作,是一门艺术。
  2. 反复推敲代码是提高编程水平最有效的办法。
  3. 衡量编程水平的标准不是代码行数,而是看他们删掉多少代码。
  4. 反复提炼代码已经不再有进展,那么你可以暂时把它放下。过几个星期或者几个月再回头来看,也许就有焕然一新的灵感
  5. 你积累起了灵感和智慧,能够在遇到新问题的时候直接朝正确,或者接近正确的方向前进。
  6. 优雅的代码在形状上有一些明显的特征,它的逻辑大体上看起来,是枝丫分明的树状结构(tree)。
  7. 代码真正的模块化,并不是文本意义上的,而是逻辑意义上的。例如函数。
  8. 避免写太长的函数,通常长度都不超过 40 行。
  9. 制造小的工具函数以简化主要函数里面的逻辑。
  10. 使用宏(macro)来代替小函数,这也是一种过时的观念。
  11. 每个函数只做一件简单的事情。
  12. 避免使用全局变量和类成员(class member)来传递信息,尽量使用局部变量和参数。
  13. 真正优雅可读的代码,是几乎不需要注释的。
  14. 充分利用了程序语言的表达能力,你完全可以用程序本身来表达它到底在干什么,而不需要自然语言的辅助。
  15. 使用有意义的函数和变量名字。
  16. 局部变量应该尽量接近使用它的地方。
  17. 局部变量名字应该简短。
  18. 不要重用局部变量。
  19. 把复杂的逻辑提取出去,做成“帮助函数”。
  20. 把复杂的表达式提取出去,做成中间变量。
  21. 在合理的地方换行。
  22. 写简单的代码。
  23. 永远不要省略花括号。
  24. 合理使用括号,不要盲目依赖操作符优先级。
  25. 避免使用 continue 和 break。
  26. 如果有更加直接,更加清晰的写法,就选择它,即使它看起来更长,更笨,也一样选择它。
  27. 写无懈可击的代码。
  28. 使代码可靠的一种通用思想:穷举所有的情况,不漏掉任何一个。
  29. 代码漏掉任何一种可能出现的情况,都可能产生意想不到的灾难性结果。
  30. try { … } catch 里面,应该包含尽量少的代码。
  31. Java 程序员有一种恶习没有catch具体的异常而是catch (Exception e)。
  32. 尽量不要产生 null 指针。
  33. 不要把 null 放进“容器数据结构”里面。
  34. 函数调用者:明确理解 null 所表示的意义,尽早检查和处理 null 返回值,减少它的传播。
  35. 函数作者:明确声明不接受 null 参数,当参数是 null 时立即崩溃。
  36. 使用@NotNull和@Nullable标记。
  37. 防止过度工程,过度的思考一些还没有发生的事情,还没有出现的需求。
  38. 在现实的工程中,有时候你就是得看近一点,把手头的问题先搞定了,再谈以后扩展的问题。
  39. 世界上有两种“没有 bug”的代码。一种是“没有明显的 bug 的代码”,另一种是“明显没有 bug 的代码”。

最后作者给三条建议:
a. 先把眼前的问题解决掉,解决好,再考虑将来的扩展问题。
b. 先写出可用的代码,反复推敲,再考虑是否需要重用的问题。
c. 先写出可用,简单,明显没有 bug 的代码,再考虑测试的问题。

这些编程细节真的应该学以致用,有了这些概念之后,需要进行大量的编码实践,从而可以写高质量程序,于是博主将进行编码实践。。。

你可能感兴趣的:(工作杂谈)