把代码提交后,然后同事或领导总是能够指出我们代码的不足之处...
“这块代码这么写,会不会存在内存溢出”,“这里加入缓存会怎么样,性能会怎么样”,“这块要考虑并发”,“这的数据状态只有这两种状态吗?”......
听完这些,我编程时怎么就没考虑到呢?然后你就如坐针毡地听领导和同事指点江山。
那么该如何能避免这种情况呢,在编程时需要考虑哪些东西?今天,我们就讨论下。
我们知道做任何一件事情,都需要经历过三个阶段。
首先,确定目标。不管做任何事情,都需要知道做这件事情的目的和条件。让目标驱动我们获取条件,更让能我们坚持下去;咬牙坚持的事情常常半途而废,有目的的奋斗常常事半功倍。在行动前,我们就给自己定一个可量化的小目标,例如我的产品需占用20%的全国市场。
其次,分解目标。实现目标是非常漫长的过程。坚持下去,就要为每个阶段设定阶段性成果清单,不断刺激自己努力前行,直到最后完成。积少成多,聚沙成塔,通过无数个小成功成就大成功。
最后,校验目标。每当达成小目标或最终目标时,需要好好回过头去,想想这个阶段或过程中的得与失,优点与不足,满意和不足,好好总结。有则改之,无则加勉。
编程也是如此。只有确定了三个阶段,并分别针对三个阶段过程,结合编程具体特点思考,就自然而然知道我们需要做些什么。
确定目标。只有确定编程目标,才能选择匹配的技术方案和评判标准。如果是个人博客,我们采用单应用服务,快速开发;如果是需要应对百万级访问,我们需要做集群、做负载均衡、反向代理等,快速开发,稳定运行;如果需要应对亿级访问,我们需要微服务化处理,流量控制、限流限速等,实现快速迭代、垂直迭代、快速水平扩展。目标决定了我们采用的编程语言、技术框架、测试方式、发布方式和运营方式。
分解目标。编程需要考虑的方面是在是太多了,从代码规范、可扩展、封装性、继承性,到日志监控,权限控制,数据安全,业务安全,用户隐私,水平扩展,会话管理,消息处理,缓存管理,并发控制,接口兼容,数据MOCK,包括功能、性能、极限等的测试,灰度、黑度发布,运营监控等众多方面。这些都不可能毕其功于一役,需要根据轻重缓急安排先做什么,后做什么。一般而言,好的产品不仅是研发出来的,更是运行优化出来的。我们首先要确保有可用的功能,其次才是良好的性能。有了可以运行的产品,才会有性能的调试和优化。有了产品后,就可以快速迭代改善产品,最终打造出一款好产品。
校验目标。在实现好了目标后,我们需要回头再瞧瞧。不忘初衷,拿出我们的目标,和结果做对比,到底差别在哪里。哪里做了妥协,哪里做得更好,哪里做的有待改进,扩展性怎么样,性能怎么样,能承受多大的并发量等。通过校验目标,找出需要完善的地方,螺旋式使用三个阶段,不断提升产品质量。
那么,作为一名程序猿,在负责具体某一模块时,我们需要考虑什么呢?
1、功能正确,做好单元测试,业务兼容性等考虑。2、代码具有良好扩展性,包括水平和垂直扩展;3、代码风格一致、注释规范简明;4、数据库查询时必须考虑缓存(代码层级缓存);5、并发处理(同时大量访问会出现什么问题);6、功能接口化,不要过多暴露实现细节给外部;7、异常处理,确保整个功能模块的数据与业务流转是可以形成闭环的;8、代码的设计模式(这有点装逼了,其实我们总是不知不觉会应用一些简单的设计模式,例如单例模式);9、性能问题,可以从语言特性、IO模式、通信模式和并发模式等不断挖掘。
程序猿从接受任务到完成任务,其实也经历了确定目标-分解目标-评估目标的一个完成过程。让目标引导我们,让小目标驱动我们,让校验结果回报我们,我们也会让自己得到升华。最终摆脱“为啥挨批的总是自己”。












网友评论