开发小结(转)

 

每次开发完一个功能后,总发现有很多可以改进的地方,但下次开发还是会犯同样的错误,这次决定记录一下可以改进的地方,以便下次不要在犯同样的错误。

1:排期估算错误,评估开发时间过于乐观。以为只是改改UI,加十几个动画,结果整个UI都被重写了,重写意味着要熟悉原来的需求,要读通原有代码的逻辑,虽然我对整体需求比较了解,但UI那块的代码之前尝试去读过,就是觉得晕(动画都是直接上原装定时器,没有任何包装,而且到处都是)。重写完后,除了保留了原有的框架外,其他的代码都被删除重写了。虽然按时完成了开发任务,但测试阶段BUG是一堆一堆的,当同事问我BUG为什么这么多的时候,我竟无言以对。现在看来重写的决定是对的,不然一堆不知道啥原因的BUG会让我疯掉。重写后,我知道了所有的需求及实现细节,代码也是我自己的了,出了问题,也好排查解决。

 

2理清思路才能解决问题。有两个偶现的BUG,就是怎么都解决不了,各种修改都不行,这个功能以前就是我自己实现的,现在只是改UI,加动画,最后实在没办法,只好重新理了一下思路,发现mouse_hover、mouse_leave、delete、add和动画搅在一起,代码也很混乱,在改下去,问题不一定能解决,而且感觉要失控的样子,在理清思路后,把这个功能又给重写了,结果两个BUG顺利的解决了。

 

3没想清楚的地方都变成了BUG。没错,哥的BUG就是多(请容许我先去哭一个小时)。在开发的时候,经常是想了一个大概,感觉可行,就开始写代码,写完后,编译运行,得到了想要的结果,感觉没什么问题,就开始开发下一个功能(开发任务重啊,必须得速度),然后这个功能就这样提测了,然后测试就给你提了几个BUG,然后你的BUG数量很提神。虽然我们很难把任何事情都考虑得很清楚,但是你明知道可能有疑问的地方就一定要想清楚,不要存侥幸心理,因为不翔的预感告诉我们,虽然这一会儿拉不出翔,但一定是会拉出来滴,到时候你就等着吃吧。

 

4四面楚歌的时候,谁离我最近我就干掉谁,谁最容易干掉就最先干掉谁。BUG还有20多个,我正焦头烂额的改BUG,测试发来消息说这个是不是BUG,要我解释一下;我正跟测试解释的时候,产品经理经理过来说要改一个“小需求”;设计过来说要改UI细节;客服发来消息,这个遗留BUG什么时候解,已经有很多用户反馈了这个问题。我的血压感觉一下子就上去了,你们别拦着我,我要去吃药,医生说:药、不、能、停。虽然有点夸张,但有时候真的是被搞得焦头烂额。兵来将挡水来土掩,问题还是得解决,谁叫咋是程序员呢。只好给这些任务分一个优先级,容易解决的就马上解决了,紧急的问题先解决,留着只会让问题看起来越来越多,加大自己的压力,问题多也容易遗漏,不能马上解决的,一定要做好记录,因为这些翔都是属于你的,你要把他吃干净。

 

5求助是解决问题最快的方法。求助总让人觉得有点那啥,一般都是不到万不得已,不会向别人求助的,但有时自己钻进牛角尖,在向别人求助时,描述问题的时候,其实也是一个理清思路的过程,说不定说着说着,就灵光乍现,找到问题的解决方案了。还有就是有些方面的确是别人更熟悉一些,需要掌握一些知识点,你不知道就解决不了,知道就分分钟解决问题,这个时候就应该虚心向别人请教,不要不好意思向别人求助,但不要养成习惯。

 

6储备好知识在出发。百度卫士5.0这个版本界面很炫,加了很多动画,我自己就要实现十几个动画,问题是我之前没有玩过动画啊,我根本就不知道实现一个动画要多长时间,对自己能不能实现也没底,排期都是有经验的同事给我排的。在开发之前,我先看了一个类似动画的例子,感觉还行,但是我这十几个动画,各式各样,很多都没例子可抄。于是花了大约1天的时间,来看皮肤引擎动画相关的源码,源码之内了无秘密,看了源码之后,发现写动画还是很简单的,其实就是通过定时器隔一段时间设置一下控件的属性。1秒钟24帧人眼看到的就是动画的效果了。当我明白动画的实现原理后,在写起动画来就得心应手了。

 

7给你的代码加上日志。有时候忘了给代码加日志,出了问题不知道怎么排查,就很后悔自己当时没有加日志,有些问题看日志就很好解决,没日志就没有头绪,感觉没有问题啊,但问题就是活生生的摆在你眼前,让你因为没有加日志而后悔莫及。

 

8不要总是去猜,要去论证。这条主要是针对我自己,因为我已经猜出了习惯,猜出了风格。总是靠猜去解决问题也不是办法。虽然很多时候都被我猜对了,但猜错了的问题怎么解?有些偶现的BUG,你以为是XX原因,然后做了修改,以为解决,其实并没有解决。遇到问题还是得去定位去分析解决。

 

9写结构清晰易懂的代码。这点虽然难做到,但必须追求。你是否曾经有这样的感受:昨天写的代码,今天来看就完全不认识了,还以为不是自己写的代码,不然自己写的东西自己怎么会看不懂?这种现象可能是写的时候灵光乍现,写出了神级代码,一般人看不懂,今天作为一般人还真就看不懂了,所以在写出神级代码的时候,一定要加注释说明神级代码是怎么来的。还有一种情况就是代码被写成狗屎了,真是看不懂,大多数情况可能就是这样,自己的翔从来都是自己吃的,为了让自己少吃点翔,将代码写好一点。清晰的思路和结构清晰的代码都让人舒服,会有被电到的感觉,混乱的思路和结构混乱的代码总让人觉得不适,有种恶心的感觉。

 

10速度还是效率。《唐伯虎点秋香》里有一段对白,大概是这样:给我追华府的官船|公子,你真有眼光,我可是出了名的快|大哥你的船在下沉啊|沉也沉得快吗。开发排期总是很紧,于是我们的开发速度都很快,然后就产生了很多BUG,然后又花和开发差不多一样的时间来修BUG,如果我们在开发的时候能够把代码写好点,多用点时间一次就把事情做好,效果会不会好一点。我不知道,但是对自己能力的提高肯定大于前者,一次将事情做好,本就是一种很强的能力,而且我觉得这种能力是可以训练的,当你以这种方式去开发的时候,就是一直在训练这种能力。在高考的时候,我旁边就坐着全年级第一的家伙,在考数学的时候,从第一题做到最后一题,都没有将试卷翻过来,除了最后一题没做完,其他的都全对。在要交卷的时候,终于将试卷翻过来了,哥一眼看到最后两个选择题的答案和哥的不一样,哥硬是没有改自己的答案,最后活生生的将自己考成了一个专科生,至今还为自己当时的决定感动不已。

http://www.cnblogs.com/hlxs/p/4531439.html

 

时间: 2024-09-13 16:53:23

开发小结(转)的相关文章

最近分布式系统开发小结: Slave模块Executors设计

更新一段我在linkedin上对这个项目的描述,目前项目已经开发完在使用了.本文并不是最新的设计. 背景解决HDFS/Hive/RDBMS/FTP/MongoDB等数据源之间的批量数据同步问题 特性跨机房场景下的链路优化:多路输入和输出的任务模型:数据容错和可持久化:任务失败恢复 任务调度把任务配置解析为物理执行计划,Master控制任务的调度和失败恢复,基于Mesos完成资源分配和任务调度.Slave分布在各个数据中心,具体传输任务的调起做到链路优化选择.高并发场景下,增加Mesos Slav

android智能手机项目开发小结

 android智能手机开发项目小结        从上周六到截至今天下班时,历时一个星期,把一个客户的新项目的板子bring up起来,目前的状态是这个双卡双待的手机能正常运行,LCD色彩.声音.GSM call.sensor.camera.touchkey.keypad.backlight.fm.headphone等都正常工作,可以送QA作进一步的测试,还是有一些需要继续优化的地方.下周跟QA同志们,hardware同志们一起努力,争取客户样机早一点量产.下面就遇到的问题做一个小结吧!  

Chrome Web App开发小结_php实例

前言 这篇文章主要分享下自己在开发Web App遇到的问题和过程,以及一些很已经(如何)填平的坑.如果您想要"如何开发Web App"或<30分钟学会开发Web App>,请移步官方的开发手册(文档).(下有链接). 背景 感觉现在大家都在争论(讨论)两件事情,Web App和Native App.前不久参加的HTML5守望者活动,各方大佬都在针对这二者之间的优劣,差异,兼容,普及等进行探讨.当然,有争议的才说明有价值嘛. Chrome Web App 前不久Chrome又

suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)_javascript技巧

重要的键盘事件: 事件顺序:keydown -> keypress ->keyup 对于输入法开启时: keypress: 这三个事件中最最特别的事件的说,如果巧妙运用可以事半功倍: 1. 首先对于大部分功能键是没有keypress事件的 Caps lock ,shift,alt,ctrl,num lock...庆幸的是enter拥有此事件 2. 对于字母,数字,press返回的keyCode是不可靠的 在IE和webkit 下 返回的是ASCII code firfox下永远返回0 但是 对

ocx开发小结 .

一. 关于ActiveX     ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼其中主要的技术是组件对象模型COM.在创建包括ActiveX程序时主要的工作就是组件一个可以自足的在ActiveX网络中任意运行的程序.这个组件就是ActiveX近控件.ActiveX是Microsoft为抗衡SunMicrosystems的JAVA技术而提出的此控件的功能和JAVAapplet功能类似.   二.   ActiveX的开发环境 基于ffmpeg的ocx开发使用了vis

Android 系统应用Setting开发小结

最近由于工作关系需要对系统应用Setting进行二次开发,选择的工具是eclipse,所以也可以看得出来,不是在源码的环境下开发的.第一步自然是把Setting源码导入到eclipse,这样的话问题就出现了,会有很多错误.原因就是Setting属于系统应用,而且它用到了很多系统级的api,这些api是隐藏的.不对外开放的(相对于一般应用来说).那如果想要使程序运行起来,就必须手动导入相应的jar包,  这些jar包是系统编译完成后生成的,而且jar包的顺序也要对应好,先后有序,类似这样就可以.而

最近分布式系统开发小结

用最简单的语言梳理一下最近十天做的分布式系统模块的开发.这是一个还在开发中的项目,配图也是设计原图.希望能更多地从开源项目里汲取营养,一边实战,一边积累. 系统概述 最近在设计和开发一个分布式系统的流式处理模块,整个系统用于跨集群.跨机房搬运不同数据源内的数据到另一份或多份数据源上,包括HDFS.MySQl.MongoDB.FTP等.功能比较像Hadoop的Sqoop,但是能扩展支持更多的数据源,且本身是个集群部署,不像Sqoop需要依赖Hadoop的MR. 我们整个cluster的资源管理借助

JSP学习之数据库开发小结_JSP编程

本文总结了JSP学习之数据库开发方法.分享给大家供大家参考.具体如下: SQL语言的组成: 1>数据定义语言DDL 用于定义SQL模式,数据表,视图和索引等数据库对象 2>数据操纵语言DML 数据查询和数据更新语言 3>数据控制语言DCL 设定或更改数据库用户或角色 4>嵌入式SQL语言 SQL语句嵌入到宿主语言中 数据类型: 1>数字类型 INTEGER SMALLINT REAL NUMERIC DECIMAL FLOAT DOUBLE... 2>日期和时间类型 T

一个增删改查功能开发小结

这个功能在功能上终于做完了回想这个功能感慨万千大致梳理下慢的原因,算是找借口,可以加班啊 (1)需求不明确,就知道做从此增删改,但增删改时,都不是对单一表进行处理,但具体细节却不清楚,需要看旧代码(2)虽是增删改的功能,但需要使用其它集成接口,这些知识点需要与其它团队了解,也需要时间. 说到加班,纠结感又上来了做这个功能感觉找不到节奏,一个任务是不分上班下班一口气做完,如果其它团队的接口的不熟悉,应该怎么搞,不会因为要做当前的任务,就把对方相关逻辑代码都看一遍吧,一是没有时间,而是人的精力是有限