那些年我们踩过的坑

事件背景

有一天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 (暂时只能内网访问,请等待同步到公网)

楼主总结

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

另:本故事人物均为虚构,若有雷同,纯熟巧合。。。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Material Design组件

Human Interface Guidelines —— 活动视图(Activity Views)

3489
来自专栏向治洪

移动端跨平台技术总结

概述 曾经大家以为在手机上可以像桌面那样通过 Web 技术来实现跨平台开发,却因为性能或其他问题而放弃,不得不针对不同平台开发多个版本。这也违背了跨平台开发的初...

2375
来自专栏美团技术团队

前端渲染引擎doT.js解析

背景 前端渲染有很多框架,而且形式和内容在不断发生变化。这些演变的背后是设计模式的变化,而归根到底是功能划分逻辑的演变:MVC—>MVP—>MVVM(忽略最早混...

4084
来自专栏DeveWork

Foundation:高级的响应式前端框架

对于前端框架,Jeff 了解Bootstrap 甚于这个Foundation(貌似在写该文之前还没听说过Foundation)。所以,今天在这里恶补一下,介绍一...

1919
来自专栏数据的力量

10个提高你工作效率的Excel技巧

2394
来自专栏Web项目聚集地

前端面试题(HTML和CSS)

我会推出前端面试题的专栏,每一期我会推出10个经典面试题,面试题一部分由小伙伴提供,一部分从面试真题中选出,最后会来一个大汇总。主要目的是帮助那些还没有前端开...

512
来自专栏JackieZheng

初探JavaScript(二)——JS如何动态操控HTML

  除去五一三天,我已经和《JavaScript Dom编程艺术》磨合了六天,第一印象很好。慢慢的,我发现这是一块排骨,除了肉还有骨头。遇到不解的地方就会多看几...

1885
来自专栏编程

2017 学习 JavaScript 感觉如何?

编译: 伯乐在线/dimple11 http://web.jobbole.com/93760/ 写给还没开始阅读本文的读者,本文是对《2016 年里做前端是怎样...

18010
来自专栏崔庆才的专栏

使用requests+正则表达式爬取猫眼电影排行

本节中,我们利用requests库和正则表达式来抓取猫眼电影TOP100的相关内容。requests比urllib使用更加方便,而且目前我们还没有系统学习HTM...

5117
来自专栏Sorrower的专栏

Chronometer和CountDownTimer计时器

Android小知识10则(上) Android小知识10则(下) Android用5种方式实现自定义计时器, 哪种才是你的菜? github传送门

663

扫码关注云+社区