建议统一异常处理,不仅要在日志中打印异常堆栈信息,还得给前端统一格式的响应信息,而不是前端页面直接提示给用户500
首发博客地址[1] 系列文章地址[2] ---- 引自《阿里规约》的开头片段: 现代软件架构的复杂性需要协同开发完成,如何高效地协同呢? 必须优先使用 ES6,7 中新增的语法糖和函数。 必须强制使用 ES6, ES7 的新语法,比如箭头函数、await/async , 解构, let , for...of 等等 1.5.6 括号 下列关键字后必须有大括号(即使代码块的内容只有一行) (一) Vue 编码基础 vue 项目规范以 Vue 官方规范(https://cn.vuejs.org/v2/style-guide/)[3] 中的 A 规范为基础,在其上面进行项目开发,故所有代码均遵守该规范 首发博客地址: https://blog.zysicyj.top/ [2] 系列文章地址: https://blog.zysicyj.top/categories/技术文章/后端技术/系列文章/开发规范
该规范主要参考《谷歌的代码评审指南》 ? <BLANK LINE>
, 比如ad_left01.gif || btn_submit.gif; 在保证视觉效果的情况下选择最小的图片格式与图片质量, 以减少加载时间; 尽量避免使用半透明的png图片(若使用, 请参考css规范相关说明 760X100,750X120,468X60,468X95,728X90,585X140 次级页的pip尺寸360X300,336X280 游标:100X100或120X120 LOGO的国际标准规范
String item = iterator.next(); 4 if (删除元素的条件) { 5 iterator.remove(); 6 } 7 list.add("2"); 4 for (String item : list) { 5 if ("1".equals(item)) { 6 list.remove(item); 7 七、注释规约 【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用/*内容/ 格式,不得使用 // xxx 方式。
编写目的 本文描述了 JAVA 开发中的有关包、类、接口、方法、实例变量、变量和常量的命名规范,用于规范 JAVA 编程过程中的命名和代码书写规范。 1. 程序代码作为重要的核心内容,有必要遵循统一的书写和编码规范; 2. 在程序设计总体方向上,有必要遵循统一的规范要求进行设计; 3. 遵循规范的要求,能够有效的减少编码过程中的错误; 4. 为了有效的提高程序的可维护性,编码方式需要遵循统一的规范。 适用范围 适用于开发组基于 JAVA 开发的项目。 说明:如果JDK7及以上,可以使用try-with-resources方式。 7. 【强制】不要在finally块中使用return。 本文是开发手册,凡是本文内容都是与开发同学强相关的。 l 单元测试代码是多余的。汽车的整体功能与各单元部件的测试正常与否是强相关的。 l 单元测试代码不需要维护。
那阅读起来就是苦不堪言,所以,一些基本的开发规范是必须的,是为了自己方便阅读代码,也方便他人阅读修改代码。 不推荐: (function(log){ 'use strict'; var arr = [10, 3, 7, 9, 100, 20], sum = 0, i; ' + sum) }(window.console.log)); 推荐(函数式编程): (function(log) { 'use strict'; var arr = [10, 3, 7, 修改其它的内建对象比如 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; 暂时先写这些,后面补上,我写的不是标准规范 ,大家都可以自己制定一套 适合自己团队用的规范。
KEYS arrayrn" 2、所有key,必须在1个slot上,否则直接返回error, "-ERR eval/evalsha command keys must in same slotrn" 7、
这是近期在公司做的一次分享,这几年的互联网开发,算比较幸运,团队一直践行完善这套规范,没有太多的阻碍,得益于公司整体氛围,以及团队对规范和写文档的不排斥,形成了良好的开发习惯 在这次分享后,发现好些大 V也在谈规范,写文档,估计是前段时间阿里又发布了开发手册(华山版),借鉴于一下,对一些细节做些补充,整理出来 整体流程 ? 当然瀑布模型也有天生的缺点:每个阶段的严格性,缺乏灵活性,而现实需求却是经常变化的 所以单纯地选择哪个模型是不可取的,只能根据实际情况出发,为业务提供最大化服务 ---- 细则规范 很多人都在要规范,但好像从没思考过为什么需要规范 ,只需要修改版本号,但测试可能需要一些回归量,尤其常出现的包冲突,造成日志不能正常输出 7、非功能需求 接口在日常和大促时的调用量评估,是否有降级方案,灰度方案,能不能重试,需不需要压测,这些都是围绕服务治理做预案 这其实是个很大的模块,很多已经深入骨髓,变成常态,比如灰度,现在都是7*24小时在线服务的,前后版本的兼容必须考虑到 总结 当然这些并不是必须的,可以根据实际情况变通,有增有减;当然你也可能从不写文档
使用不带BOM的UTF-8编码 在HTML中指定编码<meta charset="utf-8">; 无需使用@charset指定样式表编码,它默认为UTF-8(参考@charset);
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 应该要尽可能简洁、保留关键信息。
开发规范对象命名命名规范的对象,是指数据库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线上变更规范
所有的数据库对象名称必须使用小写字母并用下划线分割(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的全局指向问题 部分写作规范
一、命名规范 库名、表名、字段名必须使用小写字母并采用下划线分割; 库名、表名、字段名禁 止超过32个字符,须见名知意; 库名、表名、字段名支持最多64个字符,统一规范、易于辨识以及减少传输量不要超过 32; 库名、表名、字段名禁止使用MySQL保留关键字; 临时库、临时表名必须以tmp为前缀并以日期为后缀; 备份库、备份表名必须以bak为前缀并以日期为后缀; 二、基本规范 使用 utf8mb4( 5.5.3版本以上支持) 所有表都需要添加注释,单表数据量建议控制在1000万以内; 不在数据库中存储图片、文件等大数据; 禁止在线上做数据库压力测试; 禁止从测试、开发环境直连数据库 ; 三、库表设计规范 禁止使用分区表 MySQL的分区表实际性能不是很好,且管理维护成本较高 拆分大字段和访问频率低的字段,分离冷热数据 用HASH进行散表,表名后缀使用十进制数,下标从 %前导的查询,如like“%xxx”,无法使用索引 不使用反向查询,如not in / not like 无法使用索引,导致全表扫描,全表扫描导致bufferpool利用降低 五、字段设计规范
一、基础规范 1) 使用InnoDB存储引擎 2) 数据库字符集使用UTF8,校对字符集使用utf8_general_ci 3) 所有表、字段都尽量添加注释 4) 库名、表名、字段名使用小写字母 ,禁止超过32个字符,须见名知意 5) 非唯一索引以 “idx_字段1_字段2” 命名,唯一索引必须以 “uniq_字段1_字段2” 命名 二、查询规范 1) SQL语句尽可能简单,大的SQL 等非等值操作符(会导致用不到索引) 5) Where条件里不要对列使用函数(不会引用索引) 6) 能确定返回结果只有一条时,使用limit 1(LIMIT分页注意效率,LIMIT越大,效率越低) 7) IN 10) Where字句中同一个表的不同字段组合建议小于5组(否则考虑分表) 11) 禁止单条语句同时更新多个表 12) 事务要尽量简单,整个事务的时间长度不要太长 三、表设计规范 单个字段不要超过两个索引 3) 新建的唯一索引必须不能和主键重复 4) 避免冗余和重复索引 5) 尽量不要在频繁更新的列上建立索引 6) 不在低基数列上建立索引,例如状态、类型等 7)
前言 开发规范的目的是保证统一项目成员的编码风格,并使代码美观,每个公司对于代码的规范也不尽相同,希望该份规范能给大家起到借鉴作用。。 命名中出现缩略词时,缩略词要么全部大写,要么全部小写,以首字母大小写为准,通用缩略词包括 JSON、URL 等;如class IDUtil {}、func idToString() { } 不要使用不规范的缩写 self 的有效性 使用委托和协议时,避免循环引用,定义属性的时候使用 weak 修饰 工具 SwiftLint 工具 提示格式错误 SwiftFormat 工具 提示并修复格式错误 两者大部分格式规范都是一致的 ,少许规范不一致,两个工具之间使用不冲突,可以在项目中共存。 相关规范 Swift 官方 API 设计指南 Google 发布的 Swift 编码规范