读《程序员修炼之道》有感
最近一段时间,自己在项目开发过程中出现了很多问题,于是根据同事的推荐读了这本书。读完后,自己最大的感受就是:在项目开发中,一定要规范自己的行为。
一个完整的开发流程应该有这样四步:分析→设计→编码→测试。我们不应该之把关注点放到编码这一步,而忽略了其他步骤。在接到开发任务时,应该先对需求要有一个分析,再写代码前,要对代码逻辑有个大致的归纳和总结。不要拿到需求就开始写代码,写着写着发现有问题,要么是遇到一个难点解决不了,要么是发现要返回修改以前写过的代码,要么是发现有大量的重复代码,又不能再次封装只能将错就错。
1、分析
分析需求的时候。要做需求陈述处理。在这一过程中要明确“干什么”和“怎么做”。 如果在项目中,已经发现所陈述的“需求”实际上只是对用技术可以完成哪些工作的猜测,只是伪装成了需求文档,如果这时你能证明有方法会使项目更接近目标,这时就应大胆提出改变需求的建议。在对需求分析工程,也要对完成需求所需时间做一个大致的估算。
2、设计
在设计这一步,要确定数据库的表结构、表中要有哪些字段,API接口,以及前端页面等。不要等到实现功能的时候,再去补充,这样往往会加大工作量。
3、编码
在编码阶段,要做好防卫式编程,不要认为前端传过来的值都是合法的,该有的校验一定要有,减少系统出错的可能性,该有的日志也要加上去,以便出现错误能够很快定位到,不能说是程序报错了,自己还一头雾水,脑海中第一个反应是“这个错误不应该……”然后又去盲目的翻代码。对于程序中调用的资源,在调用完之后,一定要释放,做到有始有终。在写代码过程中,不要一头扎进代码中,如果某个功能模块的代码自己都感觉写的绕,这时候要及时将自己的从中解放出来,对代码做以分析,试着换种思路,想想还有没有其他优化的方法,也可以向同事询问,征求他们的意见。
4、测试
测试的目的是为了减少程序的bug,自己写的程序一定要自己测试好,确定没有问题再交付给其他同事。不要认为自己写的代码没有问题,慢慢养成了写代码不测试的习惯。更不要抱着“反正都要调接口,顺便也做一下测试”这样的想法,这样会影响团队之间的协作,在团队其他成员那里的印象也不好。如果前端有bug提交过来, 在找问题上不要偷懒,先问一下同事是怎么操作出现的问题,自己也按照他的步骤把问题重新显现一次,知道是在什么情况下、在运行什么程序时出的问题,从而找出导致程序报错的信息、错误码以及报错的行数,之后再解决bug 。有时候报错信息很模糊,实在找不到出错点,可以先根据代码逻辑列出问题可能的原因,打断点一步一步排除。如果自己已经花费了超过30分钟的时间仍然还没有解决bug,这时应该及时寻求帮助,在询问别人的时候的不要只拿表面的问题现象询问,也不要问搜索引擎能够搜到的问题。应该要指明的你要实现什么功能,报错信息,哪段代码功能出现错误,用这些详细信息询问别人,方便对方对你的错误能有个准确的定位。在说之前先将自己要说的话先在脑海中组织一遍,确保对方能够完全明白你的意思。解决问题后,一定要做好笔记,可以总结一下写在自己的csdn博客中。在改完之后一定要再次测试,测试没问题,在想想自己写过的代码中有没有跟当前代码相似的处理逻辑,如果有的话,也要对那段代码梳理和测试。
在以后的开发中,自己应该要做到以下七点:
1.追求代码质量,追求扎实基础学习
在代码层面,可读性更高,逻辑结构更清晰,效率更优化。在提升自身业务开发能力的同时,也要全面拓展能力,一方面学习更多的编程语言,另一方面学习底层和基础,增强数据结构和算法功底。不管什么时候都要抱有不断地学习的心态,在学习的过程中不要觉得和以前知道的东西差不多,要和以前知道的东西做比较。不要觉得没有足够的时间去学习,如果实在没时间学习,可以先了解,等到需要用时再仔细学习。
2.克服“懒惰”
人是一个矛盾的综合体。一方面,是希望通过自己勤奋地学习和练习所学到更多的技能。但是另一方面,又会经常有“懒惰”的想法,想着该做的事如何少做,少做的事如何不做。自己应该变得勤快起来,不断的去学习。
3.具备产品思维,用户体验不仅是产品经理的事
产品经理设计好产品,但是毕竟是在脑海中模拟,然后在原型中实现。真正的用户体验还没有到用户操作的层级,所以难免会有一些考虑不足之处。一般的工程师,按照产品的设计实现了就完了,并不在乎整个过程的好用与协调,更不用说注意细节了。在开发过程中,如果觉得某个需求有短板,或自己有着更好的想法,应该及时提出来。
4.工程质量不能依赖测试人员,对自己代码负责
在程序界,有一句话是叫:“代码被狗吃了。”这一方面是说,程序员可能不慎将版本代码删除;另一方面是说,程序员不敢于面对自己的错误。另外一个现象就是,程序员写完代码,不进行基本测试就提交了,甚至发布上线。而优的
工程师则在代码.上线前先自行测试并一再确认, 上线后更是认真确认运行日志和结果数据。无论是前端影响到用户的项目,还是后台跑数据的项目都是如此。
5.工作不仅要完成领导交代的任务,更要完成团队与自我提升
优秀工程师,不会整天做着简单重复和没有创造性的工作,会想方设法让
简单的工作变得更有意义。在简单的工作中,每天都有进步,此进步对自提升
有价值,对整个团队也有价值。
6.要做好每一天的规划
每天先规划出一天要做的工作,然后根据任务的实际情况给直接设置一个相应的时间段,去完成这个任务。
7.避免带着浮躁的情绪工作
浮躁这个情绪最大的还是和本身自己的性格有关系,现实中性格慢的人人遇事并不会太浮躁,因为他内心对这件事并不着急,如果有人催了,他才会表现出些许的浮躁,但是又能很快的消散,但是有些人性格特别急,一件小事本身没有多难处理,但是性格急的人就会从内心表现出过多的浮躁,从而影响这个人本身的判断能力。如果在工作中,自己一直想着如何赶紧把要做的是马上做完,做着手头的事,心里就开始盘算着下件事,这时候你就已经带着浮躁的情绪在工作,在这种情况下,人的注意力很难集中,也最容易出现失误的。所以,当自己有点浮躁的情绪后,应该从当前的任务中抽出身来,去做一些让自己放松的事,比如,看一下今天的新闻,和别人聊会天。