社区
数据库相关
帖子详情
討論:如何写出易维护和易扩展的程序?
snowflying928
2009-08-26 08:49:14
欢迎大家讨论。
我感觉Delphi快速开发,在事件中写代码,很容易诱导我们写出,不易维护的代码!
大家都是如何改善的呢?
...全文
318
33
打赏
收藏
討論:如何写出易维护和易扩展的程序?
欢迎大家讨论。 我感觉Delphi快速开发,在事件中写代码,很容易诱导我们写出,不易维护的代码! 大家都是如何改善的呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
snowflying928
2009-08-27
打赏
举报
回复
[Quote=引用 32 楼 shuihan20e 的回复:]
菜鸟关注
[/Quote]
老大你就別嚇唬我們了 呵
shuihan20e
2009-08-27
打赏
举报
回复
菜鸟关注
wzwcn
2009-08-27
打赏
举报
回复
我以前写了一个bpl的框架,可以把所有业务等抽象成接口,实现界面与逻辑分离,可以看看这里(有源码),希望和大家交流交流:http://hi.baidu.com/0xcea4/blog/item/54caa91a926e93118718bf45.html
haitao
2009-08-27
打赏
举报
回复
[Quote=引用 27 楼 snowflying928 的回复:]
我目前的想法是,UI层面Form所对应的pas文件不容许写任何逻辑处理代码。更不能包含sql。
对业务逻辑做模块化处理封装在对象中存在不同的pas文件中。
尽量不要使用全局变量,不要在不同的单元中引用全局变量。
[/Quote]
在我的Client/Webserver架构里,客户端采用非db的界面控件来显示、编辑当前记录的各个字段,浏览采用dbgrid,数据源是一个类似clientdataset的内存表控件,内存表里的数据按INI@http的方式取自位于webserver的应用服务程序(isapi程序)。
需要保存非db的界面控件里的内容修改、新增时,自动根据控件的name组成相应的sql语句,通过ini@http提交给应用服务程序(isapi程序)去执行。
应用涉及的所有的表,都要有这样的几个字段:
fid:自动递增id字段(用户不可见);fname:该记录的描述、识别文本;fdeleted:删除标志
update语句就是根据fid进行定位的
snowflying928
2009-08-27
打赏
举报
回复
[Quote=引用 28 楼 smallhand 的回复:]
我想討論的是,如何撰寫代碼易於維護,和擴展。
封裝,繼承啊啥的都是理論層面的,
我想在代碼面的討論。
楼主此话差已!
理论都是来自于实践,由实践累积而来的。
举个简单的例子:
TMan = class
public
procedure speak;
end;
子类:
TChinese = class(TMan)
end;
TEnglish = class(TMan)
end;
如果让所有的子类都有新增加一个name的属性,最简单的方法是在父类增加就可以了。
那么,与你在所有的子类增加name属性是不是更改的更小了呢?
修改TMan
TMan = class
private
FName: string;
public
procedure speak;
property Name: string read FName write FName;
end;
这个只是最基本的,根据情况不同采用的方法也不同。
设计模式和敏捷开发等就是在编写千万代码总结出的经验!
还有就是看你具体的应用,如果你写的是上位机或者与硬件通讯
的程序,那么就另当别论了。毕竟面向对象在这种应用下,效率
没有过程来得高。
楼主自己多看多练,多想,慢慢揣摩吧!
[/Quote]
谢谢你的指教。
我们目前主要是开发制造业的MES系统,主要是与数据库相关。我们在架构层次上用到了继承等特性。
当时单支程式比如维护工艺资料,一般都是对数据集做操作。
这种特性很少用到。
火龙岛主
2009-08-27
打赏
举报
回复
我想討論的是,如何撰寫代碼易於維護,和擴展。
封裝,繼承啊啥的都是理論層面的,
我想在代碼面的討論。
楼主此话差已!
理论都是来自于实践,由实践累积而来的。
举个简单的例子:
TMan = class
public
procedure speak;
end;
子类:
TChinese = class(TMan)
end;
TEnglish = class(TMan)
end;
如果让所有的子类都有新增加一个name的属性,最简单的方法是在父类增加就可以了。
那么,与你在所有的子类增加name属性是不是更改的更小了呢?
修改TMan
TMan = class
private
FName: string;
public
procedure speak;
property Name: string read FName write FName;
end;
这个只是最基本的,根据情况不同采用的方法也不同。
设计模式和敏捷开发等就是在编写千万代码总结出的经验!
还有就是看你具体的应用,如果你写的是上位机或者与硬件通讯
的程序,那么就另当别论了。毕竟面向对象在这种应用下,效率
没有过程来得高。
楼主自己多看多练,多想,慢慢揣摩吧!
snowflying928
2009-08-27
打赏
举报
回复
我目前的想法是,UI层面Form所对应的pas文件不容许写任何逻辑处理代码。更不能包含sql。
对业务逻辑做模块化处理封装在对象中存在不同的pas文件中。
尽量不要使用全局变量,不要在不同的单元中引用全局变量。
snowflying928
2009-08-27
打赏
举报
回复
我现在最头痛的是,外包收回的代码,很难维护,想重构都不可能
我在想制订个标准来规范代码。
我们目前只有一个命名的规范,太过简单了
snowflying928
2009-08-27
打赏
举报
回复
[Quote=引用 24 楼 sz_haitao 的回复:]
很多问题还是框架的限制
比如,delphi的事件不是线程,我想在一个事件执行的时候,能并行执行另一个事件,2个事件的代码交替地执行,就无法做到
如果分别交由一个线程去执行,由会涉及vcl的线程支持问题
[/Quote]
我想討論的是,如何撰寫代碼易於維護,和擴展。
封裝,繼承啊啥的都是理論層面的,
我想在代碼面的討論。
dinoalex
2009-08-26
打赏
举报
回复
模块和继承
ok1411
2009-08-26
打赏
举报
回复
这个说的就多了
你要说具体一点,一个程序一种思路
ZyxIp
2009-08-26
打赏
举报
回复
易维护和易扩展 的代码和语言的关系不如和分析业务的关系大.
主要还是看如何分析业务,当然不可能一次分析好,只有不断的重构.
snowflying928
2009-08-26
打赏
举报
回复
[Quote=引用 8 楼 yanele 的回复:]
要看整个框架是怎么的!
[/Quote]
框架可以做强制限制吗?
我们的框架是不限制这个的
7年
2009-08-26
打赏
举报
回复
这问题得根据个人来定吧?
wintergoes
2009-08-26
打赏
举报
回复
[Quote=引用 4 楼 wsxcdx 的回复:]
菜鸟关注
[/Quote]
~~~
yanele
2009-08-26
打赏
举报
回复
要看整个框架是怎么的!
apilove
2009-08-26
打赏
举报
回复
这个得关注一下
liangpei2008
2009-08-26
打赏
举报
回复
[Quote=引用 4 楼 wsxcdx 的回复:]
菜鸟关注
[/Quote]
!
haitao
2009-08-26
打赏
举报
回复
很多问题还是框架的限制
比如,delphi的事件不是线程,我想在一个事件执行的时候,能并行执行另一个事件,2个事件的代码交替地执行,就无法做到
如果分别交由一个线程去执行,由会涉及vcl的线程支持问题
snowflying928
2009-08-26
打赏
举报
回复
我现在想给新人写个一般性的指导原则。我是比较反对直接在事件中写代码的。这样的写的代码又长又难看。
尤其我们外包收回的程式很难维护。
一般新手的做法是,画好UI后直接在控件的事件中写代码,程式的员的思考点是从UI用户的操作上入手的。
我想参考面向对象的方法,把编写代码的思考点转到业务对象的操作上。利用对象和单元文件模块化。
写好对象的方法后,在思考UI的调用。大家有没有方面的经验最好能标准化,方便外包验收的。
加载更多回复(13)
面向服务的应用
程序
设计:构建可
扩展
和高效的系统
作为人工智能专家,
程序
员和软件架构师,CTO,我将本文作为我的技术博客文章,讨论面向服务的应用
程序
设计,以及如何构建可
扩展
和高效的系统。本文将介绍实现步骤、优化改进、应用示例以及未来的发
如何一步一步打造高可
扩展
性的应用
程序
?
随着项目的规模越来越大,项目的
维护
性就可能会变得越来越差,有时可能会出现牵一发而动全身的情况。如果需要修改某个功能的代码,或者添加某项功能,会耗费大量的人力和时间。这种情况下,高可
扩展
性的、低耦合的...
写出
调试c语言
程序
的基本操作步骤,C语言
程序
设计基本步骤
第二步: 画出
程序
的基本轮廓。第三步: 实现该
程序
。3a. 编写
程序
3b. 测试和调试
程序
3c. 提供数据打印结果下面, 我们来说明每一步的具体细节。第一步: 分析问题在这一步, 你必须:a. 作为解决问题的一种方法, 确定要...
telegram 常见问题
公众团体可以由任何人加入,是讨论和收集反馈的强大平台。 如果你更多的图片,电报有gif搜索动画,一个最先进的照片编辑器和一个开放的贴纸平台(在这里或这里找到一些很酷的贴纸)。此外,您无需担心设备上的磁盘...
DDIA学习笔记---第一章:可靠性,可
扩展
性,可
维护
性
一开始提到,现如今很多应用
程序
都是“数据密集型”,而非“计算密集型”。其实想想,对于我们普通群体来说,确实是这样的。就拿你自己手机上的大部分应用,社交,娱乐(游戏除外)类型基本都是“数据密集型”应用,...
数据库相关
2,497
社区成员
88,445
社区内容
发帖
与我相关
我的任务
数据库相关
Delphi 数据库相关
复制链接
扫一扫
分享
社区描述
Delphi 数据库相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章