团队编码规范

1代码风格

1.1缩进
  1. 代码缩进要求:4个空白符;
  2. 所有块状结构都要求缩进,switch语句缩进要合理;
  3. 坚持一致原则,维护同事的代码时,应该保持原有的编码风格;
1.2空格
  1. 注释符两边的空白符必不可少;
  2. 任何保留字与紧随其后的左括号之间要有一个空格;
  3. 任何保留字与其前面的右大括号之间要有一个空格;
  4. 在任何二元或三元运算符的两侧必须有空格;
  5. 一元运算符与操作对象之间不允许有空格;
  6. , 及右括号 ) 后必须空格
  7. 数组初始化中,大括号内的空格是可选的;
  8. 行尾不得有多余的空格;
  9. 代码的水平对齐可以不做;
1.3空行
  1. 类内连续成员之间,必须有1个空行;
  2. 类内的第一个成员前或最后一个成员后的空行是可选的;
  3. 没有必要添加多个连续的空行;
  4. 在函数体内,语句的逻辑分组间可使用空行;
1.4换行
  1. 项目中推荐100为字符个数的列限制;

  2. 自动换行的基本准则是:更倾向于在更高的语法级别处断开;

  3. 如果在非赋值运算符(±*/)处断开,那么在该符号前断开;

  4. 如果在赋值运算符(==)处断开,通常的做法是在该符号后断开

  5. 自动换行时函数名与左括号留在同一行;

  6. 自动换行时逗号与前面的内容留在同一行;

  7. 自动换行时第一行后的每一行至少比第一行多缩进4个空格;

  8. 对于非空块、大括号遵循Kernighan和Ritchie风格(Egyptian brackets)

    • 左大括号前不换行,在左大括号后换行;
    • 右大括号前换行,如果右大括号是一个语句、函数体或类的终止;否则不换行。例如,如果右大括号后面是else或逗号,则不换行。
  9. **函数的返回值不可以用括号包住,**会降低代码可读性

    # good
    return count + 100;
    # bad
    return (count + 100);
    

2命名

2.1通用命名
  1. 代表完全相同意义的命名必须相同;如果一个变量在不同的地方代表的意义完全相同,那么不管是用在前端、后端、数据库表名、字段名等,请务必起相同的名字;

  2. 良好的命名应该能顾名思义,不需要解释;

    # good
    int(student_count)	# 学生数量
    # bad
    int(count) # 学生数量
    
  3. 谨慎使用缩略词,不常见的缩略词会大大降低代码的可读性;避免缩写,除非该缩写是众所周知的,如HTML、URL等;

  4. 命名应该是简短且有意义的。

2.2编程语言中的命名
  1. 类名、接口名以UpperCamelCase风格编写;

    class IndexHandler():
        pass
    
  2. 类名使用名词或名词短语;

  3. 接口使用RESTfull设计分格;

  4. 测试类的命名以它要测试的类的名称开始,以Test结束;

  5. 方法名以lowerCamelCase风格编写

    def function():
        pass
    
  6. 建议方法名使用动宾短语,也可以使用动词;

  7. 常量名以CONSTANT_CASE风格编写;

  8. 减少代码中的硬编码,代码中不允许出现直接硬编码的字面常量,尤其是重复出现的硬编码;你需要做的是将硬编码定义成常量;如果常量在一个类中用到,则在类中定义,否则可以在公共类中定义常量。

  9. 常量必须用常量修饰符修饰;

  10. 非常量字段名以lowerCamelCase风格编写;

  11. 参数名以lowerCamelCase风格编写,参数应该避免使用单字符进行命名,除了临时变量和循环变量;

  12. boolean类型的变量命名以ishas开头;

  13. 集合、数组类型的变量,常用名词复数。

3注释

  1. 单行注释使用 #,多行注释使用”“” chars “”“
  2. 块注释与其周围的代码在同一缩进级别;
  3. 禁止没有意义的注释;很多时候,判断一句注释是不是废话还跟开发者水平有关;
  4. 注释一般不包含语言本身的语法、语言内置的API的说明、第三方类库(如Spring等)某个函数的用法的说明;不懂的去看相应的开发文档;
  5. 对整段代码进行注释说明,而不是逐行注释;
  6. 只进行必要的注释,注释不是越多越好;
  7. 对编写的比较Trick的代码做注释,方便他人理解。

4语言特性

4.1变量
  1. 每次只声明一个变量;

  2. 需要时才声明,并尽快进行初始化;

    不要在一个代码块的开头把局部变量一次性都声明了,而是在第一次需要使用它时才声明;局部变量在声明时最好就进行初始化,或者声明之后尽快进行初始化;

    变量声明与使用的距离越远,代码的阅读与维护成本就越高;

    从优化方面讲,这样做也是有好处的;

  3. 尽量使用局部变量;

  4. 变量在真正需要的时候才开始创建。

4.2语句
  1. 一行最多一个语句;
  2. 禁止连续赋值;连续赋值不仅影响可读性,而且很多时候容易出错;
  3. 避免深层嵌套;多级嵌套降低了代码的可读性;
  4. 使用大括号,即使大括号是可选的
  5. 如果函数或全局中的else块后没有任何语句,可以删除else
  6. 避免在循环中重复获取长度;
  7. 嵌套循环将小循环写在外层;
  8. 避免在循环中做耗时的工作。
4.3函数
  1. 函数的长度控制在50行以内,太长的函数难以维护;关于一个函数的规范行数没有统一标准,40行、60行都行;
  2. 函数的参数控制在6个以内。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值