建议统一异常处理,不仅要在日志中打印异常堆栈信息,还得给前端统一格式的响应信息,而不是前端页面直接提示给用户500
首发博客地址[1] 系列文章地址[2] ---- 引自《阿里规约》的开头片段: 现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 2)很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。然而,在任何情况下,这是一个非常不好的做法。 (一) Vue 编码基础 vue 项目规范以 Vue 官方规范(https://cn.vuejs.org/v2/style-guide/)[3] 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范 命名规范采用KebabCase命名规范且与 component 组件名保持一致! 首发博客地址: https://blog.zysicyj.top/ [2] 系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/开发规范
, 比如ad_left01.gif || btn_submit.gif; 在保证视觉效果的情况下选择最小的图片格式与图片质量, 以减少加载时间; 尽量避免使用半透明的png图片(若使用, 请参考css规范相关说明 760X100,750X120,468X60,468X95,728X90,585X140 次级页的pip尺寸360X300,336X280 游标:100X100或120X120 LOGO的国际标准规范
该规范主要参考《谷歌的代码评审指南》 ? 一、开发者 不应该在 CI 内同时包含主要风格的改动与其他代码的修改,这样会导致难以看出 CI 到底做出什么改动 格式化 commit message 优势: 提供更多的历史信息,方便快速浏览; 可以过滤某些 commit 的详细描述,可以分成多行 footer 部分只用于两种情况:1、不兼容变动;2、关闭issue 扩展:如果你使用 IDEA 进行编码,可以是使用 git commit template 插件来规范每次提交的 未来其他开发者接手时,代码是否易于理解与易用? 测试:代码是否经过正确且设计良好的自动化测试 命名:开发人员是否为变量、类、方法等选择了明确的名称? 注释:注释是否清晰有效? 风格:代码是否遵循了代码开发规范 文档:开发人员是否也同步更新了相关文档 在评论前加上“nit:”这样的前缀,表明这是一个优化性的建议,可以不影响本次上线 应在一个工作日内完成评审,并给出意见 评价只针对代码和具体业务流程
七、注释规约 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/ 格式,不得使用 // xxx 方式。
编写目的 本文描述了 JAVA 开发中的有关包、类、接口、方法、实例变量、变量和常量的命名规范,用于规范 JAVA 编程过程中的命名和代码书写规范。 1. 程序代码作为重要的核心内容,有必要遵循统一的书写和编码规范; 2. 在程序设计总体方向上,有必要遵循统一的规范要求进行设计; 3. 遵循规范的要求,能够有效的减少编码过程中的错误; 4. 为了有效的提高程序的可维护性,编码方式需要遵循统一的规范。 适用范围 适用于开发组基于 JAVA 开发的项目。 【推荐】在设计评审阶段,开发人员需要和测试人员一起确定单元测试范围,单元测试最好覆盖所有测试用例(UC)。 14. 本文是开发手册,凡是本文内容都是与开发同学强相关的。 l 单元测试代码是多余的。汽车的整体功能与各单元部件的测试正常与否是强相关的。 l 单元测试代码不需要维护。
那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也方便他人阅读修改代码。 文档规范 HTML5的文档类型声明:<! 修改其它的内建对象比如 Function.prototype,虽危害没那么大,但始终还是会导致在开发过程中难以 debug 的问题,应当也要避免。 'valid' : 'invalid' ---- JSHint 在js规范中,有很多规范都是样式上的规范而不是逻辑上的规范,比如尽量使用=== 而不是==,我们可以使用JSHint或者JSLint,Javascript ---- 使用子选择器 很多前端开发人员写选择器链的时候不使用 直接子选择器(注:直接子选择器和后代选择器的区别)。 有时,这可能会导致疼痛的设计问题并且有时候可能会很耗性能。
会响应对应路由转发过来的 get 请求 func (c *Controller) Get() { ... } 大写字母开头的方法以为着是可供调用的公共方法,如果你的方法想只在本包内掉用,请以小写字母开发
如何规范你的Git commit? 约定式提交 1.0.0
private TextView mSelectCountryNameTv; private TextView mSelectCountryCodeTv; 暂时先写这些,后面补上,我写的不是标准规范 ,大家都可以自己制定一套 适合自己团队用的规范。
使用不带BOM的UTF-8编码 在HTML中指定编码<meta charset="utf-8">; 无需使用@charset指定样式表编码,它默认为UTF-8(参考@charset);
以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id
这是近期在公司做的一次分享,这几年的互联网开发,算比较幸运,团队一直践行完善这套规范,没有太多的阻碍,得益于公司整体氛围,以及团队对规范和写文档的不排斥,形成了良好的开发习惯 在这次分享后,发现好些大 V也在谈规范,写文档,估计是前段时间阿里又发布了开发手册(华山版),借鉴于一下,对一些细节做些补充,整理出来 整体流程 ? 当然瀑布模型也有天生的缺点:每个阶段的严格性,缺乏灵活性,而现实需求却是经常变化的 所以单纯地选择哪个模型是不可取的,只能根据实际情况出发,为业务提供最大化服务 ---- 细则规范 很多人都在要规范,但好像从没思考过为什么需要规范 无规矩不成方圆,无规范难以协同,比如,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全,试想如果没有限速,没有红绿灯,谁还敢上路行驶? 对软件来说,适当的规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方式一起做事,提升协作效率,降低沟通成本。
开发规范对象命名命名规范的对象,是指数据库SCHEMA、表TABLE、字段COLUMN、索引INDEX、约束CONSTRAINTS等【强制】凡是需要命名的对象,其标识符不能超过30个字符【强制】名称必须以英文字母开头 yyyymmdd为后缀,比如 tmp_order_20160425,正常业务用到的临时表、中间表,前后缀尽量不要包含 tmp 以免造成歧义库表设计【强制】生产/UAT环境建库建表,请参考《mysql建库建表规范 禁止在程序端大批量更新或者删除数据,因为这样操作很可能造成复制的大量阻塞和延时,批量归档/删除,可以向dba发邮件提需求,由dba来处理【强制】禁止在生产/线上环境进行代码逻辑或SQL语句性能的测试,这类操作应在开发或者测试环境进行 )来判断是否为NULL值: SELECT IF(ISNULL(SUM(g)), 0, SUM(g)) FROM table;【建议】SQL合并,主要是指的DML时候多个value合并,减少和数据库交互开发行为规范 JOB,业务逻辑在代码层实现【建议】线上不允许使用长事务,慎用set autocommit=0或者begin,推荐使用set autocommit=1,超时5秒的事务,DBA JOB会自动kill线上变更规范
Git 开发规范分支管理策略git flowVincent Driessen 于2010年提出的分支模型,可以说是最早、最全面的分支管理策略了,后续出现的分支管理策略基本都是基于 git flow 进行修改的 这里先要明确几个基本概念master/main:主分支,最终所有需要发布的有效代码都会合并到该分支develop:开发分支,所有开发内容都是基于 develop 分支创建 feature 分支feature hotfix:热修复分支,线上出了紧急 bug,需要专门分支处理从上图可以看出,使用 git flow 开发步骤还是比较多的:从 develop 创建一个 feature 分支开发并自测完 feature 其实,总结下来,一个健全的开发团队的分支管理应该满足以下条件:有一个永远有效、能反应生产部署代码的分支,可以随时发布有一个能持续集成、体现开发进度的分支,能够帮助提早发现集成问题Commit Message commit message 没有绝对的好坏,但是有相对的优劣,一个团队要遵守一致的填写规范。一个好的 commit message 应该要尽可能简洁、保留关键信息。
所有的数据库对象名称必须使用小写字母并用下划线分割(MySQL大小写敏感,名称要见名知意,最好不超过32字符)禁止在数据中存储图片,文件二进制数据(使用文件服务器)禁止在线上做数据库压力测试禁止从开发环境
组件命名规范: 组件名为多个单词,并且用连接线(-)连接,避免与 HTML 标签冲突,并且结构更加清晰。 data created mounted methods filter computed watch 引入组件components规范 default { name:"app", components:{part1,part2,part3}, data(){ return { } } } props规范 created 方法规范 created方法中,el并没有被初始化完成,而data已经被创建,这里可以进行一些数据处理 部分访问权限验证 页面级插件数据初始化 页面默认数据加载,数据初始化 methods 方法规范 命名规范 事件方法以on开头,例如(onNameChange,onUserClick) 使用驼峰命名 词意明确,见词知意 函数中统一使用_self=this来解决this的全局指向问题 部分写作规范
一、基础规范 1) 使用InnoDB存储引擎 2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci 3) 所有表、字段都尽量添加注释 4) 库名、表名、字段名使用小写字母 ,禁止超过32个字符,须见名知意 5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名 二、查询规范 1) SQL语句尽可能简单,大的SQL IN 10) Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表) 11) 禁止单条语句同时更新多个表 12) 事务要尽量简单,整个事务的时间长度不要太长 三、表设计规范 字段很难查询优化,NULL字段的索引需要额外空间,NULL字段的复合索引无效) 6) 表必须有主键,不使用更新频繁的列做主键、尽量不使用字符串列做主键,尽量使用非空的唯一自增键做主键 四、索引设计规范
一、命名规范 库名、表名、字段名必须使用小写字母并采用下划线分割; 库名、表名、字段名禁 止超过32个字符,须见名知意; 库名、表名、字段名支持最多64个字符,统一规范、易于辨识以及减少传输量不要超过 32; 库名、表名、字段名禁止使用MySQL保留关键字; 临时库、临时表名必须以tmp为前缀并以日期为后缀; 备份库、备份表名必须以bak为前缀并以日期为后缀; 二、基本规范 使用 utf8mb4( 5.5.3版本以上支持) 所有表都需要添加注释,单表数据量建议控制在1000万以内; 不在数据库中存储图片、文件等大数据; 禁止在线上做数据库压力测试; 禁止从测试、开发环境直连数据库 ; 三、库表设计规范 禁止使用分区表 MySQL的分区表实际性能不是很好,且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从 %前导的查询,如like“%xxx”,无法使用索引 不使用反向查询,如not in / not like 无法使用索引,导致全表扫描,全表扫描导致bufferpool利用降低 五、字段设计规范
如需独立部署则修改src/setting.js中的请求接口地址,https://您的域名/adminapi 否则无需修改。