发表于: 2017-06-20 21:42:06

4 1186


【说明】今天上午看了培宇师兄的java代码规范,下午再次对IDEA 里面的操作熟悉了一下,晚上建了一个ssm项目

一:今日完成

⒈ task1—1 : java代码规范

  ⑴ 技能点 1 : 手敲目录(如果看到一个目录都能够说出点什么就更好了)

Java 开发流程

1 代码规范

1.1 项目命名规范 

1.2 包命名规范 

1.3 目录约定

1.4 model

1.5 dao

1.6 cache

1.7 interface

1.8 util

1.9 constant

1.10 MVC

1.11 code style

1.12 Service Test 实现约定

1.13 Quartz?(这是定时任务,比如定时扫描商品的抢购时间)

1.14 其它实现约定

1.15 抛出异常的约定

1.16 日志记录

1.18 其它建议

1.19 程序注释的建议

1.20 http 接口定义

1.21 参数验证

1.22 日期

1.23 错误信息

1.24 Service 实现

1.25 SVN 的TAG 和 Branch 约定

2.数据库规范

2.1 选择字段类型并保持统一

2.2 频繁查询、稀疏度高 加 索引

------------------

  ⑵ 技能点 2 : 大致总结


svn提交 需要写备注 和禅道编号(bug#111,task#111,story#111)

constant: 常量类

使用 @Transient 扩展 Model 中和 DB 里对应不到的字段?

直接使用 Dao 的 Count 方法


Dao 不包含业务逻辑,只提供简单的 CRUD 和读取 List

避免使用 Java 自己的 Cache。尽量使用 Memcache。


尽量依赖接口类型,不要直接依赖具体实现,具体实现在 spring 注入的时候才知道

接口实现类中的每一个接口的实现,尽量不包含,或者是少包含私有方法,可以将私有方法转换成 Util 类来实现?

在调用其他的方法之前,要弄清楚这个方法的实现逻辑是否符合自己的情况,并且需要检查此方法是否做了必要的参数检查,以确保所有的情况都能返回预期的结果


有同时取 List 数据和取单个数据的需求时,建议参数传递设定为 List,而不是仅仅是 tring,不建议直接提供两种不同的接口

抽取出公共的 StaticUtil(CommonsUtil)

尽可能的使用 Constant,不要在 Java 代码里写汉字或者是数字。

不要在 Service 层和 Controller 层对数据做太多的展示形式的加工. 使用 Jsp 或者是 Tag 或者是交付给前端工程师做 Model 的展现形式处理


对于关键操作要记录参数和调用信息的日志

在最初捕捉到或抛出异常的地方记录日志,日志的内容包括:参数信息和异常的堆栈信息


建议项目发布完成之后时刻追踪和观察 Stagging 和 Online 的日志,确保出现的问题能在第一时间被发现和解决?


Long 是 8 个字节. Date 是 32 个字节, Long 占用更少的内存, 转成其它格式更方便. 因此关于日期的存储, 请使用 Long, 而不是 Date

如果在 Jsp 里需要显示时间格式, 请丰富并使用我们自己的 Jsp-Tag

基本原则是每张表对应一个 Serivce. 可以适当减少 Service 的数目, 但是一定要保证 Service 功能的高内聚.


Service 负责提供一种服务 (注意不是一个完整的功能), 基本上也是一张表对应一个 Service. 只负责在自己提供的 Service 范围内功能的完整性. 

:Controller 负责在不同的 Service 之间调用. 通过对 Service 的调用获取 Model, 并对 Model 做简单的变换, 再交给 View 层 (Jsp 或 Flex) 

------------------

  ⑶ 技能点 3 :里面的疑难点 

取 List<Object>,先取 IDS,再通过 MultiGet 的方法取 Object?

尽量不要使用 New 来创建对象 (除了 Java 内置对象和系统中的 Model 对象?),而是使用 Spring 来做依赖注入

当一个模块里包含多个功能的时候, 以功能 (而不是以模块) 为依据去创建多个 Controller??


不要超过三层以上的 IF 嵌套,如果遇到这种情况可以用方法重构的方式来避免?

不要在 for 循环里添加 new 不会更改的对象的操作,会造成资源的浪费?

对于 Service 本身的 Test,建议使用 Lookup 的方式来获取服务器上运行的服务,并调用其方法来进行测试?

对于 Controller 中依赖的 Service 的 Test,建议直接从 Spring 容器中取得实现了此 Service 接口的 SpringBean,并调用其方法进行测试?


可以使用 Spring Quartz 的时候, 尽可能的使用 Quartz 来管理任务的调度?

可以有多个 Service(和业务逻辑相关),如:ReportMetaService,ReportRankService,ReportStatisticsService 等?


如果接口不允许参数为 null,但传入的参数为 null 时不必抛出异常,只要记录错误日志,并返回空值或者 false 就可以了?

如无必要, 不需要打出 List/BigModel 的详细信息, 仅列出 Size 和 ID 即可?

建议在各自的系统中留有一个可以在线,不当机调整参数的接口,使用 Admin 来控制参数?

只允许和必须抛出 ServiceException 和 ServiceDaoException 两种异常,不允许抛出其他种类的异常?


参数验证和业务处理的逻辑分开??


1. 问题:需要对多表连接查询的结果做分页处理

   解决方案:用冗余表在相关的写操作的时候存储需要多表连接查询得到的结果,然后对冗余表做操作??


对于最常用的 Service 组合, 可以提供一个 CompositeService 来做 Serivce 的组合处理. ?

Service 的实现逻辑要简单清晰. 通常在十行以内. ?


加日志不要引入异常?

------------------

⒉  task1—2 : IDEA里面建立 web module

  ⑴ 技能点 1 : 建立 project 

------------------

  ⑵ 技能点 2: 建立 web module 

------------------

  ⑶ 技能点 3 : tomcat 配置

---------------

⒊ task1—3 ssm 项目

  ⑴ 技能点 1 :  目录结构

------------------

  ⑵ 技能点 2 : 实现功能

在页面中展示商品列表。

------------------

  ⑶ 技能点 3 : github 管理

通过 idea 里面的github菜单进行代码的上传和更新

------------------

二:明日计划

明天因为时间充足(or 有限),打算完成

①数据库代码规范

------------------

②进复盘的PPT和邮件

------------------

③ 小课堂准备

------------------

三:疑难问题

四:思考总结

Ⅰ 对自己今天的进度满意吗

------------------一般般,,,

Ⅱ 那些困扰自己的问题所在   

------------------ IDEA 换过来之后不太熟悉

Ⅲ 暗示自己为明天加油打劲

------------------进复盘!进复盘!进复盘!



返回列表 返回列表
评论

    分享到