逝水流年

This is a blog to record my life, my work, my feeling …

编程新手编写代码注意事项

1、new对象后,要马上判断是否创建成功。

2、delete对象前,一定要判断对象是否已经被释放。

3、写的每行代码都要遵循代码规范,不要因为是简单的测试代码就放松对自己的要求。

4、Do it right at first time.(第一次就把事情做好!)

5、if之后马上加上{},防止if之后不经意的加上;号。这样的错误找起来非常麻烦。

记得自己的第一份工作,再培训的时候Leader一再强调做任何事情都要

第一次就把事情做好,当时给我们举的例子好像是:两个人在规定的时间写代码,第一个由于时间比较紧就没按照规范写,而是怎么规范就怎么写;测试没问题后再根据规范修改代码;第二个人写的时候就遵照规范来写;结果当然是第二个人先完成,并且代码质量高,规范好;而第一个人就有没有改到的地方。

联想到最近带的一个新人,写代码就想上面的第一个人那样;出现的很多错误都是因为最简单的几个原因。看来看似最基本的东西,最重要。:)

晒晒我每日的工作

今天的工作:

1、现场调试软件,给甲方演示。                    8:30 ~ 16:00

2、修改项目中的BUG,提交测试。                 16:30 ~ 21:10

3、CMMI会议,检查CMMI文档及问题。          未完成

4、现场问题反馈处理。                                 未完成

5、新需求分析。                                          未完成

6、部门事物处理。如:定制任务安排、工作总结阅读、任务检查…        完成

7、中心培训计划及统计。                              未完成

8、其他协调工作。                                       未完成

CMMI之培训-PDCA(戴明环)

戴明环告诉我们,做任何项目或任务首先要做的事情就是计划;有了计划以后就要按照计划实施;在实施过程中检查是否按计划完成等;最后再改进学习,如此往复,才能持续不对的改进,使过程质量不断提高。

CMMI之培训-TQM思想简介

随着公司规模的逐步扩大,公司终于要从小作坊向正规军转变了;首先就是对软件开发的管理改进。刚毕业时进入的第一家公司(美资)就宣称自己过了cmm2级,那时自己还小小的嘲笑了一番,才2级就开始吹牛,呵呵。现在看来自己真是无知。

公司专门联系了一家北京的咨询公司,给我们几个骨干进行CMMI洗脑。呵呵,你别说听专业人士的讲解还真是不一样啊!以前很多的做法得到了根据,又学会了好多实用的方法及流程。心里小小的欢喜了一把。学习的很带劲呢。

CMMI的起源思想是TQM思想,TQM的思想是关注客户获得价值的全部过程,每一个过程都做到满足客户需要,从而达到客户满意(而不是产品满意)。这就需要:客户的全面满意->;组织给客户创造价值的所有过程高质量->;实现所有过程的人员都必须关注质量。

TQM强调建立以过程为核心的组织文化;以为客户创造价值为核心,识别组织内部的所有过程。

TQM强调过程的不断优化;跟强调预防而不是质量控制。

TQM的效用是对传统管理的变更而不是改进。

实践上发现,简单的将组织传统的管理习惯过程化,并不能起到作用。因为传统管理职能和体现建立在自身的效率和优化基础上,而不是以客户为核心的价值创造过程。

模板模式(Template Pattern)

模板(Template)模式:

父类将算法封装,子类提供算法的一个或全部的实现。

解决的问题:

对于某一业务逻辑(算法实现)在不同的对象中有不同的细节实现,但是逻辑(算法)的框架(或通用的应用算法),模板模式提供了这种情况的一种实现框架。

Template模式获得一种反向控制结构效果,这也是面向对象系统分析和设计中一个原则:DIP(依赖倒置:Dependency Inversion Principles).

其含义就是父类调用子类的操作(高层模块调用底层模块的操作),底层模块实现高层模块声明的接口。这样控制权在父类(高层模块),底层模块反而要依赖高层模块。

参考:《设计模块精解》

VCL消息宏使用注意事项

ATL定义”MESSAGE_HANDLER”宏与VCL中的宏相冲突。

VCL中的宏被重命名为”VCL_MESSAGE_HANDLER”,如果没有使用ATL,则”MESSAGE_HANDLER”被定义在BCB的旧版本中。

1
2
3
4
5
#if !defined(USING_ATL)
        && !defined(USING_ATLVCL)
        && !defined(INC_ATL_HEADERS)
    #define MESSAGE_HANDLER VCL_MESSAGE_HANDLER
#endif

所以在写消息处理时,要写”VCL_MESSAGE_HANDLER”而不要写”MESSAGE_HANDLER”,否则如果使用到了ATL的话就会有问题。