- 绑定某个手机终端
- 解绑某个手机终端
- 解绑某个用户的所有手机终端
- 查询某个用户的绑定设备信息
已经给了你这样的需求,那么接下来要做什么?PM当然会询问排期。如果让你排期,你会给几天时间?你怎么考虑的排期?
反正让我排期,我排不出来。于是接下来我要做的是拿出我的xmind软件,在跟PM确认需求,定方案。最后用了两个小时,把需求再次确认,并给出了如下的排期:
后来我又问了一个细节,新域名service.xx.com是否已经有了?PM告知无,所以需要走申请流程1d。——最后的时间定位1周(5天)时间。
编码是个细致活,那么在编码开始阶段你要做什么?不会是着急把代码写好吧?
我考虑的是:
第一、干净的代码;
框架:能让你的代码结构很整齐,我用的是Thinkphp,也是第一次使用。先找到官方的文档,记住不要一次性想把整个文档看完,我是边用边看的方式进行的。开始阶段主要看的地方是:mvc结构;
好的命名:不要用自己习惯的命名方式,要以框架的命名方式去编码,要不然其他coder也习惯用自己的命名方式去coding,那么代码看起来就没那么干净了。
第二、传入参数的校验;
通过业务,你要确认,你的系统将会接受什么样的参数?
int型的是最让我舒服的,不会引起什么SQL注入,XSS问题,直接用intval强类型转换。
最让人头痛的就是字符型,考虑很多方面,SQL注入,XSS攻击等。对于SQL注入,我仔细看了一下Thinkphp的文档,只要你用数组传递参数给指定的类,你就不用担心SQL注入的问题(这也是用框架的好处)。xss攻击:利用php的htmlspecialchars, 把字符转成html结构的字符。
第三、更新、插入操作;
1、事务:优点是插入和更新时保证数据的一致性、原子性、隔离性、持久性;但是也有一个问题,会有锁行记录的问题。
2、在更新和插入之前,你做了查询吗?就是判断是否有这条记录。
第四、日志;
1、线上代码出问题,你是怎么定位问题的?很多时候,有些问题,你是无法在开发机和测试机器上复现出来的。我的办法就是日志。
2、安全性:你的日志是否有安全漏洞(把公司内部的信息暴漏到日志里)?那你怎么控制的?——一个办法就是设置日志级别,thinkphp框架自身就有日志级别。
3、方便性:你的日志打出来之后,你能找到问题吗?
原来的做法:程序读到日志断点的位置的时候,就把日志追加到日志文件里。——问题来了,当有一些并发的时候,日志里会把很多请求的日志交错的打到文件里,查询问题非常不方便。
thinkphp给出的做法(不错的做法):本身也有上面的做法(原来的做法);新学到的招数是,把日志内容一行一行的放到内存里,最后结束的时候,一次性打到日志文件里。
4、错误码;
你的错误码是什么样的?你设计过吗?是否成功就0,错误就<0,错误码挨着往下出溜。最好有个统一的规范。
5、开发文档
你有写文档的习惯吗?很多程序员跟我说,写文档太费时间了,我个人是习惯边写代码边写文档.你的文档用什么写?我早期习惯在公司的系统上写,但是发现速度很慢,而且查某个点的时候,比较麻烦,所以我习惯用word编写。
文档有什么用?
1>是容易让我理解代码;
2>是后期维护方便;这系统不是写完了就了事的,后期还需要你维护,或者给别的程序员维护。
我经常接手别的程序员写的代码。出了问题,问他怎么回事?每次回我的话就是看代码啊!这时候我就要从内心骂人了!
3>是你写的接口是给人调用的,你怎么告诉调用者你的接口形式?我比较懒,直接把文档交给他,省事了。如果他有些地方看不懂,那就说明,你没理解或者你没写清楚,一方面加深你对系统的理解,另一方面也能增加你写文档的功底;