那些年我们踩过的坑

作者:梁伟盛

事件背景

有一天leader给程序员cover分配了一个需求,cover一看,需求很简单嘛,就是在页面异步拉取数据展示就OK了,于是就和cgi同事阿翔对接了一下接口,就啪啪啪(敲键盘)的开始码代码了,不到2天就完成了需求。

    //各种高逼格代码
    ...

    $.ajax({
       url: '/cgi-bin/getList',
       ...
       success: function (result) {
            //判断是否正确返回
            ...

            showList(result.data.list);
       }
    });

    function showList (list) {
        for (var i = 0, j = list.length; i < j; i++) {
            //使用到list中的room_id, room_name, 各种xxx_xxx;
        }
    }

    function check () {
        //使用到list中各种xxx_xxx属性
    }

    //各种function
    ...

完成效果图:

一切都是那么的完美,就等提测了!!哈哈哈,我实在太聪明了(cover自白)

阿翔之坑1

正当cover信心满满没问题的时候,阿翔突然和他说,room_id这个命名错了,要改成room_no才行,"我去。。。我好多地方用到了room_id。"

此时一般很多人都立刻去把room_id属性全部改为room_no,但是cover并没有这么做,他心想没准后面其他属性又会改,我不会再被坑一次,于是cover加了一个函数。

    function format (data) {
        var _data = [];
        for (var i = 0, j = data.length; i < j; i++) {
            var d = data[i];
            //团队规范需要命名驼峰式
            _data.push({
                roomNo: d.room_no,
                roomName: d.room_name,
                roomTime: d.room_time,
                //各种xxx_xxx
            })
        }

        return _data;
    }
    ...
        showList(format(result.data.list));
    ...

这样就算阿翔把属性名改一万遍,在此函数只需要改一次就可以了,不用每个地方都修改,完美!此后cover在数日子等待提测。。。

阿翔之坑2

提测之日快到了,阿翔又通知cover,"创建时间那个字段leader说数据库中不能直接存放2015.11.11这种日期格式,全部要改成秒,你在前端把数据格式化成正常日期吧"。此时cover心里一万个草泥马在奔腾,"我的翔啊。。。你怎么又坑我了!"

cover立刻改造了代码

    function formatTime (time) {
        //格式化时间
    }

    function format (data) {
        var _data = [];
        for (var i = 0, j = data.length; i < j; i++) {
            var d = data[i];
            //团队规范需要命名驼峰式
            _data.push({
                roomNo: d.room_no,
                roomName: d.room_name,
                roomTime: formatTime(d.room_time),
                //各种xxx_xxx
            })
        }

        return _data;
    }
.
        showList(format(result.data.list));
    ...

提测顺利通过,项目终于如期发布了,cover也松了一口气了!

事后一根烟时间

经过这次被阿翔坑过2次的cover,事后他回想了很多,"如果以后属性名不确定,数据需要各种格式化,或者其他接口的属性也用到一样的格式化方式,或者说其他接口返回的数据也是一样的,这样能否抽离出一个数据化格式工具呢?不能再被我的翔坑了!"

于是cover苦思冥想,抽离出了一个格式化工具函数并放上了公司的lego平台imweb-format (暂时只能内网访问,请等待同步到公网)。

楼主总结

没有一个程序员一开始就能写出高抽象,复用性高的代码,和一世人流流长,总会爱上几个人渣一样,程序员总会遇到各式各样的坑,关键是遇到坑之后是视若无睹还是努力学习改进,同一个坑如果遇到两次还不改进,你是傻啊!

另:本故事人物均为虚构,若有雷同,纯熟巧合。。。。 原文链接:http://ivweb.io/topic/56612b9f4c460c2f5385b96d

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏纯洁的微笑

小明历险记:规则引擎Drools教程一

803
来自专栏web前端教室

[周末课程]什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? &下一个前端组件“日历”

大家好,时间飞快一晃又到了周末了,今天要跟大家一起学习的有以下这些内容: -- 什么是“页面业务流程”分析思维导图?如何编写页面假JSON数据? -- 进入下一...

1895
来自专栏C/C++基础

C++字节流与二进制字符串相互转换(一个简单的明文加解密程序)

作为一名程序猿,在我们写文章、文字片段或者一句简短的话语,对外发表或者告之他人时,是否想过带点新意和创意呢?如果想过,那么这篇文章会给你一点帮助。

632
来自专栏Android群英传

Glide ‘优’ 与 ‘愁’

791
来自专栏日常学python

一行Python代码能干嘛?

python有很多优雅有趣的代码写法,同时还很简短,以至于当我刚开始接触这个编程语言的时候,就爱不释手。而前几天的编程语言榜单中python也超越了java成为...

620
来自专栏机器人网

技术猿 | 机器人编程你需要知道的知识

---- 机器人编程为使机器人完成某种任务而设置的动作顺序描述。机器人运动和作业的指令都是由程序进行控制,常见的编制方法有两种,示教编程方法和离线编程方法。其...

2878
来自专栏申龙斌的程序人生

零基础学编程024:如何快速学会SQL?

一位朋友问我如何能够较快地学会SQL,我一时还真不知道如何回答。想学会SQL(结构化查询语言),大概需要理解这些术语:数据库、关系型数据库、面向对象的数据库、键...

3497
来自专栏牛客网

百度fex面经

怎么设计一个爬虫,怎么并行爬,遇到错误要怎么处理,怎么提高数据库存储性能,索引怎么建(索引忘了) 

673
来自专栏恰同学骚年

【整理】待毕业.Net码农就业求职储备

声明:本文题目来源于互联网,仅供即将从学校毕业的.Net码农(当然,我本人也是菜逼一个)学习之用。当然,学习了这些题目不一定会拿到offer,但是针对就业求职做...

1013
来自专栏IMWeb前端团队

那些年我们踩过的坑

事件背景 有一天leader给程序员cover分配了一个需求,cover一看,需求很简单嘛,就是在页面异步拉取数据展示就OK了,于是就和cgi同事阿翔对接了一下...

22710

扫码关注云+社区