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