You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

81 lines
3.8 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 天择区块链金融项目 - 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管理数据库版本。