0622 公司项目 CodeReview 问题及总结

本贴最后更新于 2841 天前,其中的信息可能已经时移世异
 
后台代码部分
1. 枚举类的使用:当定义的某个字段有多种状态值或表示值时,可以创建一个枚举类将所有状态表示出来,并供其他使用到该字段的方法统一调用。枚举类定义可参考 '/banking-dbbp-product-comp/src/main/java/com/vivebest/banking/dbbp/product/comp/Enums/ProductTypeEnum.java'。
2. 异常处理,在调用其它项目接口时一定要进行异常处理,在抛出异常时需要使用logger.info()对异常进行打印,异常处理格式如下,
 
3. 日志打印不用转换成json对象再输出,如果是打印实体类对象在编写时直接构建toString()方法即可,方式是 右键实体类--> Source --> Generate toString()。
4. 后台日志打印主要有info和debugger两种形式,在进入后台Action时使用logger.info()打印信息,在抛出异常前使用logger.info()打印信息,调用其它方法是使用logger.debugger()来打印信息。info主要是用来判断参数信息是否正确,debugger主要用来查看程序走到了哪一步。
5. 打印日志时要使用占位符‘{}’,不建议使用字符串拼接‘+’的形式,使用‘+’是字符串拼接,会浪费系统资源,后期调整为error级别时,仍会进行字符串的运算,在进行压力测试的时候或者是高并发的情况下,影响系统的性能。使用‘,’符进行占位,效率比较高,方便日后日志筛选与查看。
6. 自定义异常处理时,异常的定义要规范化,同时要包含一定的业务含义,使代码具有可读性。
7. 有返回值的实体类或者List和Map都不能使用New()操作,直接在定义时直接初始化=null即可,如: List resultList = null或者直接 List<PublishAuditor> resultList = publishAuditorService.query(publishAuditor);使用New()操作会消耗额外资源。
8. 删除操作、插入操作和更新操作都不需要有返回值接收,查询操作时选择适当的容器来进行接收查询数据。
9. 日期类型的转换有公共的Utils类中有方法可以直接调用,可以避免手写转换,在第三方jar包 org.apache.http.client.util.DateUtils中可直接时候,使用方法为 Date date = DateUtils.parseDate()。
10. 在Action执行完数据库操作后向前台返回数据时,不需要手动自定义标识符,系统框架会自动返回前台可识别的标识符。不需要特意putResponse出执行成功或失败的标识,平台级的报文中会有resultType为N的,同时前端会对错误进行处理的。
11. 当从前台接收到的某个字段需要经常做转换或者处理时,可以在定义接收该字段的实体类中的Set()方法中进行处理,避免了在其他层频繁处理。
12. Action层主要负责业务和模块的组装,用来写业务的流程。Service层用来进行具体的业务操作和数据处理。当Action接收到参数时,在Action进行数据的组装。Action层处理大的业务逻辑,即主要业务逻辑流程的串接,Service层做具体的小业务的流程,以及数据的处理等
13. 在使用MyBatis在XML里面编写SQL语句时,需要联表查询并编写多个Join语句时,应该把每个Join语句单独成行,方便一眼看出关联了哪些表。如下:
 
14. 对于数据的组装和赋值,应多使用工具类,如dozzer 或者beanUtils中的些对象之间的赋值,尽量减少set方法。使代码具有简洁、可读性。
 
前端代码
1. 前端的组件如tab id或者name进行命名的时候要有明确含义,尽量避免tab-1、tab-2这种无意义的命名。
2. 编写JS文件时要在对应页面下创建JS文件夹,并且JS文件也要有适当的注释,关键字段和方法也应加上注释。
3. 在一个页面有多个Tab展示不同的加载数据时,可以给tab添加定时器,在点击一个tab后对后面的tab进行预加载,不必一次性加载全部数据,也不必只有点击之后才加载数据。
4. 当前端页面多次用到同一个组件的某个属性时,可以添加一个class id,并在CSS或通过Jquery来进行统一控制。
 
 
 
  • 笔记

    好记性不如烂笔头。

    310 引用 • 794 回帖
  • 字段
    3 引用 • 22 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • feix

    mark 一下总没错

  • 其他回帖
  • ZephyrJung

    博客后台好像确实没有这个设置
    你可以在黑客派的设置里的 B3 选项中,将 B3log Key 删掉来阻止同步
    不过还是希望大牛们多多分享博客到论坛上来呀,这就是 solo&sym 的初衷

  • seanlee
    作者

    下次 CodeReview 我会好好总结一下再发,这次发的都是自己上周总结的,没有太认真的整理,不小心就同步到论坛上了。。。

  • seanlee
    作者

    为什么我的博客会自动同步到黑客派上面来。。。

    1 回复
  • 查看全部回帖

推荐标签 标签

  • 链书

    链书(Chainbook)是 B3log 开源社区提供的区块链纸质书交易平台,通过 B3T 实现共享激励与价值链。可将你的闲置书籍上架到链书,我们共同构建这个全新的交易平台,让闲置书籍继续发挥它的价值。

    链书社

    链书目前已经下线,也许以后还有计划重制上线。

    14 引用 • 257 回帖
  • Access
    1 引用 • 3 回帖 • 2 关注
  • 电影

    这是一个不能说的秘密。

    122 引用 • 608 回帖
  • 安全

    安全永远都不是一个小问题。

    203 引用 • 818 回帖
  • 996
    13 引用 • 200 回帖 • 5 关注
  • Oracle

    Oracle(甲骨文)公司,全称甲骨文股份有限公司(甲骨文软件系统有限公司),是全球最大的企业级软件公司,总部位于美国加利福尼亚州的红木滩。1989 年正式进入中国市场。2013 年,甲骨文已超越 IBM,成为继 Microsoft 后全球第二大软件公司。

    107 引用 • 127 回帖 • 352 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    94 引用 • 901 回帖
  • 音乐

    你听到信仰的声音了么?

    62 引用 • 512 回帖
  • 开源中国

    开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。

    7 引用 • 86 回帖
  • JRebel

    JRebel 是一款 Java 虚拟机插件,它使得 Java 程序员能在不进行重部署的情况下,即时看到代码的改变对一个应用程序带来的影响。

    26 引用 • 78 回帖 • 677 关注
  • 知乎

    知乎是网络问答社区,连接各行各业的用户。用户分享着彼此的知识、经验和见解,为中文互联网源源不断地提供多种多样的信息。

    10 引用 • 66 回帖 • 1 关注
  • MyBatis

    MyBatis 本是 Apache 软件基金会 的一个开源项目 iBatis,2010 年这个项目由 Apache 软件基金会迁移到了 google code,并且改名为 MyBatis ,2013 年 11 月再次迁移到了 GitHub。

    173 引用 • 414 回帖 • 365 关注
  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    289 引用 • 4492 回帖 • 653 关注
  • 酷鸟浏览器

    安全 · 稳定 · 快速
    为跨境从业人员提供专业的跨境浏览器

    3 引用 • 59 回帖 • 47 关注
  • 倾城之链
    23 引用 • 66 回帖 • 162 关注
  • AngularJS

    AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。

    12 引用 • 50 回帖 • 503 关注
  • Follow
    4 引用 • 12 回帖 • 10 关注
  • WebSocket

    WebSocket 是 HTML5 中定义的一种新协议,它实现了浏览器与服务器之间的全双工通信(full-duplex)。

    48 引用 • 206 回帖 • 298 关注
  • 印象笔记
    3 引用 • 16 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 400 关注
  • Solidity

    Solidity 是一种智能合约高级语言,运行在 [以太坊] 虚拟机(EVM)之上。它的语法接近于 JavaScript,是一种面向对象的语言。

    3 引用 • 18 回帖 • 435 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 387 关注
  • JSON

    JSON (JavaScript Object Notation)是一种轻量级的数据交换格式。易于人类阅读和编写。同时也易于机器解析和生成。

    52 引用 • 190 回帖 • 1 关注
  • Quicker

    Quicker 您的指尖工具箱!操作更少,收获更多!

    36 引用 • 155 回帖 • 1 关注
  • 黑曜石

    黑曜石是一款强大的知识库工具,支持本地 Markdown 文件编辑,支持双向链接和关系图。

    A second brain, for you, forever.

    21 引用 • 204 回帖
  • Rust

    Rust 是一门赋予每个人构建可靠且高效软件能力的语言。Rust 由 Mozilla 开发,最早发布于 2014 年 9 月。

    58 引用 • 22 回帖 • 7 关注