今天发现了一个很傻的设计
今天发现了一个很傻的设计,来自北京公司的不知哪位大哥写的:
POS上的三种通讯方式:GPRS, TCP/IP, Modem。POS是一个终端,一般来说进行交易是不止一个主机的。不同主机进行交易的通讯方式可能不一样。于是,你必须通过代码来选择通讯方式,我看了代码,发现有几个地方巨傻:
第一、GPRS本来就写好的,成为一个独立文件。理论上讲,应该是TCP/IP, Modem也各成两个独立的文件,或者,都集合到GPRS所在的.c文件中,也是可以接受。可是,你把TCP/IP和Modem合在一个同一个文件,让同类的GPRS尴尬了。
第二、要选择通讯方式,你必须提供一个函数进行选择。这个函数是提供了,可是,函数名取得不对。SendAndRecvData()这样我无法一眼就知道这是一个通讯方式选择的函数。
第三、如何选择通讯方式,当然是要通过标识来识别。一般来说,在接口上多加一个参数,这个参数可以是一个枚举变量来识别。但是,我看到的是定义了一个全局变量。其他模块要引用到这个接口,还得用extern全局变量,然后修改变量选择通讯方式。这不仅麻烦而且使得模块间耦合性增强了。
第四、选择通讯方式的代码,switch(type) {}。OK,没问题。但是下面的case,case 1, case 2, case 3;我哪知道这是哪门对哪门?就不能用宏或者枚举定义一个可读性比较强的常量么。
其他还有一些细节做得很烂。归根结底,还是有些人的习惯:把事情完成就搞定了,管他代码难不难看,设计得好不好。以后哪天你自己重新来看看代码,说不定大骂:这是哪个傻X写的,我看不懂!

浙公网安备 33010602011771号