阶段性总结:
总结过去两年的工作,有以下心得,初入公司时,因为过去都是在外包公司工作,和零散的项目,做的都是一些单一的模块和功能,很难接触到这种完整的业务线。虽然代码都懂,但是真要涉及到做什么项目。不论从眼光还是思维模式上都有着很大的差距,相信这也是很多野路子出身的初中高级php程序员的通病,知道做,会做,但是涉及到从整体项目出发局限性特别高。包括项目上下流程和协同开发,了解的都不太深入*。
在过去两年多的时间里,总结自身如下几点收获和体会:
1.全局思维,动手之前一定要研究透:
这个是至关重要的,一个合格的程序员,不能只知道按需求做功能。而是要全面的去了解业务,在有疑惑的地方提出 合理的质疑,并求证。稀里糊涂的去工作是一种不负责的行为,可能会平白多浪费很多不必要的精力,更严重的可能会对整个业务造成更严重的影响。切身经历过,项目启动之前的技术评审很重要。产品的水平可能参差不齐,感觉不合理的地方一定要多问。
2.数据表设计,一定要做好数据隔离:
最开始设计表的时候,有时候会不晓得建表的时候加些什么字段,还总喜欢把一个功能涉及到的字段堆一张表,等到后期服务化拆分时候崩溃了,就看各种字段冗余在一块,拆…想多了吧,先做好数据隔离吧,譬如说,车的信息要放单个表,用户信息要放单个表,保单信息要放单个表,你乱七八糟状态和这些信息堆在一块,不做好隔离…想拆,洗洗睡吧。
3.编码习惯,保持单一性,:
最开始码代码的时候,总喜欢一个功能写一块,感觉这样好拆,并自以为自己很机智的。等服务化时发现,这都什么鬼,一个方法里调一堆model,各种链接交叉创建。阿门,学会在加一层吧,。弄个seivice层,单个表建单个model,service里写好常用数据的调用方法,用哪个数据直接调哪个service,看起来多舒服,还可以避免大量冗余代码,拆分也好拆分,最关键的是,在之后开发可以直接cvx,多香。
4.sql取值,数据获取,服务器资源管控:
‘select * from table’,…这种最典型的,用啥字段取啥字段,运行内存总那么多,你把坑占了,让别人怎么玩,及时释放内存可以解决一部分问题,但是也是治标不治本,sql一多,拉出来的数据量一上来,在加上俩循环,分分钟跑满,及时把不需要的变量释放掉,找点安慰。
5.上线流程
不论什么时候,没有经过求证的代码,一定不要推到正式上,
之前野路组没注意过着这些,以下相对完善些的发布流程
【本地】->【测试】->【仿真】->【灰度】->【正式】,五个环境按顺序跑,正式发布时一定要拉着产品确认好,产品让上在上,必要的时候也得留好上线申请的审批流,锅这个东西,还是甩出去比较好。
6.git版本管理
这玩意真香啊,设定好负责人,master分支审批合并,上线之前强制审核代码,打好tag,从jenkins发布,再也不用担心误删代码什么的了,不过提合并之前一定要rebase master 分支的最新代码,变基到当前父节点上,不然merge的时候能搞到崩溃,备不住还会丢代码。
7.redis…
讲真的,底层真没用到太多,但是 string,list,set,sortset这几个用的还是很香的,注意别写大key,及时释放资源,别看内存不少,真浪费起来还真扛不住霍霍。
收尾
先到这里,个人见解,仅供参考,不对勿喷,后续在补充,下班了,灰灰........