乐书开发者代码规范

乐书网络内部开发分享,非相关人员忽略

说明

此文档作为lebooks开发者的一个编程风格的规范,不仅仅讨论结构是否正确、代码格式是否美观的问题,同时也作为一些约定与标准,以保证代码风格的一致与协调。

与其他任何代码风格指南一样,此文档不可避免地有一些带有个人或团队风格的、不地道的、不被部分人认可的规定与要求,可以共同讨论以及逐步修订。

通用

  • url中使用连字符

    如:http://www.lebooks.me/lishu/api/product-catalogs/1/productshttp://www.lebooks.me/product-catalogs
    在url(不管是api路径还是前端页面路由)中出现两个单词表达一个完整的意思的情况,都像这里一样采用连字符的方式,而不是下划线或者驼峰。
    因为连字符表示将2个词连接,而下划线表示分割,正确的语义利于SEO;不使用驼峰是为了防止某些大小写不敏感的情况。

  • 禁止滥用任务注释TODO/FIXME

    为保证使用任务注释,如//TODO//FIXME的开发者不被干扰,没有使用任务注释习惯的开发者必须及时删除已被处理的TODO任务。
    尤其不能滥用eclipse自动补齐代码块产生的TODO注释。

java后端

  • 可能被其他大模块引用的maven module必须添加test case,建议所有具体实现的代码全部添加test case

  • 如果自定义异常作为方法的一种返回情况,必须显示定义在接口层面让调用者感知

  • java模板类的职责划分

    • BO (business object)

      业务对象,通常作为service层的输入和输出模板,主要与业务层绑定,体现了业务逻辑的向外特性,不会因为视图层的变化而发生变化。

    • VO (view object)

      视图对象,作为rest api返回response的模板,主要与显示层绑定,体现了api用户的需求。

      通常VO是对BO的拓展、简化以及组合,在VO比较简单的情况下,可以直接略去使用BO类,但发生视图需求改变而不是业务改变时,严禁直接修改BO以及service逻辑。

    • RQBO (request body object)

      请求体对象,主要作为POST方式的rest api请求体的模板,主要与http request的提交数据形式绑定,体现了api用户的需求。

      通常request body中的数据还是交由service业务逻辑去处理,所以在比较简单的情况下,可以直接使用BO对象作为RQBO的模板使用,但是必须保证BO与业务逻辑的绑定关系,RQBO发生变化与BO不一致时,必须另外创建RQBO。

    • PO (persistence object)

      持久化对象。

    • 各种类型object之间的转化,可以借助一下映射工具,如Dozer。

  • 关于基本数据类型与包装数据类型的使用标准

    1. 所有的POJO类属性必须使用包装数据类型。
    2. RPC方法的返回值和参数必须使用包装数据类型。
    3. 所有的局部变量【推荐】使用基本数据类型。

      说明:

      POJO类属性没有初值是提醒使用者在需要使用时,必须自己显式地进行赋值,任何NPE问题,或者入库检查,都由使用者来保证。

      数据库的查询结果可能是null,因为自动拆箱,用基本数据类型接收有NPE风险。

      同样的,在将基本类型的默认值自动装箱的过程中,也可能造成逻辑上的错误,原本的控制变成了0值。

前端

参考文献

Google Java编程风格指南