一个码农的项目小结(血泪史)

很长一段时间没对本身作个总结了,说实话,在过往的一年中,感受比本身2年学的东西都多。也许,这也算是痛并快乐着吧!php

 

1.严谨应该是一种能力,或是习惯,而不仅是认识!html

刚开年时,写了一个微信邀请卡项目,项目不大,也就开发了一天左右,2 天就上线了(要配合其它项目),可是不知道是否是由于刚开年的缘由,这个项目上线后的一天了,报警日志一直在爆发,开始的时候觉得是 微信 accessToken 的问题,可是最后发现,不是token 的问题,是我代码逻辑的问题,原本应该return 掉的代码,我竟然给它作了复制操做,致使重复获取了token,实在不该该呀!出这个问题也就算了,毕竟影响不是太大,可是我有个用户类型,竟然忘记作了处理,致使上线了,那么你必定想问了,为啥你测试环境ok呢,由于我测试的微信号那个用户类型走的是另外一个代码分支,晕,本身够粗心的!因此呢,在此项目以后,没当我在项目添加了新的 逻辑分支,都要自觉去review 这些分支,保证代码准确,功能完整!严谨应该是一种能力,或是习惯,而不仅是认识!java

 

2.作好代码的标记 【todo,check,review,fixme】mysql

在我使用的idea 或者 phpstrom 中,都有个todo功能tab,说实话,这东西很棒,可让咱们不漏下功能!我通常是这样子作的,打开设置,搜索todo,像这样子sql

 

这样子,我就设置好了,咱们开看看效果数据库

 

 怎么样,这样子是否是对本身的工做安排更加清晰了!编程

 

3.java nullpointerexception 异常不要慌,找到该对象,解决问题json

我以前遇到 error 级别的错误时,多少会比较慌乱,不知道如何处理,好比这个问题,咱们只要找到该对象产生的地方,作处理就行了!缓存

 

4.新项目上线,注意和运维(dba)同窗进行沟通,保证帐号信息正确服务器

这样子的状况,只出如今新项目首次上线的状况,以前我也这样子坑过咱们的运维,后面咱们沟通后,上线前对一下数据库的配置,发现不再会由于配置问题,而影响上线了

 

5.设置微信相关配置的时候,须要注意http 和 https 协议

上周呢,测试小姐姐说她的qc 环境没法进行微信支付,我说不可能啊,我打开了微站,发现一切ok呀!我当时就用charles 去抓包了,查了好久,估摸有一个小时吧,忽然看到,她的支付页咋是 http://... 的呢?我一会儿就明白了,我在微信支付配置的是 https:// 。后来问她要连接,好家伙,她的连接是这样子的  ce.aba.com/index.html 。。。我一会儿就明白了,这样子的连接点进去的话,使用的协议就是 http:// 难怪报错了。因此呢,和微信相关的配置,这俩个协议必定要区分好!否则就很尴尬了!

 

6.要注重项目配置文件的管理 

不得不说,配置文件在有些项目中就是一个痛点,一不留神,可能就坑了队友。我想说的是,配置文件必定要规范,开发环境,测试环境,线上环境要区分好,一者便于管理,一者便于阅读。

共用的配置文件须要进行抽离,不要出现太多的冗余!

还有就是,一些只是存储 文本 的配置文件,尽可能用jsonStr 进行保存,这样子结构清晰明了,方便修改!

一个好的配置文件内容,能够像这样子:

 

 7.注意 项目包的命名、类的命名

 一段代码写的好很差,其实命名也是个反映!好的命名,能够看其名,而知其意。在我遇到的开发中,通常会对 Vo 添加 后缀,如UserVo;对接口类 则是 以 I开头,如 IUserService; 用 Impl 表示接口实现类,如 UserServiceImpl; 而dao呢则都带上 Dao... 等等,诸如此类吧,这样子命名必定程度上算比较规范了,像阿里这些企业,还有一些严格的开发规范呢!

 

8.尽量的写单元测试,无单元测试,不编程

不知道不少人是如何看待单元测试的,但我认为,无单元测试,不编程。

我如今也是以这样子的标准在要求着本身,真的很好用。不少问题,在开发阶段就可以发现,这简直就是一种福利嘛!

java 在这一块作的很好,基本引入个jar包就差很少了,php 就麻烦些了,如phpunit,对一些框架的集成不太友好。以前试过把 yii2 和 phpunit进行集成,发现好多问题,太过于鸡肋了!

对应单元测试,仍是但愿都写一下吧,并不会浪费多少时间,与其出了bug去寻寻觅觅,到不如把bug扼杀与摇篮中!

 

9.若是须要进行图片合成,建议把底图换成.jpg 格式

我的一直有作图片的合成功能,这期间发现了一个规律,一样尺寸的图片,jpg 比 png 节约空间。千万很差小看这些节省的空间,蚊子再小也是肉。并且用jpg 的目的不是为了节约空间,而是为了提高用户体验!咱们以前的图片,在合成后,通常会上传到微信服务器,或者说存储到阿里云,若是图片小一些的话,速度必然就有很大提高了!

 

10.若是须要进行图片合成,建议使用 平方字体

这个没啥好说的吧,一来咱们的设计同窗不少都是用 平方来进行设计的,二来呢就是平方看起来更友好写,此外,最好是对字体进行锯齿消除!(可参考下 http://www.cnblogs.com/zeopean/p/7906470.html )

 

11.mysql 存储emoji时,尽可能使用 utf8mb4 编码

有时候会遇到微信昵称保存不了的状况,发现是mysql 编码的问题,这样子作能够处理下;若是不行,最好是把 emoji 过滤掉

 

12.必须对缓存键值进行规范及管理

这个点,很容易被忽略,说说本身在项目中的使用吧!我在定义缓存key的时候,会保证这个缓存key的惟一性,若是缓存key过长,我还会对其进行md5编码。至于惟一性,最好是和数据查询条件关联起来,这样子基本不会有太多问题了!

 

13.不一样数据库的sql 文件必须区分开

以前由于这个问题,坑了咱们的运维同窗俩次,实在很很差意思!然后呢,我便与他约定,若是我给到的部署内容,sql 没有写明数据库的,直接打回。(人啊,有时候就是得狠点!)

 

14.对技术实现的预演不到位

一些需求呢,给出来多是有些想固然的,因此呢,就须要咱们作好技术预演,这一环节若是作的很差,可能让项目有所延期(这样子就不太nice啦!)

 

15.作好系统的报警

一个好的系统,不单要代码写的好,并且报警机制也很重要。拿咱们如今的系统为例,当出现 500 错误时,邮件,短信都会有提醒,这样子及时的报警,虽然有点吵,可是却也保证着系统的稳定。

 

 

 

好了,先写到这里,有机会再总结一篇!!!

相关文章
相关标签/搜索