然是在设计中尽可能多地甄别和提取不同组件间的公共特 性,在开发过程中随时注意不同的程序员是否在实现相同 的功能模块,并尽可能早地阻止代码重复的产生,提炼共 享的公共组件——不消说,这种高屋建瓴的工作理应由从 事总体设计的系统设计师全权负责。 通信接口中的代码重复 “银证通”系统的所有服务程序和客户程序之间均使 用Web Service 交换信息、完成交易。在Web Service 的两 端的接口代码中,也存在着比较严重的代码重复问题。例 如,在服务程序A 和服务程序B 提供的Web Service 接口 方法里,所有参数都平行地罗列在参数表中: [WebMethod()] public int GetTransactionsCount(string Code, string RefCode, int RoleID, int OpNodeID, DateTime Datetime); 因为几乎所有交易都和数据库相关,大多数参数都直 接对应于数据库中相关字段。和前面讲过的,数据库访问 控制组件的接口参数表重复问题类似,这种通信接口的设 计一样存在着重复和难于变更的问题。显然,客户端调用 Web Service 接口的代码必须以类似的方式传递所有参数, 客户端的更高层组件(如界面组件)在调用底层接口时, 多半也会重复这种冗长的参数表。一旦数据库结构需要调 整,那么,以Web Service 为中心,向客户端和服务端两 个方向延伸的每一层代码都必须修改方法的声明、定义和