本文共 3263 字,大约阅读时间需要 10 分钟。
前言:
很多人都说——程序一门艺术,对于这个说法,以前我是很难理解的,程序就是一个工具,一门学问,怎么会是一门艺术呢,后来工作越深入,考虑的东西越多,发现程序的确是一门艺术。什么是艺术呢?通过捕捉与挖掘、感受与分析、整合与运用,通过感受得到的形式展示出来的阶段性结果。程序不只是你写出来,运行起来就成功了,而是需要感受和分析、需要整合运用,需要最终变成成果。显然,程序是符合艺术的标准。 艺术的展现除了术,还需要道。程序的术是大家都能得到的共识,各种各样提升自己技术的文章到处都是,这里我们说说程序的道,也就是方法。这也是大家经常忽略或者不重视的地方。
作为一名艺术工作者(哈哈,自己也笑了。),工作中的确有太多需要注意的地方,特别是工作方法,这个东西在开发中一般是很少有人来培训自己,或者花时间来教自己,这个需要自己去学习、总结。我自己越到后面越总是这方面的学习,这里我也来说说自己工作中自己爬过的坑以及身边的同伴趟过的路。
异常处理是我们开发过程中必须要面临的问题,但是经常会有一些异常处理的方式,被错误的使用了:
try{ } catch (Exception ex){ return null;}
如果测试不出这样的问题,在生产环境绝对懵B,没有错误提示、没有写入日志,根本无法找到任何错误信息,这个看起来很低级的错误,在身边的确是有人这么处理的,我见过好多了。
测试和开发环境有错误一定要将详细的错误抛出来。 生产环境有错误也要适当的给与提示,告知错误,并且日志记录详细的错误。现代编译器产生错误是无法编译通过的,但是警告默认是可以忽略的。如果条件允许,大家最好把警告全部处理掉,不处理就是在给自己埋坑,很有可能在后面会爆发。
我经历过一个的一个事件就是.net调用redis的一次事故,使用的是官方推荐的驱动类库为Service.Stack.Redis,但是使用的时候忽略警告信息,导致后期版本兼容性的问题在生产环境爆发,幸好已经有其他人躺过坑,所以问题立马就处理掉了。条件允许,请解决所有的警告,如果条件有限,经常查看警告信息,重视新出现的警告信息。很多人都经历过接手别人的代码,而且程序员最害怕的就是阅读别人的代码。不管是别人的代码还是自己的代码,都要习惯性去重构,代码这门艺术不是一蹴而就的,是需要慢慢雕琢出来的。如果在开发过程中,不管是自己的代码还是别人的代码,发现问题,一定要去解决这些脏东西。代码是积累的过程,不合适的代码应该在初期就优化掉,如果越积越多,到最后只有可能是“没时间优化”和“不敢优化”。
在重构的过程中,总是会有很多理由让自己放弃这一操作,最多的两个理由就是:“没时间”和“风险太大”,持续衍生下下去,最后唯一的结果就是系统重新开发。这就是很多公司业务只是停滞不前或者稳步提升的,但是系统使用不到2年就要重做的原因。工作是永远做不完的,但是项目必须定义deadline,即使在没有明确考核的情况下,自己也需要给自己定义deadline,一个项目耗的太久,会让项目的弱势越来越严重,会让成本越来越高,会让开发人员的编码效率低下,所有的开发任务一定要定义deadline。
定义deadline还有一个好处,就是能有成果展现,这个对于企业来说,是非常重要的。技术、知识、能力一定要变现成成果,即使是做技术研究,也需要有成果的展示,而不能一直处理进行中的状态,这种意识是非常重要的。一定要写测试用例。测试用例绝对不会浪费你的时间,测试用例觉得不会拖慢项目的进度,而且能加快项目的进度,进度不是开发完了,就完成,你要协助测试,保证项目上线。项目的进度才是真正的进度。测试用例实施起来困难的地方就是无法坚持下来。即使,自己对自己写出来的代码负责,即使公司没有要求,自己也要习惯写测试用例。大家可以看看那些好的开源代码,都是会有自己编写的测试用例的。
现在的开发方式基本都是前后端分离,不管是web还是app,都是通过api进行数据对接,对于测试用例也更加容易测试,所有的接口都需要有对应的测试用例,如果不愿意写代码,测试工具也是有可以替代代码编程的。对于开发人员,其实写代码测试可能体验会更好,速度更加快,测试工具更多的是面向测试工程师。
自动化测试是必要的
随着时间的推移,系统的功能越来越多,功能越多其实意味着风险越大,出问题的可能性越来越大。随着系统的变大,人工覆盖的范围有限,自动化测试是必须要做的。自动化测试应该提前规划
初期,通过人工基本可以覆盖所有的测试,但是后期功能越来越多,不仅要测试新功能,每个功能的开发都要进行全系统的回归测试。前文提到测试用例,这个是自动化测试的基础。有了强大的测试用例的积累,自动化测试的搭建就会更加容易。测试用例不是等到有时间,或者系统变大以后才做的,而是应该一开始就准备,不要等到系统变得非常庞大臃肿的时候才开始做,那时候你还需要重新会想当初的业务场景,得不偿失。现在的开发方式都倾向于敏捷开发,敏捷开发的优势这里就不多说了,但是敏捷开发有一个特点就是高频率的发布,所以代码应该是需要随时都处于能被发布的状态,其实这并不是很难,只要合理的使用CVS工具即可。
作为公司代码的贡献者,不管你是总监、经理、架构还是程序员,不要认为自己的代码是别人不能修改,代码应该是共享的,只要在公司授权的范围内,我们应该是可以互相修改别人的模块。
在代码面前人人平等,谁写的代码都会有问题,有重构的空间,不能因为你的职位高或者经验足,就不让别人碰你的代码。
当然,有的人可能会改坏你的代码,但是这个可以通过沟通解决这个问题。有时,我们过多的关注了技术知识体系本身,却忽略了把自己的技术知识更好的运用到工作中,运用到自己的系统中,因为这些东西除了学习相关的技能,更多的是需要自己总结,随时趟过的坑越多,可能总结的东西越多,罗马不是一天建造的,系统也是不是一次就完美的,我们自己的知识体系也需要时间去积累。
转载地址:http://mytrl.baihongyu.com/