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