zoukankan      html  css  js  c++  java
  • 完整后端开发流程

    所有的bug修复都要回归落地到细节,所有的设计也要回归落地到细节,所以,不浮躁,不着急,重视细节;这样的流程就是省时间的。

    不仅仅要关注功能实现(如果只是一门心思只是从功能实现考虑问题,那么后期的代码会乱糟糟),也要考虑代码架构灵活性,健壮性,可维护性等等;

    做事要抓住核心,无论是做架构设计,还是做自测等等;

    做事不能把需求当做上帝,作为一个项目参与者,你要信奉的是的逻辑,符合用户使用的逻辑,要有自己的逻辑思考和批判精神;这是活力和成长的来源;

    工欲善其事必先利其器:把编辑器字体,把ssh客户端字体等等设置舒服的,不断挖掘它们最好的,做到提升效率

    1.架构概要设计

       多个应用之间的调用怎么做(异步,同步,http,tcp,自己开发,还是使用开源的,还是在开源基础上二次开发做精简或者扩展);

     什么情况使用什么技术,依据是什么?(比如你数据量以及数据增长不大,另外,仅需要简单查询,倒排索引可以考虑使用lucene,而不是elasticsearh或者solr)

      网络调用,超时时间怎么设置,设置多少合适,怎么做容错

       数据结构如何设计,数据怎么存储,(倒排,读文件,还是nosql);后面要考虑数据备份,数据量大的情况做sharding等,还有一致性问题等;

       单个应用中的处理流程怎么写(考虑复用,考虑结合设计模式进行抽象);

      设计模式:知道什么场景需要用什么设计模式?比如,需要创建单例,就用单例+工厂方法模式。需要模板,就用模板方法。需要观察就用观察者模式。需要生产消费,就用生产者消费者模式。

      要考虑,随着时间变化,数据量是否增速快,如何应对这种数据增速快等情况,架构也要迭代。

    2.日志

      应用日志打印,耗时统计,

    3.异常

      单个应用的异常处理,保证健壮性;

      具体比如使用一个对象的方法前,看看对象是不是为空,看看你传递的参数(比如,你使用一个变量来取subList(1,x),而x可能为0的情况,对不对。

      TODO:只是调用链的最外层打印日志,里面不要打印日志;

    4.配置化

       JVM启动配置化,能够做到不需要打包,直接读取配置重启即可等;

    5.测试

       测试要抓住核心进行测试,如果僻重就轻,那么测试的意义就没有那么大了;

       工欲善其事必先利其器;要学会Idea的高级调试技巧等。这个非常重要,可以提高效率,也可以让你调试更精准;要不断挖掘idea开发工具的提供的特性,提升你调试和开发效率。

       单元测试,集成自测等,mock测试,造数据等;

       要采用多版本管理,一个版本OK了,如果要复现或者修复一个问题,应该使用拉一个新分支,测试通过了,再合并到主干,这样在问题爆发期能够保证一个可用可测试的版本,

    而不是靠越改越乱,甚至搞乱了;

       一般单元测试要至少包括两个:一个是指定的输入参数case,一种是尽量随机组合所有可能的参数组合(把所有参数放到数组中,采用随机数生成索引获取值进行组合);

       有些代码需要这样的测试,数据是不是有满足case的数据,这个时候就需要Mock一个判断,然后打印一个日志等,来证明你的猜想;

       要有一种方法验证你的数据,比如你使用Lucen倒排索引了你的数据,你要验证;可以借助Luke等,或者程序Mock的方法;

      程序中进行埋入mock代码是一种开发者可以一切场合都适用的方法;

       当你提测一个版本后,就不要在这个版本的主干开发了,要挪到分支,测试通过,再合并到master,而且要注意reivew下;

       修改bug不是仅仅为了解决功能,也要考虑代码的可扩展,可维护等等;

    6.优化

       编写施压代码,进行压测,分析jvm的gc,机器的内存,cpu,网络带宽占用,查看网络连接状态;

    7. 心情:

    解决bug时,要心平气和,要冷静分析,要各个击破,逐个解决,不要急。

    8.netty和lucene

  • 相关阅读:
    Javascript 公共代码(可重用)
    ExtJs之Ext.data.Store
    delete exists
    c++ builder adoquery sql语句的动态增加
    C++ XML解析之TinyXML篇
    oracle数据类型varchar2和varchar的区别
    adoquery查询结果如何赋给一个变量(delphi和c++ builder)
    没有安装 BCB 的机器上运行会提示 找不到 库之类
    select union 查询出来的结果,如何按指定顺序输出
    oracle 已有 表 增加 列
  • 原文地址:https://www.cnblogs.com/big1987/p/9095521.html
Copyright © 2011-2022 走看看