工作阶段性总结
到杭州工作快三个月了,一直跟随着公司的快节奏,很少让自己停下来总结总结。积累的多了,若是不总结,这些积累的东西可能也会随着时间慢慢丢失了吧…
在公司做的工作内容与我自己所写的项目大致相同,公司的项目是前后端分离,我只需要关心后端的接口服务,偶尔抽个包之类的,这些事情做起来不说游刃有余,倒也没遇到多少瓶颈,还算是挺顺利的,也很有激情。激情是因为通过工作的内容,我能学到很多技术优秀的用法,比我曾经用的好得多的。
async包,我以前是没有用过的。异步的机制在node来说是再正常不过的事了,而我也就简单的用用它的回调,感觉好像就这样了,其实我不知道的还有很多。async包能够将运行效率成倍的提升,例如其中的parallel、map等方法,有段时间,我在工作中疯狂的用这些方法,真入迷…但是这个包诱发的是我对其原理的兴趣,我想了解这些功能是如何实现的,因此,我在慢慢的啃源码…
测试。关于javascript的测试,自己也有用过,使用jasmine来写的。到公司之后,接触了should、supertest、mocha、istanbul等包,这一套工具对测试来说,以我目前的水平已经足够用了。在践行测试先行之后,能将这一套工具初步的用起来,我的接口的测试代码均在500-600行左右,多的能有1000多行。为什么能写那么多行,除了基本的结果数据、边界、权限等,主要是造数据的代码太多了。没有忘记熊节老师的提点(写了这么多重复代码你也好意思- -),将造数据的代码提取了方法,获取登陆状态的也进行了封装,能精简的就精简,但还不够自动化…感觉这三个月,加上测试代码,妥妥的有一万行代码了…测试这块,我很想再提高的,想再精简一点,能自动化就最好了,得多逛逛github吧~
健壮性。这个词,在龙湖的时候是经常提起的,健壮性、可读性、可靠性…而实际的工作中,程序出了bug崩溃了,才让我真正明白了何谓健壮性。nodejs作为单线程的语言,一旦有一处调用出问题了,那么整个程序便会挂掉。举个工作中的例子吧,比如,前台一个请求,需要一个数据列表,我收到这个请求之后去数据库查找,找到相关数据之后,为了显示的完整行,可能还需要返回这些数据的创建者信息,那么我就用这些数据存储的创建者的id去查找然后在返回的结果中给创建者信息赋值。这个过程中,假如某条数据没有存储创建的id,或者这个id对应的创建者不存在了,那么你调用data.creater/user.name,就会报错。随之而来的就是程序整个挂掉。正式运营的项目挂掉的严重性我就不提了,就说说怎么处理这些脏数据所造成的威胁吧。目前来说,我有三种处理方式:
- 在你觉得可能会出现问题的代码那里加上try catch块,在catch/finally中对其做处理
- 直接给个默认值,比如
data.creater = data.creater || ''
- if条件判断
除技术方面之外,在做事这块,也有很多体会(大多时候是被喷了- -、)。
公司的项目是前后端分离,那么上线之前得有个联调阶段,这之间就可能会出一系列问题…比如,接口文档的字段写错了,前后端可能一方用正确的字段,一方可能不改,联调的时候就会出现
“诶,你这少返回了一个字段啊喂”
“没有啊,我测试过了的”
“...你来看看”
“我靠,你这字段错了,明显单词拼错了嘛”
“你看文档,我们按文档来好吧”
“文档定错了我们也按文档来?balabalbala”
“...”
比如,前后端联调都过了,
“兄弟,你那边显示没问题了吧“
”没问题,我都看过了,数据有了“
”那行,棒棒哒~“
”...“
快上线的日子到了,
”那孩子,这接口是你写的吧,测试过了没“
”没问题的,老大,我和前端测过了,ok的“
”那你来看看数据怎么才10条!!“
蹬蹬蹬的跑过去,打开console,看了看返回数据,
”诶,你看,我这分页的数据有传给他啊“
”那当时联调的时候怎么没解决呢?这是你做的东西,你不跟进确认吗?你做的东西被糟蹋了你还淡定的跟我说你传了?是,前端是有责任,那你呢?balabalabala“
感觉自己都要被喷死了…实话说,这一天我的状态是崩溃的థ౪థ
成长的过程是痛苦的,我觉得我一定是成长了很多,这也是我这天唯一能高兴的点…
这个故事告诉我,
- 自己做的东西一定切实的确认它成功的落地了,也就是说不仅要保证自己这边的东西没有bug,还得确认调用的人那边也没有问题,这算是对自己负责吧。
- 做事情,一定得和同事保证信息的畅通性、实时性,有什么问题、哪里有改动,需要通知的一定得互相知会到位。
然后呢,我觉得应该总结出一个最重要的事,
一有什么问题浮现在脑海里马上就不假思索的提出来,这并非是件对我们有帮助的事情。
有时候,坑是自己挖的,自己掉进去了,也只有自己默默地爬了(含泪总结థ౪థ)…
总的来说,这三个月过的还行(至少没找家里要钱),三思而后行,三思而后问,谋定后动。接下来,这些总结的东西需要学而时习之,最后还是对接下来的事情定个计划:
- 继续研究async包,尽力搞懂其原理
- 继续研究大文件读取写入(这个是自己某次偶然遇到),对node的文件操作有自己的心得
- 不辜负豪情大大的提点,在前端方面还是要自己多努力,做一个自己demo
- 对express框架进行更深入的理解
加油,baby