天天看点

做一个好的程序员

前两天买了程序员修炼之道, 是作为近十年最有影响的十本计算机书买的。 拿起来一看, 却再也放不下去, 周末两天看完后, 舒了一口气, 果然是一本对程序员大有影响之书。

     看书之前,以为也就是如“代码大全”类似的软件工程方面的书,可能会讲程序员在开发项目中,应当如何如何才能做好,也无非是方法论。 看后才知, 差别却是很大,此书的目的是不同的, 面向的是程序员, 而非其它。 书中各项内容都在讲, 作一个有实效的程序员,应当如何如何做事, 为什么要这样做事,  以及怎么才能用这些方法等。

    首先, 是一个注重实效的程序员的思想, 应当有些什么样的品质才能做一个好的程序员,有实效的程序员。 负责: 必须对一切自己做的事情负责, 才能继续作的更好。 干净: 永远保持代码的干净, 有效, 永远不能接受有坏味的代码, 这样才不会使软件腐败。 观察和思考: 经常留心自己的环境,思考如何做会更好。 知识: 经营自己的知识资产, 不停的投资知识, 才可以一直能赶上变化, 丰富自己。 交流: 和更多其他程序员一起交流,获得其他人的思想以及更多的东西。 我认为这都是一个有实效的程序员必备的思想, 如果没有这样的思想品质,永远做不了一个好的程序员。

    其次, 是一些可以有效地方法, 去除重复: 尽可能的去除一切重复。 正交性: 各模块的设计尽可能的正交。 可撤销性: 给系统留一些余地, 设计一直都会变化, 要有能力响应变化。曳光弹:  用更简单的内容, 实现给定的效果。 然后慢慢填充实际内容, 有点类似迭代开发。   原型: 用更简要的方法为项目做一个原型来评估项目。 领域语言: 在不同领域的项目上, 用领域语言来描述, 会更容易在各方面交流, 并不会过时。 最后用简单的解析器来转换这些内容。(编译原理的重要性, 体现出来了) 估算: 很好的估算时间.   这些东西都是一个有实效的程序员的锐利武器, 需要时间来获得。

    再次, 其本工具, 这章介绍的都是如何提高程序员效率的工具, 确实有效。 Shell: 掌握一门Shell, 可以有效地做各种繁琐的工作。比如查找, 拷贝,排序等等, 可以很方便的完成各种gui下很复杂的任务。 看完这章之后突然有很强的欲望学一下shell了,真的介绍了shell的重要性,想想以前做的事情。。。。 强力编辑: 掌握一种不需要点鼠标就可以随意修改的强力编辑, 要非常的掌握,并且可以跨平台。 emacs应当是最好的。 源码控制: cvs. 文本操纵: 学习一种文本操纵的语言, 例如python, perl. 代码生成器:根据数据源

, 生成不同语言下的代码的预处理。

    接下来介绍了用什么方法写更少bug的代码,条件约束,更严格检测, 断言,异常,资源分配与释放。

    耦合性问题, 如何减少各模块之间的耦合性。 将各类的职责缩小, 减少重复,元程序驱动(利用代码生成器,根据元数据生成代码)Observer模式,MVC模式, 黑板(信息集中的地方, 人们可以输入信息,查询信息, 共享信息)

    编码, 深思熟虑,明白任何代码的含义, 不依赖巧合性,警惕不明的代码生成器。 对算法的性能更敏感, 经常的重构,保持代码的有效。写单元测试的代码。

    最后的部分,都是在大型项目的环境中, 讲述如何处理需求,进行测试, 写文档, 并用更有效的方式管理项目等。

看完之后, 就知道自己需要掌握的东西还很多,简单罗列一下, lisp, schema, cygwin(shell) yacc, lex, 编译原理,lua, smalltalk, emacs, linux, make, 以上所列有些知道不少, 有些一窍不通,   不过都是我应该去学习的, 有时间之余,继续学习。当然还有很多知识不够以致不知道需要学习的东西, 慢慢啦。

继续阅读