네 번째 작업 - 자매 결연 사업

1. 결과 팀 멤버 블로그

블로그 주소

표 2. 코드 검토

2.1 회원 : 리우
중요성 활성화 수평 점검 항목
합계
이름
중요 (20) 사양을 채택하여 이름 지정 규칙이 일치?
(20) 당신은 정보의 최대의 최소 길이의 원칙을 따르나요?
중요 (50) / / 함수는 부울을 반환할지 여부를 접두사 수있다?
주의
중요 (10) 필요한 경우 명확하고 노트?
중요 (10) 프로세스가 복잡한 분기 코멘트되었는지?
(10) } 먼은 이미 주석이 되었습니까?
(10) 제네릭이 아닌 변수에 상관없이 모든 의견은?
중요 (50) 함수는 문서 주석이있는 경우? (함수 입력, 리턴 및 기타 옵션)
(10) 주석의 특별 사용 여부?
문, 빈, 들여 쓰기
(20) 한 줄 여부는 변수를 선언? (특히 그 종류가 잘못 될 수 있습니다)
중요 (40) 변수가 동시에 초기화 된 경우 정의?
중요 (40) 클래스 속성 초기화가 수행되는지 여부?
(20) 코드가 제대로 빈 줄로 구분 단락되면?
(20) 더 명확하게 프로그램을 만들기 위해 공간을 사용하는 것이 합리적인지 여부?
(20) 라인 길이의 요구 사항을 내?
(20) 랩이 적합?
성명 / 함수 분포 / 스케일
(20) {만약} 문은 쌍과 준수의 화합물을 포함?
(20) 여부 단일 루프에, 조건문도 추가 {}?
(20) 준수 / IF-다른 / IF-다른 사람이있는 경우 - 다른 / 할-동안 / 형식 스위치의 경우 if 문?
(40) 단일 사용은 하나의 변수 여부?
중요 (20) 단일 한 방식으로 기능하는 경우? (사용하지 마십시오 멀티 라인 통합)
중요 (40) 단일 기능의 이름으로 개인의 기능과 일치 여부?
(20) 연산자 ++와 - - 복잡한 사양은 응용 프로그램의 운영자입니다?
규모
중요 (20) 단일 기능은 라인의 지정된 수를 초과하지 않는 이유는 무엇입니까?
중요 (100) 수준을 들여 쓰기하면 지정된를 초과하지 않는 이유는 무엇입니까?
중요 (100) 그것은 모든 경고를 제거했다?
중요 (40) 상수 변수는 final로 선언?
중요 (80) 객체는 사용하기 전에 조사되었다 여부?
중요 (80) 여부는 사용하는 로컬 개체 변수 후 NULL로 재설정됩니다?
중요 (70) 이 안전한지 여부의 배열에 액세스? (의 유효 인덱스 값 [0 MAX_SIZE-1]).
중요 (20) 당신은 반드시 지역 변수는 문제를 정의하는 같은 이름의 반복이있다 없다?
(20) 프로그램이 단순한 표현을 사용하는지 여부?
중요 (20) ()에 의해 여부는 연산자 우선 순위는 명확히?
중요 (20) 모든 결정하는 데 사용되는지 여부를 형상 (일정한 == 변수)?
(80) 여부 서스펜션의 흐름을 제거?
중요 (80) 각각의 경우-다른 경우-else 문이 다른 마지막 하는가는 확인 프로세스가 완료 작품 것을한다?
중요 (80) 모든 마지막 스위치의 경우 문이 전집을 보장하기 위해 기본 처리를 가지고 있습니까?
(80) for循环是否都使用了包含下限不包含上限的形式?(k=0; k<MAX)
重要 40 XML标记书写是否完整,字符串的拼写是否正确?
40 对于流操作代码的异常捕获是否有finally操作以关闭流对象?
20 退出代码段时是否对临时对象做了释放处理?
重要 40 对浮点数值的相等判断是否是恰当的?(严禁使用==直接判断)
可靠性(函数)
重要 Y 60 入口对象是否都被进行了判断不为空?
重要 Y 60 入口数据的合法范围是否都被进行了判断?(尤其是数组)
重要 Y 20 是否对有异常抛出的方法都执行了try...catch保护?
重要 Y 80 是否函数的所有分支都有返回值?
重要 50 int的返回值是否合理?(负值为失败,非负值成功)
20 对于反复进行了int返回值判断是否定义了函数来处理?
60 关键代码是否做了捕获异常处理?
重要 60 是否确保函数返回CORBA对象的任何一个属性都不能为null?
重要 60 是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?
重要 60 是否对同步对象的遍历访问做了代码同步?
重要 80 是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?
重要 60 线程处理函数循环内部是否有异常捕获处理,防止线程抛出异常而退出?
20 原子操作代码异常中断,使用的相关外部变量是否恢复先前状态?
重要 100 函数对错误的处理是恰当的?
可维护性
重要 100 实现代码中是否消除了直接常量?(用于计数起点的简单常数例外)
20 是否消除了导致结构模糊的连续赋值?(如a= (b=d+c ))
20 是否每个return前都要有日志记录?
20 是否有冗余判断语句?(如:if (b) return true; else return false;)
20 是否把方法中的重复代码抽象成私有函数?
2.2 成员:段应官
重要性 激活 级别 检查项
总计
命名
重要 20 命名规则是否与所采用的规范保持一致?
20 是否遵循了最小长度最多信息原则?
重要 50 has/can/is前缀的函数是否返回布尔型?
注释
重要 10 注释是否较清晰且必要?
重要 Y 10 复杂的分支流程是否已经被注释?
10 距离较远的}是否已经被注释?
10 非通用变量是否全部被注释?
重要 Y 50 函数是否已经有文档注释?(功能、输入、返回及其他可选)
10 特殊用法是否被注释?
声明、空白、缩进
20 每行是否只声明了一个变量?(特别是那些可能出错的类型)
重要 40 变量是否已经在定义的同时初始化?
重要 40 类属性是否都执行了初始化?
20 代码段落是否被合适地以空行分隔?
Y 20 是否合理地使用了空格使程序更清晰?
20 代码行长度是否在要求之内?
20 折行是否恰当?
语句/功能分布/规模
20 包含复合语句的{}是否成对出现并符合规范?
20 是否给单个的循环、条件语句也加了{}?
20 if/if-else/if-else if-else/do-while/switch-case语句的格式是否符合规范?
40 单个变量是否只做单个用途?
重要 20 单行是否只有单个功能?(不要使用;进行多行合并)
重要 40 单个函数是否执行了单个功能并与其命名相符?
Y 20 操作符++和— —操作符的应用是否复合规范?
规模
重要 20 单个函数不超过规定行数?
重要 100 缩进层数是否不超过规定?
重要 100 是否已经消除了所有警告?
重要 40 常数变量是否声明为final?
重要 80 对象使用前是否进行了检查?
重要 80 局部对象变量使用后是否被复位为NULL?
重要 70 对数组的访问是否是安全的?(合法的index取值为[0, MAX_SIZE-1])。
重要 20 是否确认没有同名变量局部重复定义问题?
20 程序中是否只使用了简单的表达式?
重要 Y 20 是否已经用()使操作符优先级明确化?
重要 Y 20 所有判断是否都使用了(常量==变量)的形式?
80 是否消除了流程悬挂?
重要 80 是否每个if-else if-else语句都有最后一个else以确保处理了全集?
重要 80 是否每个switch-case语句都有最后一个default以确保处理了全集?
80 for循环是否都使用了包含下限不包含上限的形式?(k=0; k<MAX)
重要 40 XML标记书写是否完整,字符串的拼写是否正确?
40 对于流操作代码的异常捕获是否有finally操作以关闭流对象?
20 退出代码段时是否对临时对象做了释放处理?
重要 40 对浮点数值的相等判断是否是恰当的?(严禁使用==直接判断)
可靠性(函数)
重要 Y 60 入口对象是否都被进行了判断不为空?
重要 Y 60 入口数据的合法范围是否都被进行了判断?(尤其是数组)
重要 Y 20 是否对有异常抛出的方法都执行了try...catch保护?
重要 Y 80 是否函数的所有分支都有返回值?
重要 50 int的返回值是否合理?(负值为失败,非负值成功)
20 对于反复进行了int返回值判断是否定义了函数来处理?
60 关键代码是否做了捕获异常处理?
重要 60 是否确保函数返回CORBA对象的任何一个属性都不能为null?
重要 60 是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?
重要 60 是否对同步对象的遍历访问做了代码同步?
重要 80 是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?
重要 60 线程处理函数循环内部是否有异常捕获处理,防止线程抛出异常而退出?
20 原子操作代码异常中断,使用的相关外部变量是否恢复先前状态?
重要 100 函数对错误的处理是恰当的?
可维护性
重要 100 实现代码中是否消除了直接常量?(用于计数起点的简单常数例外)
20 是否消除了导致结构模糊的连续赋值?(如a= (b=d+c ))
20 是否每个return前都要有日志记录?
20 是否有冗余判断语句?(如:if (b) return true; else return false;)
20 是否把方法中的重复代码抽象成私有函数?

3. 结对编程

3.1 代码编写基本规范

变量命名规范

命名规则:力求做到统一、达意和简洁,驼峰法则,符合标识符规则。

包名:使用小写字母如 com.learn不要 com.Learn
类名:首字母大写,如TextDemo,不要textdemo

变量:知名见意,小写字母,多个单词下划线,如:数量用int num ,如:累计用int count,如学生年龄用studentAge

方法名:首字母小写,如 addOrder() 不要 AddOrder(),动词在前,如 addOrder(),不要orderAdd()

静态变量名:public static final int num=3;

注释规范

  • 注释宜少二精,不宜多而滥。
  • 命名达意,结构清晰, 类和方法等责任明确,往往不需要,或者只需要很少注释,就可以让人读懂。
  • 不能正确表达代码意义的注释,只会损害代码的可读性。
  • 过于详细的注释,对显而易见的代码添加的注释,罗嗦的注释,还不如不写
  • 尽量避免在注释中使用缩写,特别是不常用缩写。
  • 注释的位置应与被描述的代码相邻,可以放在代码的上方或右方,不可放在下方。
  • 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
  • 块级别注释,单行用//,多行用/* */。

代码块格式

缩进风格,大括号的开始在代码块开始的行尾,闭合在和代码块同一缩进的行首,例如:

for(int i=0; i<10; i++){
    count++;
}

空行的使用,将一组操作放在一起,不同操作用空行隔开,如定义类时:

class A {
    int b=10;
    
    void show();
  
}
不能
class A {
    int b=10;
    void show();
}
3.2 结对编程感受

首先我们先了解一下什么是结对编程,看一下百度百科讲的,结对编程是一种敏捷软件开发的方法,就是两个人在一个电脑敲代码,一个人写代码,一个人看着他写代码,并且检查它的代码,提出修改的意见,想想以后能出现啥问题,及时的修补漏洞,这个比驾驶员累点,输入代码的人叫驾驶员,看着的人叫观察员,你也可以叫他导航员,有时候还会交换角色,就是驾驶员累了当一会观察员,观察员累了当会驾驶员,再进行了好几个小时的结对编程,我发现了一些好处,但是也有一些不足之处,下面我对它们进行了一些总结:

优点:

  • ​ 能力互补——互相帮助能够快速弥补知识的不足来达到我们编码能力的互补。
  • ​ Bug减少——两个人编码减少bug出现,增加代码的强壮性。
  • ​ 节约时间——边编程,边学习,共享知识,降低学习成本,节约时间。
  • ​ 问题处理——相互讨论,可能更快更有效地解决问题。

不足:

  • ​ 矛盾——对于有不同习惯的编程人员,可以在起工作会产生麻烦。
  • ​ 效率——两个人在一起工作可能会出现工作精力不能集中的情况,更容易闲聊。
  • ​ 习惯——对一个代码的问题各执己见,争吵不休,浪费时间。

最后总结来说,优点大于不足,对于好处了来说就不用多说了,对于不足之处么,两个人意见不统一很正常,关键是看结对伙伴之间此时如何协调、沟通、采纳,把这个问题处理好了,那就很完美了。

3.4 结对编程照片

结对编程

4. 结对编程要求

4.1 Github 地址

github仓库地址

github结对readme

4.2 增加需求

(a)考虑数据异常处理问题,如在输入题目生成范围的数据时,输入了“abc“等字符数据,程序如何处理。

(b)增大算式生成数的范围(如整数存不下的数),程序如何处理。

추천

출처www.cnblogs.com/mosicise/p/11722409.html