|
|
|
|
# 天择区块链金融项目 - README
|
|
|
|
|
|
|
|
|
|
## 开发规范
|
|
|
|
|
|
|
|
|
|
### 1. Git版本控制
|
|
|
|
|
|
|
|
|
|
- 使用Git进行版本控制,确保每个功能或修复都有对应的分支。
|
|
|
|
|
- 主分支命名为 `master`,开发分支为 `develop`,bug修复分支以 `fix/` 为前缀。
|
|
|
|
|
|
|
|
|
|
### 2. 项目结构
|
|
|
|
|
|
|
|
|
|
- 项目结构遵循标准的Maven,将不同的模块拆分为子模块,如 `central`、`core`、`persistence` 等。
|
|
|
|
|
- central模块包含项目的核心配置,如Spring配置、接口controller、工具类代码、入参出参实体等。
|
|
|
|
|
- core模块包含项目的核心业务逻辑,如用户管理、资产管理、交易管理等,既是DDD设计模式的领域层:一个功能模块抽取为一个领域。
|
|
|
|
|
- persistence模块包含项目的数据访问层,如MyBatis的Mapper接口和XML文件、数据库配置等。
|
|
|
|
|
|
|
|
|
|
### 3. DDD设计模式
|
|
|
|
|
|
|
|
|
|
- 严格遵循领域驱动设计(DDD)原则,将领域对象、值对象、聚合根等概念反映在代码中。
|
|
|
|
|
- 将领域逻辑放置在领域模型中,尽量避免在服务层处理过多的业务逻辑。
|
|
|
|
|
|
|
|
|
|
### 4. RESTful API设计
|
|
|
|
|
|
|
|
|
|
- 设计清晰、简洁的RESTful API,使用有意义的URI和HTTP方法。
|
|
|
|
|
- 采用标准的HTTP状态码,返回合适的错误信息和成功消息。
|
|
|
|
|
- 考虑使用版本号控制API,如 `/v1/`。
|
|
|
|
|
|
|
|
|
|
### 5. 安全性
|
|
|
|
|
|
|
|
|
|
- 使用Spring Security来管理身份验证和授权。
|
|
|
|
|
- 对敏感数据进行适当的加密和保护。
|
|
|
|
|
- 防止常见的Web安全漏洞,如SQL注入、跨站脚本攻击(XSS)等。
|
|
|
|
|
|
|
|
|
|
### 6. 测试
|
|
|
|
|
|
|
|
|
|
- 编写单元测试和集成测试,覆盖核心业务逻辑。
|
|
|
|
|
- 使用合适的测试框架,如JUnit或TestNG。
|
|
|
|
|
- 考虑使用模拟框架,如Mockito,来模拟依赖。
|
|
|
|
|
|
|
|
|
|
## 代码规范
|
|
|
|
|
|
|
|
|
|
### 1. 命名规范
|
|
|
|
|
|
|
|
|
|
- 使用有意义的、一致性的命名,遵循驼峰命名法。
|
|
|
|
|
- 类名、接口名使用大驼峰命名法,如 `UserService`。
|
|
|
|
|
- 方法名、变量名使用小驼峰命名法,如 `getUserById`。
|
|
|
|
|
- 常量名使用全大写,下划线分隔,如 `MAX_RETRY_COUNT`。
|
|
|
|
|
|
|
|
|
|
### 2. 注释和文档
|
|
|
|
|
|
|
|
|
|
- 使用清晰的注释,解释方法、类和重要逻辑的功能和用法。
|
|
|
|
|
- 使用JavaDoc注释,为类、方法提供详细文档。
|
|
|
|
|
|
|
|
|
|
### 3. 代码结构
|
|
|
|
|
|
|
|
|
|
- 将相关功能放在合适的包中,避免类过于庞大。
|
|
|
|
|
- 使用包、类的结构来反映领域模型和逻辑关系。
|
|
|
|
|
- annotation:系统切面文件。全局日志切面管理及接口权限控制文件.
|
|
|
|
|
- config:系统配置文件。全局配置文件,包括数据库配置、redis配置、swagger配置、spring配置等.
|
|
|
|
|
- controller:系统接口文件。接口文件,包括用户接口、资产接口、交易接口等.
|
|
|
|
|
- exception:系统异常文件。异常文件,包括自定义异常、全局异常处理等.
|
|
|
|
|
- mapper:系统数据访问文件。数据访问文件,包括用户数据访问、资产数据访问、交易数据访问等.
|
|
|
|
|
- service:系统服务文件。服务文件,包括用户服务、资产服务、交易服务等.
|
|
|
|
|
- util:系统工具文件。工具文件,包括加密工具、日期工具、随机数工具等.
|
|
|
|
|
- swagger:系统接口文档文件。接口文档文件,包括接口文档配置、接口文档实体等.
|
|
|
|
|
- third:系统第三方文件。第三方文件,包括第三方接口、第三方工具等.
|
|
|
|
|
|
|
|
|
|
### 4. 异常处理
|
|
|
|
|
|
|
|
|
|
- 为不同的异常情况创建合适的自定义异常类,提供有意义的异常信息。
|
|
|
|
|
- 在合适的位置捕获异常,避免不必要的异常抛出。
|
|
|
|
|
|
|
|
|
|
### 5. 日志
|
|
|
|
|
|
|
|
|
|
- 使用日志框架,如Logback或Log4j,记录关键信息和错误。
|
|
|
|
|
- 根据日志级别,将日志信息分为不同的级别,如DEBUG、INFO、WARN、ERROR。
|
|
|
|
|
|
|
|
|
|
### 6. 数据访问
|
|
|
|
|
|
|
|
|
|
- 使用MyBatis等持久化框架,将SQL语句与Java代码分离。
|
|
|
|
|
- 使用数据库迁移工具,如Flyway或Liquibase,管理数据库版本。
|