关于系统模块设计的一点疑问?

  哎,昨晚又和女朋友吵架了,心太累!!

  一个刚参加工作的程序员。

  好了,昨天在做模块设计的时候有点疑问,不知道合不合适,就是“一个模块的设计需不需要考虑另外一个模块的方便而提供一些接口呢?”,(在这里我用A模块和B模块)。总是感觉如果A模块能提供一些接口,那样B模块就会少写很多代码,而且代码结构也会看起来很清晰,不用写很多重复的代码。但是,对于A模块而言,对于自身的需求,是完全不需要用到那些接口的。举个很简单的例子

/*
  *    内部数据层
  */
 class A
 {
 public:
     int getChannelNum();
     void setChannelNum(int iChannelNum);

 private:
     int m_iChannelNum;
     ModuleType moduleType;//一种枚举类型
    
};
 /*
  *    中间接口层
  */
int callGetAIRange(cSJON * pRet);

int callGetDIRange(cSJON * pRet);

A模块存在于内部数据层用到的数据类型都是int  float double  等需要进行计算的类型,但是外部模块需要调用中间数据层B模块来获取处理结果,其中需要用到字符串类型的channel,而且假设这种转换并不是简单的itoa,而是需要做处理,需要增加一些前缀字符,数值也需要进行一些转换。

1,  先说我的第一种做法,A模块增加 char * getStrChannelNum();专门用于处理这样的转换事情。但是这个接口在内部是不会有其他人去调的。所以加上又感觉像异类一样。

2,  第二种做法就是B模块增加转换的代码,相当于每个B模块中大多数的函数内部都得加上。感觉冗余太大。

不知道能否描述清楚。很多问题很纠结,还需要请教。

时间: 2024-08-05 06:38:16

关于系统模块设计的一点疑问?的相关文章

模块管理常规功能自定义系统的设计与实现(38--终级阶段 综合查询[5])

综合查询(5)--基准模块的选择 什么是基准模块,就是你的综合查询要以哪个模块作为查询的主模块,我没想到其他的词,就用这个来表示一下.具体的来说,就是你选择了若干个模块的字段组成了一个查询,你究竞是想展示哪个模块的内容.比如我们前几节的例子中,选择的模块有"订单"和"订单明细",里面有分别以"订单"和"订单明细"作为基准模块的截图.现在来具体讲讲二个父子模块作为基准模块时的不同之处. 1.子模块作为基准模块:这时所有的父模块的

模块管理常规功能自定义系统的设计与实现(36--终级阶段 综合查询[3])

综合查询(3)--查询条件的设置2 不仅仅对于模块才有这样方便的条件选择方式,对模块的字段也可以设置.例如对于"省份"中有个字段是"所属区域",这个字段不是一个manyToOne字段,而是一个字符串字段,里面就是存着"东北地区"."华北地区"等等这样的具体的字符串值.对于这样的字段也很容易将其放在toolbar上供选择.在模块字段中找到"所属区域"这个字段,修改字段的属性,让这个字段可以加到综合查询的too

模块管理常规功能自定义系统的设计与实现(33--权限设计[3])

权限设计(3) 三.字段的只读权限.对于可以修改记录的操作员,可以进一步限制哪些字段对于他是不可修改的.这个功能很少用到,是用户提出来的,我就顺便加了进去.实现这个功能也很简单建立只读字段角色,然后加入模块的字段,最后再将角色加到操作员上即可.前台在解释生成edit form 的时候,将这个字段的只读属性置为true即可.后台Hibernate在新增或保存的时候,可以把只读字段过滤掉,不能保存或不能修改即可. 四.字段的可视权限.有时候某些字段你不希望被某些群组的操作员看到,那么就设置一个隐藏字

模块管理常规功能自定义系统的设计与实现(28--多个模块之间的关联[4])

多个模块之间的关联(4) 前面搭建了客户以及客户父模块的一个分支,另一个分支是产品线,还有一个是业务员,然后这三条线归并到订单之上. 前面我贴了我要搭建系统的一张图,现在贴一下数据库的表和其之间的关系情况. 上图中表和我设计的简易销售管理系统是完全一致的.再看一下的模块图,稍微记下下其中的关系,对于看懂下面的内容很有必要. 对于业务员,产品,订单三条分支我建立的过程就不介绍了.现在来看看架构好的菜单: 再看看加好的各个模块的页面: 1.部门和业务员: 2.商品类别 3.商品 4?订单 订单明细

模块管理常规功能自定义系统的设计与实现(52--功能更新[2] 对百分比字段的操作)

功能更新(2)  对百分比字段的操作 百分比数据,或者是比率数据是一个比较难处理的字段,难点并不在于单条记录之中,而是在于汇总和分类汇总的时候. 先来看看我系统中的一个模块中的一个比率字段: 上图中的  已支付比例,这个字段是  已支付金额 / 结算金额,这个字段在此合同模块中可以作为一个计算字段来保存在数据库中,甚至可以不保存在数据库中,直接在bean里作为一个计算的属性. 现在问题就来了,如果要计算所有合同的已支付比例,那么就不是简单加起来的问题了,要把分子和分母分别加起来再除才会得到总计的

模块管理常规功能自定义系统的设计与实现(29--多个模块之间的关联[5])

多个模块之间的关联(5) 系统全部架构好了,下面来看看一个很远的关系,"省份","订单"之间的关联.在省份模块里显示该省的订单的个数以及金额和收款情况.跟前面的设计一样,给省份增加"附加字段". 然后把选入的字段加入到 grid 当中. 再来看看子模块市下面的菜单: 下面显示一下选择了订单菜单项的界面. 其他导航 以上为模块间关系的一个例子.上面有个缺点就是,我要看某个省份2013年度的订单汇总,在省份模块里就没有办法做到,这个问题放到以后去解决

模块管理常规功能自定义系统的设计与实现(23--二个模块之间的关联[1])

"省"."市"二个模块之间的关联的操作(1) 一. "市"模块定义好了,我们先来新增1个市,看看和"省"的关联操作. 上面显示了"市"的模块界面,在导航栏中为省份的导航,我们看到只有"江苏省"一个,其他的在哪里呢. 一个模块的父模块的导航有一个选项,叫"显示无记录的项目",此选项默认不选中,也就是说省里面还没有市的话,那个省将不放在导航列表中,看下图. 二.记录拖放操

模块管理常规功能自定义系统的设计与实现(22--第二个模块的加入)

模块"市"的设计与加入 现在重复加入"省"模块的过程,来加入市的模块. 1.建立数据表City CREATE TABLE [dbo].[City]( [tf_cityId] [nvarchar](4) COLLATE Chinese_PRC_CI_AS NOT NULL, [tf_provinceId] [nvarchar](2) COLLATE Chinese_PRC_CI_AS NOT NULL, [tf_name] [nvarchar](50) COLLATE

模块管理常规功能自己定义系统的设计与实现(31--第三阶段 权限设计[1])

系统的各种权限设计(1) 视频解说在线观看:视频解说链接 http://i.youku.com/jfok1972 本系统的如今已能够设计的权限一共同拥有四种类型. 1.模块的操作权限:包含可浏览,增改删,附件的CRUD操作,审核.审批,附加功能的操作(这个前面忘了介绍了,在以下会介绍一下). 2.模块记录的可视权限:通俗的讲,就是哪些记录你能看,哪些记录你不能看. 3.字段的仅仅读权限:对于具有可新增和可改动权限的人.进一步限制哪些字段是仅仅读的. 4.字段的可视权限:哪些字段你不能看到. 以上