• 作业20170928—1代码规范,结对要求


    要求1 《代码规范》包括10项条款。制定条款的目的是在程序设计的过程中(触犯和)约束代码风格,希望切实可行,容易观察和客观检验。

    比如, 每个函数不超过5行,对于初学者是不切实际的; 大括号匹配纵列对齐,是切实可行的; 变量名易读,是不易检验的,变量名必须是名词短语,遵循匈牙利命名法,是易于检验的。 (10分)

    1.大括号匹配纵列对齐。

    2.为避免代码长度过长需要断行造成难以阅读的问题,规定每行只写一条语句。

    3.如何处理缩进问题?当遇到有关命名空间、类、结构、函数、以及枚举等等复杂程序结构的定义的时候,需要将它的内容缩进一层。

    4.如何取变量名?规定变量名的取名原则是:变量名=属性+类型+对象描述,其中每一对象的名称都要求有明确含义,可以取对象名字全称或名字的一部分。

    5.使用空行分隔代码块。

    6.分行定义变量。

    7.不能使用连续的两个或多个空格。

    8.注释要写在函数的上方,注释不能跟代码写在同一行。

    9.每个代码文件要有一个相对应的readme文档说明。

    10.编程原则是先确定代码结构,写出框架再逐步分模块进行填充。

    (这是我自己对于代码风格的初步设想,最终版需要跟partner一起敲定)

    最终与结对编程的小伙伴冉华同学确定了最终的代码规范,如下:

    开始时间: 2017年10月3日 上午9时35分
    结束时间: 2017年10月3日 11时22分22秒
    1.    格式
    A.    代码行数
    (1)    代码文件不超过500行
    (2)    函数的行数不超过50行
    B.    换行
    (1)    函数与函数之间空一行
    (2)    函数内部变量声明与函数内部逻辑代码之间空一行
    (3)    函数内部不同逻辑代码之间空一行
    C.    大括号
    “{”和“}”必须单独在一行上,且上下对齐。
    D.    缩进
    代码缩进一致使用Tab实现,规定Tab键宽度为4个字符,不建议使用空格进行缩进。
    E.    空格
    (1)    函数参数列表中不同参数之间应该用一个空格分开,即逗号后面应跟一个空格。如:
    void updateData(int source, int target)
    (2)    for循环中表达式之间应该用一个空格分开,即分号后面应跟一个空格。如:
    for(exp1; exp2; exp3)
    (3)    操作符与操作数之间应该用一个空格分开,一元操作符(例如自增“++”,自减“--”等)与操作符不作此限定。如:
    a += b + c;
    ++a;
    2.    命名
    变量主要分为类的公有和私有变量,方法的参数变量与内部使用的临时变量。
    A.    变量的名称由多个名词单词或一个名词单词组成时,第一个单词首字母小写,其他单词首字母均大写。如makeRule。
    B.    对于const常量,所有单词均大写,且单词之间由下划线”_”连接,如APP_NAME。
    C.    函数名称的第一个单词为小写的动词。如isValidExp(表达式是否合法)。
    D.    变量名和函数名能够表达它所具有的实际含义。如函数名isValid表示返回值是否合法,res表示是返回值。
     
    E.    尽量避免单词缩写,即便它可能是众所周知的。
    3.    注释
    A.    只用采用“//”作为注释符
    B.    注释的位置
    (1)    注释在被注释函数定义的顶部
     
    (2)    注释在函数内部变量声明的右边
     
    (3)    注释在函数内部逻辑代码的顶部
     
    C.    注释的内容
    (1)    代码的功能
     
    (2)    对读者阅读代码时可能产生的疑问做解释,比如,该段代码使用了堆栈,为什么需要堆栈而并非数组,在此处代码部分给出注释

    git地址:https://coding.net/u/Dawnfox/p/f4/git/tree/master/doc

    要求2 记录完成本周作业过程中,《代码风格规范》执行情况。包括记录每一条规则的违反和纠正、次数,规范中某项条款的增强、消弱、或废除。在编码过程中完全未被违反的条款,说明过于宽松,或你们已经完全"本能"反应,不应作为条款,在本要求及要求1中不得分。此种情况,应补充一条新的条款。 (20分)

  • 相关阅读:
    python初级 0 出发吧
    10 个免费的服务器监控工具推荐
    Nginx 的线程池与性能剖析
    Java中 Comparator接口 与Comparable 的区别
    ORACLE分区表、分区索引详解
    搜索引擎爬虫蜘蛛的USERAGENT大全
    ios和android的发展前景比较
    DES、3DES、AES加密方式
    jsp、freemarker、velocity区别详解
    面向对象五大原则(SRP、OCP、LSP、DIP、ISP)
  • 原文地址:https://www.cnblogs.com/yuanyue-nenu/p/7620057.html
Copyright © 2020-2023  润新知