结对编程——队友代码分析

此次的个人项目,队友和我均使用了 Java 语言进行编写。当然每个人的思想都是不一样的,所以代码也不同。在实现相同功能的情况下,通过分析队友的代码,期望能够发现我的不足,也期望可以帮助队友进行代码改进。

于是自然,便先从缺点开始写起了。

1,逻辑判断重复

在部分逻辑判断中,有许多代码重复,导致计算机需要进行多余的判断。就比如该代码中针对输入的用户名和密码进行核对的判断函数 UserRight:

 1 static boolean UserRight(String user, int psd) {//针对输入的用户名和密码进行核对
 2     if(user.equals("张三1") && psd == 123) {
 3         pri=1;
 4         System.out.println("当前选择为"+pri_ch+"出题");
 5         return true;
 6     }
 7     else if(user.equals("张三2") && psd == 123) {
 8         pri=1;
 9         System.out.println("当前选择为"+pri_ch+"出题");
10         return true;
11     }
12     else if(user.equals("张三3") && psd == 123) {
13         pri=1;
14         System.out.println("当前选择为"+pri_ch+"出题");
15         return true;
16     }
17     else if(user.equals("李四1") && psd == 123) {
18         jun=1; 
19 ...       

我觉得可以先对密码是否为123进行判断,再判断用户名,尽量减少程序进行判断的次数:

 1 static boolean UserRight(String user, int psd) {//针对输入的用户名和密码进行核对
 2     if (psd != 123) {
 3         return false;
 4     }
 5     else if(user.equals("张三1") || user.equals("张三2") || user.equals("张三3")) {
 6       pri = 1;
 7       System.out.println("当前选择为" + pri_ch + "出题");
 8       return true;
 9     }
10     else if(user.equals("李四1") || ...) {
11       jun = 1;
12 ...

2,变量设置冗余

例如该代码中通过 pri, jun, sen 来分别表示是否应该出小学、初中、高中的题目:

1 public static int pri=0,jun=0,sen=0;

我觉得可以只设置一个变量,然后通过该变量不同的值来表示当前的状态。如此可以增加可读性,同时也可以精简部分代码,减少内存占用(虽说可能微不足道,但即使是1kB的内存空间如果能节省也是要节省的):

1 public static int status = 0;//默认为0,代表小学难度。1代表初中难度,2代表高中难度

3,部分函数设置无必要

就如其中生成符号的一些函数,如果这样生成,完全可以在相应位置通过字符串拼接实现,没有必要设置另外的函数:

1 static String Getbrackl() {//生成左括号
2     String brackl = "(";
3     return brackl;
4 }

4,频繁地对文件进行读写

代码并不是一次性生成算式再写入文件中,而是每生成一个部分就进行一次文件的读写。而磁盘速度是显著慢于 CPU 速度的,频繁进行磁盘读写操作会极大降低程序运行速度:

1 if(j==temp-1) { //最后一个操作数后加上等于号结尾
2     f2.write(Getbrackl());
3     f2.write(GetValue());
4     f2.write(GetSqu());
5     f2.write(Getbrackr());
6     f2.write("=");
7 }...

所以我认为先在程序中设立字符串,再将字符串写入文件中可能会更好一点:

1 if(j == temp - 1) { //最后一个操作数后加上等于号结尾
2     String tmp = Getbrackl() + GetValue() + GetSqu() + Getbrackr() + "=";
3     f2.write(tmp);
4 }...

5,命名问题

代码中有点变量使用了驼峰命名法,有的又使用了匈牙利命名法,有的则命名不严谨。希望可以采用统一的命名方法,在 Java 中我推荐使用驼峰命名法,这也是 Java 语言发明时所使用的命名法。

6,间隔问题?

我建议符号与数字以及字母之间应该空一格,当然这只是我个人的编写习惯,倒也无关紧要。不过在阅读并试图理解大量代码时,这一个空格的盈余能让眼睛舒服不少。

缺点说完了,那么是时候谈谈优点了。

1,代码可读性较高

注释较为完善,如之前的代码示例所示,注释是比较完善的,便于其他人的阅读和理解。其次缩进规范,书写整齐,这些都增加了代码可读性。

2,使用了 Java 的异常处理机制来避免程序出错

在限制用户输入的题目数量时,使用了 Java 的异常处理机制,可谓十分巧妙:

 1 while(true) {//对于生成题目数量进行控制,只有10~30时不会弹出重新输入
 2     try {
 3         num = in.nextInt();
 4         if(num<10 || num>30) {
 5         throw new Exception();
 6     }
 7     }catch(Exception e) {//超出数量,让用户重新输入
 8         System.out.println("请重新输入生成题目数量:(10~30)");
 9         continue;
10     }
11     break;
12 }        

因为受队友所托,便仔细分析了她的代码。前后两小时有余,写下这篇随笔,希望能对其有所裨益。

以上。

转载于:https://www.cnblogs.com/wrin/p/9716029.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ChatGPT结对编程是一种将两个程序员合作编写代码的技术。这种技术可以提高编写代码的效率和质量,同时也可以提高两位程序员的技能水平。以下是ChatGPT结对编程的步骤: 1. 首先,找到一个合适的编程伙伴。最好是一个有一定编程经验的人,但如果你是新手,也可以与另一个新手合作。 2. 确定你们编写的代码项目。你们可以选择一个共同感兴趣的项目或者一个有挑战性的项目。确保你们都对项目有一定的理解。 3. 确定你们的角色。一个人可以担任主要代码编写者,另一个人可以担任代码审核者。这样可以确保代码的质量。 4. 确定编程环境。你们可以使用一个共同的编程环境,如Visual Studio Code或者Atom。也可以使用在线编程环境,如CodePen或JSFiddle。 5. 开始编写代码。一个人负责编写代码,另一个人负责审核代码。在编写代码的过程中,你们可以随时通过聊天工具进行交流和讨论。 6. 定期进行代码审核。定期进行代码审核可以确保代码的质量。你们可以定期的分享代码,并相互审核对方的代码。 7. 完成项目并进行总结。完成项目后,你们可以总结你们的经验和教训,并提出改进建议。这将有助于你们以后更好的编写代码。 总之,ChatGPT结对编程是一种非常有用的技术,可以提高编写代码的效率和质量。通过合作编写代码,你们可以相互学习,相互支持,以及增强你们的编程技能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值