当前位置: 首页 > news >正文

【有来开源组织】开发规范手册

🚀 作者主页: 有来技术
🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot
🌺 仓库主页: Gitee 💫 Github 💫 GitCode
💖 欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请纠正!

目录

    • 前言
    • Java 代码规范
      • 命名规范
        • 包名
        • 类名
        • 实体名
        • 组件包名
        • 泛型通配符
      • 参数规范
        • 动态排序字段命名
        • 分页参数命名
        • 查询参数
      • 方法规范
        • 方法命名
        • 方法调用
        • 方法体
      • 数据库规范
        • 字段规范
        • 索引命名
    • Vue 代码规范
      • Vue.js 风格指南
      • 组合式 API 顺序
    • CSS 规范
      • CSS 命名(BEM)
    • Git 规范
      • 提交规范
      • 分支功能
      • 版本号命名规则
    • 参考

前言

为了确保代码的一致性、可读性和可维护性,并提高团队协作效率,我们有来开源组织制定了一套详细的开发规范。本指南涵盖了Java、CSS、Vue.js等多种编程语言和框架的编码标准,以及Git的使用规范。这些规范基于行业最佳实践和我们在实际项目中的经验总结,旨在为开发人员提供一个清晰、统一的编码标准,帮助每个成员编写高质量的代码。

Java 代码规范

命名规范

包名
  • 规则说明:统一使用单数形式,全小写。
  • 示例com.example.service
类名
  • 规则说明:可以使用复数形式,首字母大写+驼峰命名。
  • 示例UserServices
实体名
名称规则
dto远程调用传参
form前端表单传参
query查询传参 (查询参数大于5个建议封装query对象)
vo返回前端显示 (可使用dto代替)
entity映射数据库实体,和数据表字段完全一致

规则说明dtovo 实体类名带后缀且全大写。

  • 正例UserDTOUserVO
  • 反例UserDtoUserVo
组件包名
  • 规则说明:组件包父包,包括listener,handler等。
  • 示例com.example.component
泛型通配符
名称规则
EElement (在集合中使用,因为集合中存放的是元素)
TType(Java 类)
KKey(键)
VValue(值)
NNumber(数值类型)
表示不确定的Java类型
S、U、V2nd、3rd、4th types

参数规范

动态排序字段命名
名称字段名
排序字段名orderBy列名
排序规则sort升序:asc 降序:desc
分页参数命名
名称字段名默认值
页码pageNum1
每页数量pageSize10
查询参数
  • 规则说明:查询参数大于5个建议封装为query对象。

方法规范

方法命名
作用域示例
列表查询getUserList / listUsers / getUsers
分页查询getUserPage / listPagedUsers
单个查询getUser / getUserDetail / getUserInfo
方法调用
  • 规则说明:禁止Service跨实体直接调用Mapper。
  • 正例UserService 直接调用 UserMapper
  • 反例UserService 直接调用 DeptMapper
方法体
  • 规则说明:单个方法体不建议超过50行或一屏,超过建议封装。

数据库规范

字段规范
  • 是与否概念is_xxx使用is前缀意义更加明确,考虑兼容性、扩展性和移植性建议类型为tinyint而非bit
  • 必有字段idcreate_timeupdate_time
索引命名
类型规则
普通索引idx_cloumn_name
唯一索引uk_cloumn_name

Vue 代码规范

Vue.js 风格指南

  • 参考:Vue.js 风格指南

组合式 API 顺序

<script setup>// import语句import { ref, computed, watch } from 'vue';// Props(defineProps)defineProps(['propA', 'propB']);// Emits(defineEmits)const emit = defineEmits(['update', 'delete']);// 响应式变量定义const count = ref(0);// Computedconst doubleCount = computed(() => count.value * 2);// Watcherwatch(count, (newValue, oldValue) => {console.log(`Count changed from ${oldValue} to ${newValue}`);});// 函数function increment() {count.value++;}// 生命周期onMounted(() => {console.log('Component mounted');});//Expose(defineExpose)defineExpose({ count, increment });
</script>

CSS 规范

CSS 命名(BEM)

  • 规则说明:遵循BEM命名法,保证类名的可读性和结构化。
  • 示例block__element--modifier

Git 规范

提交规范

  • 参考:Vue 规范 (Angular)
    • feat 增加新功能
    • fix 修复问题/BUG
    • style 代码风格相关无影响运行结果的
    • perf 优化/性能提升
    • refactor 重构
    • revert 撤销修改
    • test 测试相关
    • docs 文档/注释
    • chore 依赖更新/脚手架配置修改等
    • workflow 工作流改进
    • ci 持续集成
    • types 类型定义文件更改
    • wip 开发中,临时提交

分支功能

  1. master 为主分支
    • 原则只接受从develop的合并请求,不接受pr
  2. develop 为开发分支
    • 接受pr和feature的合并
  3. feature/* 为功能开发分支
    • 由开发人员提交代码并合并到develop分支
    • 不定期从develop分支合并到master,每次合并到master上为发一次版本,版本号应当调整

版本号命名规则

  • 主版本号.子版本号.修正版本号
    • 项目初版本时,版本号为 0.1.0
    • 局部修改或bug修正时,主版本号和子版本号不变,修正版本号加1
    • 增加部分功能时,主版本号不变,子版本号加1,修正版本号复位为0
    • 重大修改时,主版本号加1

参考

  • 阿里开发手册
    • 阿里巴巴 Java 开发手册(黄山版)
    • 阿里巴巴 Java 开发手册项目主页

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【开端】 进行页面升级或维护时不影响用户体验NGINX配置
  • 影像设备国产替代究竟有多重要?这家企业提前布局8K时代
  • object.defineProperty用法
  • 开放式耳机的优缺点有什么?本文为你讲解推荐一下!
  • encodeURI 确保特殊字符能够正确传输
  • 告别手动记录,音频转文字软件助力会议记录新高度
  • 【Android 设备上的所有相关 WiFi 命令和使用方法】
  • 【架构设计】安全架构设计
  • SpringBoot优雅的封装不同研发环境下(环境隔离)RocketMq自动ack和手动ack
  • Python爬虫—常用的网络爬虫工具推荐
  • 3.服务注册_服务发现
  • 口语笔记——非谓语动词
  • 【代码随想录训练营第42期 Day38打卡 - 动态规划Part6 - LeetCode 322. 零钱兑换 279.完全平方数 139.单词拆分
  • MyBatis-Plus联表查询(mybatis-plus-join)
  • 1.ftp简介
  • Google 是如何开发 Web 框架的
  • [译] React v16.8: 含有Hooks的版本
  • Date型的使用
  • Javascript 原型链
  • Java比较器对数组,集合排序
  • js继承的实现方法
  • leetcode386. Lexicographical Numbers
  • python学习笔记 - ThreadLocal
  • sessionStorage和localStorage
  • 聊聊hikari连接池的leakDetectionThreshold
  • 通信类
  • 一道闭包题引发的思考
  • 用Canvas画一棵二叉树
  • 阿里云移动端播放器高级功能介绍
  • ​Java基础复习笔记 第16章:网络编程
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • # 消息中间件 RocketMQ 高级功能和源码分析(七)
  • #### go map 底层结构 ####
  • ${ }的特别功能
  • (C语言)逆序输出字符串
  • (Python) SOAP Web Service (HTTP POST)
  • (南京观海微电子)——I3C协议介绍
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (算法)Game
  • (小白学Java)Java简介和基本配置
  • (原)本想说脏话,奈何已放下
  • (转)shell调试方法
  • .DFS.
  • .net CHARTING图表控件下载地址
  • .NET 命令行参数包含应用程序路径吗?
  • .net 验证控件和javaScript的冲突问题
  • .net/c# memcached 获取所有缓存键(keys)
  • .NET/C# 避免调试器不小心提前计算本应延迟计算的值
  • .NET成年了,然后呢?
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • @我的前任是个极品 微博分析
  • [ IO.File ] FileSystemWatcher
  • [1]-基于图搜索的路径规划基础
  • [5] CUDA线程调用与存储器架构