最近做了个小项目,然而却又遭遇了半年前项目开发的噩梦--无休止的琐碎的修改。不止一次大声呼喊“准确的需求分析”,然而客户总爱打理不理,出了问题更是动懂嘴唇-"改"。
系统分层:
|
Model
|
实体
|
|
Dal
|
数据层
|
|
Page(View,Edit,List,Add)
|
页面
|
页面分析
|
View
|
查看(BindData,Control.Enable=False)
|
|
Edit
|
编辑(BindData,UpdateData)
|
|
List
|
列表(BindData,JS=View,edit.position)
|
|
Add
|
添加(AddData)
|
Dal:
|
Add
|
SqlHelper(数据参数)
|
|
Update
|
SqlHelper(数据参数)
|
|
Get
|
SqlHelper(数据参数)
|
修改复杂度:
|
1
|
添加,改名或者删除并且不影响其他地方
|
|
2
|
添加,改名或者删除,需要修改数据类型,并且不影响其他地方 一个地方
|
|
3
|
其他地方 多个地方
|
主要的问题是:
|
修改情况
|
需要修改地方
|
总数
|
复杂度
|
|
增加数据库表中字段的时候
|
Model,
DAL,
View,
Edit,
List,
SQL
|
6
|
1
2
3=======15
3
3
3
|
|
修改数据库表字段名称
|
Model,
Dal,
View,
Edit,
List,
SQL
|
6
|
1
1
1
1======9
1
3
|
|
修改数据表数据类型
|
Model,
Dal,
View,
Edit,
List,
SQL
|
6
|
2
2
2
2========13
2
3
|
|
删除数据表
|
Model,
Dal,
View,
Edit,
List,
SQL
|
6
|
1
1
1
1========8
1
3
|
|
修改查询方法
|
Sql
Dal
List
|
3
|
3
2=========8
3
|
|
调整页面显示
|
Edit
View
|
2
|
3
3====6
|
|
调整List页面
|
List
|
1
|
3
|
现实就是没有完整的准确需求分析。所以要求也是迅速修改。开发的时候你可以用代码生成器,但维护的时候,只剩下感叹的份。
现在我的目标是:在分层的情况下,尽量减少代码的修改量,尤其是页面那块,出错率很高。
解决方案:
- 整体的数据传输为List<model>来实现编译时强类型的验证
- 后台数据层采用ORM(.net 2.0)或者LinqToSql(.net 3.5),当然如果用ORM修改的地方又多了XML+SQL.但少了SQL+DAL,平衡下感觉ORM改的更少些。
- 页面部分准备用DEVPRESS控件,这个可以极大的减少我的代码量,并且可以实现更复杂的功能,尤其是有个配置页面显示的功能比较适合。
- 还有个比较头疼的是,页面部分的添加和修改,都需要实体的赋值那块,应该和成一个。