结对编程——队友代码分析
Posted skyrim-zero
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了结对编程——队友代码分析相关的知识,希望对你有一定的参考价值。
队友使用的是c++语言,IDE用得是VS2015。下面开始进行优缺点的分析。
优点:①严格按照代码规范,分文件进行模块的分类。整个工程一共有8个文件,Login.h,Login.cpp,Subject.h,Subject.cpp,User.h,User.cpp,UsersTable.h,main.cpp,类的声明在几个头文件中,然后再在另一个文件中对类中的方法进行具体实现。比如login类:
#pragma once
#include"User.h"
using namespace std;
class Login {
public:
User login_verify();//验证登录并返回用户学历
private:
string isInAccounts(User *user);//要登录的是否在用户表中
};
#include"Login.h"
#include"UsersTable.h"
#include<iostream>
#include<vector>
using namespace std;
User Login::login_verify()
{
string name, password;
cout << "输入用户名和密码,两者之间用空格隔开" << endl;
cin >> name >> password;
User *user=new User(name, password);
string grade= isInAccounts(user);
while ("null" == grade)
{
name.clear(); password.clear();
cout << "请输入正确的用户名、密码,两者之间用空格隔开" << endl;
cin >> name >> password;
user->setName(name); user->setPassword(password);
grade = isInAccounts(user);
}
User user2(name, password,grade);
delete user;
return user2;
}
string Login::isInAccounts(User *user)//判断此用户是否在用户表中
{
string ans = "null";
for (int i = 0; i < UsersNum; i++)
{
if (user->getName() == users[i].getName() && user->getPassword() == users[i].getPassword())
{
ans = users[i].getGrade();
user->setGrade(users[i].getGrade());
cout << "登录成功"<< endl;
break;
}
}
return ans;
}
变量与类的命名也符合规范,在适合的地方写了注释,易读性比较高。
②在生成题目的主要函数中,大量采用了goto条件跳转,一方面提高了代码的维护性,而且逻辑更为清晰,bug出现的概率更小。
③操作逻辑清晰,用户体验较好。
缺点:①括号的位置随机,有可能产生没有意义的括号,比如将一个数字或者全部式子括了起来,没有进行判断。
总结:
总体来说我觉得队友的代码写得很规范,条理清晰,我也学到了许多写代码方面需要注意的,受益匪浅。
以上是关于结对编程——队友代码分析的主要内容,如果未能解决你的问题,请参考以下文章