Hanks.Wang - 专注于操作系统与移动安全研究,Linux/SELinux/SEAndroid/TrustZone/Encription/MDM Mail - byhankswang@gmail.com
爱上你的代码
作为程序员的你爱上你的代码了吗?为什么要爱上你的代码?你问过自己这样的问题吗?
程序员同学不管是使用C/C++/Jave/C#/Perl/Python语言还是R或者Go语言,你的代码就是你的智慧与高质量思考的产物,不管这个产物是一次性过程的产物还是反复性的工作结果,你的代码既是你的孩子又是你的女朋友。
信息技术行业的社会化分工非常精细,于是出现了售前售后技术支持工程师、需求分析工程、产品经理、项目经理、研发工程师、测试工程师、架构师、技术总监等等的岗位,不管是在技术路线上垂直发展还是从技术路线跳跃到管理路线,只要当下正在经历的阶段是和开发工作相关的,你没有理由不爱上你的代码。代码是你产品化过程中很重要的一部分,甚至可以说是主要部分。如果你不爱你的代码,你的客户又怎么会爱上你的产品呢?
代码的用户
什么是用户?我不记得是哪位大拿对用户的定义了,核心的理念是用户包括直接和间接使用你产品的人,你的代码会被什么样的人接触到,他们都是你的用户。即使你是开发工程师,你也是有用户的,所以程序员们要自豪一点,每天你都有很多用户,这写用户包括给你做测试的测试工程师,调用你逻辑接口的其他代码片段实现人员,帮助你维护代码的工程师们......你的代码功能性不可测试,你对不起你的测试人员;你的代码别人调用不够轻便,你对不起其他开发的兄弟们。所以写出高质量的代码是作为软件开发工程师的份内事情,而不是仅仅实现需求。
高质量的代码
好的代码要求运行效率高,层次结构优化,维护成本低;而坏的代码运行态资源占用率高,构架设计不合理,维护人员觉得晦涩难懂。有没有BUG或者BUG率已经不是一个高级的软件开发工程师应该头痛的问题了,较低错误率是门槛,如果这点还没有做到,说明基本功还没有打好,还需要继续努力。
写代码的时候注意代码的简洁与可重用性,起码自己看来是件艺术品,即使可能还有很多瑕疵 :) 这一点要求工程师对自己使用的语言要有相当的了解,如何优化自己的代码。开发语言只是我们开发项目的工具,很多人讨论是C好呢还是C++好呢,然后使用JAVE的人开始笑了 世界上每过一定的时间就会有新的开发语言横空出世,现在被使用的开发语言是比较经典的。当然在我眼里经典的开发语言没有优劣之分,只是各自适应的场景不一样罢了。C语言被很多人说是面向过程的语言,但是用C照样可以写出面向对象的项目,Linux
Kernel中协议栈和内存管理的C语言实现就是最好的证明。
提高自己的代码质量
答案是多看高质量的代码,去哪找高质量的代码呢?身边的同事的代码写的和我差不多,那就去看看Kernel或者GNU的代码吧,仔细的研究两年,写代码的能力会提高很多,磨刀不误砍柴工。另外多思考,自己没写一部分代码的时候,评估一下自己的代码,逻辑是不是很清晰,自己喜不喜欢,如果一时半火没有反应,那说明自己对自己的代码不满意。不管是自己的自负也好,还是不愿意否定自己的能力也好,好的结果是代码有改进的空间!
测试程序与代码质量的关系
很多时候我们都会写各种测试程序,一般情况下单元测试只能解决功能性问题,但是高质量的代码不能仅仅局限在功能性的层面上,性能如何?另外不能指望依赖测试程序来提高代码质量,代码质量的提高是在写代码的过程中完成的,而不是在测试之后.
代码重构的意义
代码是不是真的需要重构?答案基本是肯定的。项目进度在50%左右的时候是重构的好时机,在50%左右完成度的时候正好是对项目进行反省和避免严重错误的时候;代码完成度在100%之后,应该找适当的时候再次重构。写完代码就立即重构吗?答案是否定的,代码是短暂思维的反映,今天写的代码过两天再看就不能完整的回忆起当时是怎么思考的。所以一般情况下我更习惯于隔几天再重构代码。对于使用了几年的代码仍然有需要重构的可能性,几年之前的代码很有可能不再适用与当前的体系架构。
总之,要热爱自己的工作,热爱自己的代码。随着年龄的增长和工作经验的丰富,对问题抽象的能力不断的提高,程序员就不是青春饭了。