编写行业软件遇到的问题编写一个行业管理软件,供行业内部不同公司使用。但行业并没有一个统一的国家标准,这
编写行业软件遇到的问题
编写一个行业管理软件,供行业内部不同公司使用。但行业并没有一个统一的国家标准,这就造成不同的企业有没的需求。比如界面上,一个企业可能需要这样布局,另外一个企业可能需要那样布局。而在业务逻辑上,企业的需求差别会更大。现在的办法是在程序内部用公司名判断。
if IsCorp('A公司') then
begin
...
end
else if IsCorp('B公司') then
begin
...
end
如果有100多公司,就需要把100多个公司全写到程序中进行判断,这样就造成代码非常宠大,难以管理,而且混乱。
不知道有没有更好的办法来实现。
[解决办法]如果又有界面不一样的话,建议:
首先把大部分用户都使用的界面和代码写成一个或者多个Form,假设叫做:TXXForm,部分方法定义成虚方法.
如果有新公司需要修改界面或者代码,继承一个TXXForm,如:TCom1Form
只需要编写不同的部分,override来实现分支,然后加载的时候加载相应的Form即可.
[解决办法]写个抽象基类,然后一个个重载,或用预编译指令
[解决办法]建议OOP与AOP结合
复杂业务抽象为简单逻辑,会让工作简单很多.
看你的意思, 你们的产品是为相同行业的不同企业提供支持, 那么基础的东西应该有共性,只是不同企业的业务多样性在开发过程中无法预估.
最好将企业特有的东西分包以保持其独立性
尽量使用配置数据处理不同企业的应用区分, 以免主体程序陷入其中
提炼业务,推出行业标准(用友, 广联达等都是在国家规则范围内玩出了花样, 最终使自己的产品变成准规则性的产品)
[解决办法]简单类工厂、、、
[解决办法]界面工厂。。。
[解决办法]脚本化的delphi:完全动态加载的dfm+pas机制
不过,你的需求,pas是没必要动态加载了
100个form,但pas都一样,可以由pas根据配置动态生成form
[解决办法]------------ 同意
[解决办法]那就脚本化的delphi:完全动态加载的dfm+pas机制
不过,同样的模块,100套代码,公共的升级同步起来也够痛苦的
[解决办法]利用插件机制,实现功能配置即可。
[解决办法]用动态库试试呢
不同公司用不同的动态库区分
用个配置文件控制调用哪个库
[解决办法]如果不能统一“标准”,不能让行业中的客户都依照该“标准”去执行,那么就很难做到包罗万象,更不应该用 If 那样的结构去控制。
即使是同一个行业,由于管理者的理念,会导致业务逻辑相差甚远,别指望一劳永逸。
通过DLL或BPL可以减少一些工作量,但业务逻辑还必须量身定制的,即使有一些共性。
框架可以相同,但业务逻辑模块因客户而有所差异。
[解决办法]我想,如何处理程序分支和如何处理不同业务逻辑是两个问题,应该分开来说。
业务逻辑最好数据化,不要编译成固定的程序代码。数据化后,就可以保存在数据库中或本地文件中,可以随时修改,而且容易自动处理。
处理程序分支可以先把公司名称转换成你自己设定的公司代码,然后把代码转换成数据表名或文件名。这样就不需要那么多条件判断了。