放假的电话

解耦你的数据

解耦数据, 是我瞎扯的,到底是在说什么,我觉得举个例子比较简单。最近在公司做的一个东西,我们组负责的部分,对外提供2个接口。第一个,让用户配置他们想要计算的内容;第二个,computation组会来读取用户的配置,并进行相应的计算。

第一个部分很简单,就是前端页面的显示部分。第二个,在我们公司,computation组会来访问一个特定的xml,而我们就要负责生成一个反应用户配置的xml文件。

在一开始实现的时候,我犯了一个错误:如果用户想要计算Average Bitrate,我就在数据库里保存一个Average Bitrate,然后生成xml的时候,再对应地生成一条Average Bitrate的记录。同时,根据数据库里的Average Bitrate,我也能很容易地向用户显示他们已经配置的内容。结果有一天,PM告诉我,现在我们想给Average Bitrate换个名字,就叫Ave Bits好了,虽然其实是一个东西,但是你要保证用户在前端看到的是Ave Bits而不是Average Bitrate哦。然后再一天,computation组告诉我,Average Bitrate太长啦,我们现在想把它叫做ab,产生的xml文件比较小。

这下可好了,因为一开始实现的时候,数据库里是什么,接口提供的信息里就是什么,数据都是耦合的,导致接口非常不灵活。毕竟数据库里的东西不能说改就改,导致连前端页面上的名字也跟着不好改。我最后是重写了代码,采用了类似下面的解决办法:

1
2
3
config = {
'avgBits': ('Average Bitrate', 'ab')
}

avgBits是我在数据库里保存的值,它由我定义,不会轻易改变。它所对应的tuple,表示的分别是前端显示的名字和用在xml里的缩写。他们可以根据PM或者computation组的要求随意改变,而不会影响我的数据。