项目总结(一):健康体检系统之 发现问题

来源:互联网 发布:代理软件打不开网页 编辑:程序博客网 时间:2024/04/26 05:45

(合作开发,我做U层)

编码:

1.     返回值:

a.     返回为DataSet时,应该对DataSet包含的表有说明,否则我要么自己到B层去看它的含义,要么运行程序看结果才能知道。

b.     返回为datatable,应该对该表字段有说明,否则我不知道通过什么字段名称来读取内容显示到页面。

c.      小结:换位思考很重要。向别人返回给自己的结果时,应该想想别人如何用?能不能用?能否用好?

 

2.需要统一

1.     字段别名。从数据库表中查到的结果字段别名不统一,有的用别名(中文),有的不用(英文),给我带来很大烦恼。比如U层OrderManger页一段代码既处理SinglePatient表(没用别名),也处理TeamPatient表(用别名),而他们的字段名称不一致,导致一会错一会对。

2.     U层提示信息方式:是直接捕获B层抛出的的异常(即使是正确的提示),还是根据返回值自己做出判断,正确时给出提示,错误时显示异常。

c.      小结:出现这个问题,重要的不是用那种方式更好,而在于没有统一一致的规范,没有规范,没有标准,就不能称之为团队。字段别名问题在合作开发中就遇到了,而在这个项目中却忘记提醒了。自己虽然不是组长,却没有把自己放在组长的位置上,导致大家都受害。

 

3.感悟

a.     U层逻辑过多:遇到逻辑复杂些的U层,逻辑可能会过多的放在B层,这个平衡点难把握,需要再三考虑对应的用例和类图中的方法(功能和参数)。比如在选择体检项目完成时,需要区分出那些是科室,那些事套餐,这样的逻辑放在U层,会让页面变得体型庞大。

b.     数据库设计不合理:了解完需求,画出页面原型,就该设计数据库了,设计时尽量遵守三范式,设计完成后觉得蛮不错,但事实并非如此,在画UML图D层、B层期间,我们还在修改数据库。数据库是编码的基础,它要是设计不好,会造成系统推到重来、难于扩充功能、难于维护等等。所以,在需求和数据库设计期间,要反复的思考,多花些时间是必要的。

 

维护:

1.     动态实现,可维护性好。数据库表中主键名称不能轻易更改,比如实现过滤科室时,只是让加载的科室不为“总检”,目前的需求是如此,一旦需求发生变化,就得需要修改源码,重新部署。科室ID,写死在代码中了,应该在后台添加相应功能。

 // 创建表结构,记录必选科室                CreateDT();                for (int i = 0; i < dtSections.Rows.Count; i++)                {                    sectionName = dtSections.Rows[i]["科室名称"].ToString().Trim();                    sectionID = dtSections.Rows[i]["SectionID"].ToString().Trim();                    sectionPrice = dtSections.Rows[i]["价格"].ToString().Trim();                    // 如果遍历到的科室时前台和总检,就过滤掉。(写死了,应该在后台添加需要“设置不必检查的科室”)                    if ( sectionID != "QT" &&  sectionID != "ZJ")                    {                        lbSections.Items.Add(sectionName);                        lbSections.Items[index ].Value = sectionID;                        index++;                    }                   // 内科、外科、一般检查、检查科加到已选科室表中,这些是必选科室(写死了,应该在后台添加需要“设置必须科室”)                    if (sectionID == "NK" || sectionID == "WK" || sectionID == "YBJC" || sectionID == "JYK")                    {                                                DataRow newRow = dtDetails.NewRow();                        newRow.ItemArray = new string[] { dtDetails.Rows.Count.ToString(),sectionID,sectionName, sectionPrice };                        dtDetails.Rows.Add(newRow);                    }                }

2.     管理预约页面,需要单击两次查询按钮才能执行click代码,而在其他单击按钮事件中,没有这个问题,这个问题很奇怪,没有解决掉。


管理:

1.     统一安排时间:

a.     兼作学习。之前听英语、写博客算是有规律,但上五楼做项目之后,学习不再有规律,英语、博客被耽误,其实可以统一规定时间做项目,听英语、写博客、录制视频等,且兼作的学习效率也高。

b.     计划和总结项目:每天小组内应该开会,说说各自做的事情,让组内成员能够知道系统各个模块的进度,小结今天的成果;总结后,对明天做出计划,同时调整项目预计完成计划,让组员知道明天要干嘛,而我们却是到了第二天看看有啥没做的,才开始去做。无疑这也是一个时间管理的应用,管理自己和管理团体同出一辙。

 

2.     需要全局观

a.     多线程执行。准备发布,而某层发现了新问题,在修改这层期间,其他人或者在玩或者干别的,等待这层完成。其实这期间可以干别的,好多问题都还未解决,这时组长的全局观和组员的积极主动性尤为重要。

3.     交流很重要

a.     一个人的力量是有限的,集体的力量是无限的。做项目已经不是一个人逞能的时代,因为合作开发具有1+1>2的效果,这便是集体的力量。

b.     善于交流,可以使组员积极配合,事半功倍,发挥集体的力量。