吐槽一下公司混乱的API设计

这几天公司准备上线美股和港股的行情和股吧,财富通组已经忙了几个礼拜了,而股吧组则刚刚开始对它进行适配。我本来觉得适配一下应该是很简单的事情,原本碰到港股和全球股票全都跳到特定的股吧,现在只要把这个限制解除就行了。然而新的Web API出来实在是吓了我一跳。

本来后台接口已经很乱了。别的暂且不说,只是所有证券软件最基本的股票代码这个设计就是一塌糊涂。从原理来说,一只股票的完整信息有三个,市场、股票代码、股票名,这是非常明确的。东方财富通的分时K线接口原本有一个不错的实现,就是市场标志+股票代码作为股票的全码,再加股票名。即:

这个类已经包含了所有的必要信息了。

按理说,这个可以作为标准的设计,在所有系统中涉及到股票的,都可以用这两个字段来查找到唯一一只股票。但是我们不同的团队做的不同系统,使用的股票代码的格式是完全不一样的。

股吧的系统,一开始因为只做沪深股市,所以用的股票代码不加市场标记。比如SZ000001变成了000001。而股票代码有冲突的,比如财富通里面SH000001(上证指数)在股吧的接口里当做主题吧处理变成了szzs。

这时候,如果我要对股吧接口返回的股票进行行情查询,我就不得不补全丢失的市场标记。在我们公司还是有统一的一套“码表数据库”的,从这套码表数据库里面可以做到三个信息里面知道两个补全另外一个。但是码表数据库非常的大,查询起来非常耗时,特别是自选股列表的行情请求时一次要转换几十个股票,会使得UI卡死。所以这边还得做异步处理。

而这其实只是噩梦的开始。现在股吧要做美股和港股的行情和股吧。这次改动可能比较急,所以不同的模块给不同的人去做。结果四五个团队做出四五个股票代码的格式,而且规则稀奇古怪。比如帖子列表的查询,沪深不加市场标记,美股加us的前缀,港股加hk的前缀(财富通里面的HK是大写的,这边是小写,财富通里面的美股细分3个市场,这里变成了一个us)。股吧股票搜索对港股和美股的代码标记又不一样了,格式是1234567_01里面的_01代表美股,如果是_02就是港股。单是从股吧的一个接口获得的信息去请求第二个接口,我就要做一次转换。

而这只是四五个不同规则的其中一个。比如F10里面的请求格式是123456701,这里的最后两位01代表上证,如果是02则是深证。资讯接口的格式跟股吧搜索的格式很像,1234567_01,而这里面的01,02又跟F10里面的01,02代表相同的意思,恰好跟股吧搜索接口的意义不一样。更可气的是,股吧搜索接口返回的股吧类型会是错误的,比如明明需求说港股是个股吧,但是接口返回的数据都值为主题吧。我们向后台反映,后台说他们得到的数据就是这样的,竟然叫我们自己手动修正。并且,他们在生成JSON数据的时候从来没有用标准的JSON库,而是自己手拼字符串拼出来的,有时候传过来的JSON根本没法解析的,\n, \t这样的字符从来不转义,说是UTF8编码,里面还夹杂着几个GB18020的字节。我们反映的结果都是“你们自己去改啊”。

对于我们公司的后台,我是已经完全不能忍了。我今天忙了一整天就是在搞各种各样的转换,事情本来可以变的很好,只需要一份统一的股票代码格式。我不知道在一个公司里为什么连这个都做不到,股票代码这个能确定股票唯一性的东西,理应作为primary key来处理才对,即便不是,也应该是一个被索引的统一字段,为什么到了我们公司就乱七八糟了呢。如果我不是经常看见那些后台程序员在公司里走动,我会以为我在跟三四个公司在打交道。

面对这般混乱的局面,我只能望洋兴叹,无能为力了。想想也只有几个月,我就要卷铺盖走人了,也便无所谓了。

3 Comments

  • 御宅暴君

    2014 年 05 月 07 日 at 15:27 Reply

    真是悲剧~

  • 外来的和尚

    2014 年 05 月 25 日 at 17:40 Reply

    你所制作的软件“记词助手”一点“已有词汇列表”“低熟悉度词汇”就崩溃。

    • hikui

      2014 年 07 月 02 日 at 23:32 Reply

      以前犯了个重大的错误,有个xib改名了但是代码没改,然后就跪了。最新版本已经修正了。

Post a Comment