奇迹小说

第22章 由硬编码引发的血案

书名:构建思维操作系统本章字数:2262

好容易,终于盼到第二学期开学了。成续缘兴奋极了。他组建工作室的想法终于可以开始着手安排了。更重要的是,他又可以时常见到林妙雪了。

他也不知道为什么自己没有一刻不想和林妙雪在一起,只要看到林妙雪,他所有的烦恼就烟消云散了。

开学后,很快他便和马农,琳姐商议好了工作室的部署事宜。

在拟订好工作室的创建方案后,成续缘,马农,艾倜,寇德,以及林妙雪宿舍成员一致决定,大家集资租用一台性能稍微好一点的云服务器。

在云服务器上搭建基本的开发环境,代码托管git环境以及项目自动部署流水线等等任务就交给了最近应聘的学长周凯。

这位学长自入学以来便参与了学校研究生管理系统,校园论坛多个模块的开发工作。

经过两年多,他便将运维,前端,后台的开发工作均已掌握熟练,说起来也算得上校园十大风云程序员之一。

学校的很多网站,系统能够顺利运行,就得益于学长等十多人的辛勤维护。

虽说程序开发可以远程办公,但成续缘觉得这样始终不太方便大家交流。

于是暂时决定将工作室的工作部署安排在学校机房。

学校机房最大的好处是已经安装好了各种开发环境。虽说每次关机后都会自动恢复到开机前的状态。但是只要关机前已将代码push到了远端虚拟主机便不存在太大问题。毕竟他们目前能接的项目规模极其有限。大家每次只需要将代码从git克隆下来,简单配几分钟便可以继续开发了。

学校机房是为了方便学生学习,故而一个小时收费才一元。大家每周在机房聚一次,花销倒也不是太大。

当然,等到后期如果能够稍具规模,成续缘也随时准备向学校申请专门的工作室。

待得基础工作完毕,众人无比兴奋,均准备在这个学期好好大干一场。

在一个简单的工作室组建完毕后,他们很快便迎来了第一个项目。然而,他们不可能想到,他们即将在这个项目上栽一个大跟头。

由于上个学期成续缘策划的c语言管理系统案例初见成效,偶尔有网友会向他们咨询能否帮忙开发程序。

艾倜和寇德深受鼓舞。故而寒假期间,竟也没有落下学习。

前来咨询的朋友,需要代写爬虫的居多。艾倜和寇德就利用寒假期间下载了一套Python爬虫相关的视频教程,一有空就跟着视频教程捣鼓一阵。

一个寒假过去,他们已基本将爬虫相关的技能掌握得颇为熟练。

好容易等到开学,他俩早已摩拳擦掌,跃跃欲试。

开学才一周,他们便等来了这个机会。这是他们工作室接到的第一个项目。却没想到首战便碰到了一个大大的坑。

这个项目的需求大概是针对一个基金购买平台(并非真正的基金交易网站,用户可以在该平台下单,该平台根据基金官网出的结果进行结算。注:该平台不一定会真正去买基金。),开发一款自动下单购买软件。

和真正的基金平台不同,该平台可以支持按元角分厘模式随意购买。而客户是这个平台的用户,他正好有一套量化交易系统可以根据一套机器学习算法给出应该如何购买基金的建议。他希望成续缘能够帮他开发一套系统,对接上这个购买策略,然后根据这个购买策略在刚才提到的基金平台自动下单购买基金。

艾倜和寇德一看这个需求就知道只需要先发一个post请求模拟登录,拿到cookie信息,然后再发一个post请求调用下单接口即可。

也确实如他们所料,这个程序开发起来并无难度。他们很快就完成了相关代码的编写。

用户也非常满意。然而,谁也没想到,就在第二周,用户因为他们开发的程序赔了一大笔钱。事情的经过是这样的。

基金购买网站的下单模式,元角分厘代码如下:

<select>

  <option value ="0">元</option>

  <option value ="1">角</option>

  <option value="2">分</option>

  <option value="3">厘</option>

</select>

于是艾倜和寇德便在自己的程序中通过一个map来硬编码元角分厘的对应关系。即{"元":0,"角":1,"分":2,"厘":3}

这样干程序本来也能正常运行。也没看出有什么大毛病。

可是突然有一天基金购买网站的下发模式代码却发生了意想不到的变化。这段代码突然变成了

<select>

  <option value ="0">厘</option>

  <option value ="1">分</option>

  <option value="2">角</option>

  <option value="3">元</option>

</select>

也就是说,对应关系由原来的0:元、1:角、2:分、3:厘变成了0:厘、1:分、2:角、3:元。

这一天,原本根据购买策略,给出的建议是规避风险,适当地减少购买量。所以客户选择的是厘模式。因为艾倜和寇德之前是硬编码,所以post请求厘发出去的是3。问题是,现在基金网站的3对应的其实是元。厘变成了元,这中间就隔了1000倍。结果这一天的果然如交易策略所言,大跌。

这就导致客户赔了他原本没打算购买的量。

尽管艾倜和寇德将这个项目的报酬悉数退还给客户,并给客户解释了其中的原因。可是,客户并不懂技术,只是觉得他们在为自己的技术不行找借口。当然,这也不是重点。重点是,自己的编码方式确实是有问题。

这个程序如果是动态去解析select标签里面的内容,然后动态的建立0123和元角分厘的对应关系就不会出现这样的问题了。

艾倜和寇德,均为自己犯下这样的低级错误深感惭愧。

可能是因为一朝被蛇咬,十年怕井绳的缘故。他们再三向客户保证他们再迭代一版就绝对不会再出现类似的问题了。但客户却不敢再用他们的程序了。

他们怎么也没想到,接下的第一个项目就这样夭折了。

“正所谓,好事多磨,任何事都会经历一个曲折的过程。这只是咱们接的第一个单,出点小插曲也是非常正常的现象。你们不必自责,汲取教训,下次做得更好就是了。”,成续缘安慰道。

“多谢缘兄的体谅,硬编码真是要不得。”,寇德道。

“谁能想到这该死的网站居然会在这种小细节上作修改。”,艾倜抱怨道。

“说起来,始终还是你们没有养成好的编码习惯导致的,怨不得人啊。以后我们写代码,最好还是按好的编码习惯来。”,马农道。

大家都表示同意。