0622 公司项目 CodeReview 问题及总结

本贴最后更新于 2516 天前,其中的信息可能已经时移世异
 
后台代码部分
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来进行统一控制。
 
 
 
  • 笔记

    好记性不如烂笔头。

    306 引用 • 780 回帖
  • 字段
    3 引用 • 22 回帖

相关帖子

欢迎来到这里!

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

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

    其实这个分享一下也挺好的

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

  • seanlee
    作者

    嗯,我总结的知识自己和同事在各自业务上代码编写存在的问题,所以原本只是记录在自己博客里面回头查看的,不小心同步到论坛上了 😂

  • yangyujiao

    很好很好。
    后台部分,基本上都符合我们现在写的东西.
    14,我更喜欢用 set,以前的时候喜欢用 beancopy,后来发现坑太多,就换回了 set 了···
    7,用 idea 的好处就是,如果你 new 了,会提示你那是没有用的。然后删掉就好。
    6,异常处理我们也用枚举类型,
    c617347888f142ab933c8df124aa38dd-image.png

    886294bfa18b4190a8fcaa436b19ec97-image.png

    1 回复
  • 查看全部回帖

推荐标签 标签

  • ZeroNet

    ZeroNet 是一个基于比特币加密技术和 BT 网络技术的去中心化的、开放开源的网络和交流系统。

    1 引用 • 21 回帖 • 591 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    49 引用 • 192 回帖
  • Ubuntu

    Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的 Linux 操作系统,其名称来自非洲南部祖鲁语或豪萨语的“ubuntu”一词,意思是“人性”、“我的存在是因为大家的存在”,是非洲传统的一种价值观,类似华人社会的“仁爱”思想。Ubuntu 的目标在于为一般用户提供一个最新的、同时又相当稳定的主要由自由软件构建而成的操作系统。

    123 引用 • 168 回帖
  • Sandbox

    如果帖子标签含有 Sandbox ,则该帖子会被视为“测试帖”,主要用于测试社区功能,排查 bug 等,该标签下内容不定期进行清理。

    375 引用 • 1217 回帖 • 580 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    35 引用 • 35 回帖
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    539 引用 • 3528 回帖
  • Electron

    Electron 基于 Chromium 和 Node.js,让你可以使用 HTML、CSS 和 JavaScript 构建应用。它是一个由 GitHub 及众多贡献者组成的活跃社区共同维护的开源项目,兼容 Mac、Windows 和 Linux,它构建的应用可在这三个操作系统上面运行。

    15 引用 • 136 回帖 • 3 关注
  • 导航

    各种网址链接、内容导航。

    37 引用 • 168 回帖 • 3 关注
  • InfluxDB

    InfluxDB 是一个开源的没有外部依赖的时间序列数据库。适用于记录度量,事件及实时分析。

    2 引用 • 57 关注
  • Angular

    AngularAngularJS 的新版本。

    26 引用 • 66 回帖 • 511 关注
  • jsDelivr

    jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。

    5 引用 • 31 回帖 • 50 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 9 关注
  • Spring

    Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。

    941 引用 • 1458 回帖 • 138 关注
  • OpenStack

    OpenStack 是一个云操作系统,通过数据中心可控制大型的计算、存储、网络等资源池。所有的管理通过前端界面管理员就可以完成,同样也可以通过 Web 接口让最终用户部署资源。

    10 引用 • 2 关注
  • 新人

    让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
    新手上路,请谨慎驾驶!

    51 引用 • 226 回帖 • 1 关注
  • Spark

    Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。

    74 引用 • 46 回帖 • 549 关注
  • 服务器

    服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

    124 引用 • 580 回帖
  • FFmpeg

    FFmpeg 是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

    22 引用 • 31 回帖 • 2 关注
  • C++

    C++ 是在 C 语言的基础上开发的一种通用编程语言,应用广泛。C++ 支持多种编程范式,面向对象编程、泛型编程和过程化编程。

    106 引用 • 152 回帖 • 2 关注
  • SEO

    发布对别人有帮助的原创内容是最好的 SEO 方式。

    35 引用 • 200 回帖 • 27 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 93 关注
  • B3log

    B3log 是一个开源组织,名字来源于“Bulletin Board Blog”缩写,目标是将独立博客与论坛结合,形成一种新的网络社区体验,详细请看 B3log 构思。目前 B3log 已经开源了多款产品:SymSoloVditor思源笔记

    1083 引用 • 3461 回帖 • 281 关注
  • 前端

    前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。

    247 引用 • 1347 回帖
  • Redis

    Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value 数据库,并提供多种语言的 API。从 2010 年 3 月 15 日起,Redis 的开发工作由 VMware 主持。从 2013 年 5 月开始,Redis 的开发由 Pivotal 赞助。

    284 引用 • 247 回帖 • 162 关注
  • 知乎

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

    10 引用 • 66 回帖
  • flomo

    flomo 是新一代 「卡片笔记」 ,专注在碎片化时代,促进你的记录,帮你积累更多知识资产。

    4 引用 • 88 回帖 • 5 关注
  • 音乐

    你听到信仰的声音了么?

    59 引用 • 509 回帖