结对项目解读-队友代码解析

既然是两两一组天然是找室友搭档是最方便的了。因而在看到结对编程的时候就已经和室友商量好要搭档合做了。(固然也是为了抱住大腿)java

在语言方面,搭档用的是Java语言,而我用的是C++,两我的所用语言不一样,可是在结对编程的要求中要求作页面,一对比就很明确知道仍是要靠搭档了。因此也主要分析一下搭档的代码方便后期结对编程在她的代码基础上进行更改提升。编程

 

首先是一个自我反思的过程,经过对她的代码的解读发现不少需求是我觉得我完成了实际上我并无成功达成需求。并且不少状况的产生不够随机,仍是有些尴尬的。代码表面上显示的仿佛是都作到了,也随机出题随机产生了,可是相比较脑内活动,仍是有不少状况不在考虑范围内的。而她的实现就比较彻底了,在分析她的代码的时候仍是比较有感觉的。函数

 

那么,接下来就是主要针对她的代码的解析了。布局

 


 

 

首先,在阅读搭档的代码时有几点建议,感受这个是她作的不是很完善的地方(固然,我也在这几点中有作的不完善的状况)。学习

    1. 她在生成文本文档时,没有生成文件夹的操做,而是直接在主函数中肯定了路径而后存入。也就是说若是我没有预先为每一个老师设置好文件夹的话这个就会报错。在这个方面程序的扩展性不够。
      1.  1 public class AutoQuizSystem {
         2 
         3     /**
         4      * 当前用户的存储路径 path
         5      */
         6     // 需根据实际状况修改路径
         7     static String path = "D:\\hi girl\\湖大\\做业\\大三上\\软件工程导论\\1班-李畅\\1班-李畅\\Quiz\\";
         8 
         9     public static void main(String[] args) {
        10         // TODO Auto-generated method stub
        11         /**
        12          * 运行程序,用户登陆。
        13          */
        14         new Login();
        15     }
        16 
        17 }

        可是,她这里包含建立文件操做。咱们能够在后期对代码进行修改时经过查阅资料等方式,将文件夹也由代码建立出来。ui

      2.  1 String fileName = now.get(Calendar.YEAR) + "-" + (now.get(Calendar.MONTH) + 1) + "-"
         2                 + now.get(Calendar.DAY_OF_MONTH) + "-" + now.get(Calendar.HOUR_OF_DAY) + "-" + now.get(Calendar.MINUTE)
         3                 + "-" + now.get(Calendar.SECOND) + ".txt";
         4 
         5         /**
         6          * 建立新文件,用于存储题目
         7          */
         8         File file = new File(AutoQuizSystem.path + Login.name[Login.i], fileName);
         9         if (!file.exists()) {
        10             try {
        11                 file.createNewFile();
        12             } catch (IOException e) {
        13                 e.printStackTrace();
        14             }
        15         }

         

    2. 她在运算时首先判断这个的密码是不是123,也就是将登录密码所有设置为123,没有考虑更多其他状况。虽然是因为老师所给的需求文档里全部人的密码状况都是123,可是这样子的设置在后期设置中会致使不少问题,也加大了对代码的修改程度,是否能够运用容器等,姓名和密码分别处于一个容器,而后容器的初始长度相同,在加入的途中判断存储姓名的容器中对应的名字和存储密码的容器中对应的密码是否相互匹配。(固然,我在设置时是直接运算的,也就是直接用判断语句生成的 PS:在和她探讨的过程当中有了新的想法,也许咱们能够用一个类存储用户名和密码,而后用容器存储这个类。也是一个方案。
      1. 1 if (psw.equals("123")) { //type表示当前用户的等级,name中存储9个教师状况
        2                     for (i = 0; i < 9; i++) {
        3                         if (usr.equals(name[i])) {
        4                             if (i < 3)
        5                                 type = "小学";
        6                             else if (i < 6)
        7                                 type = "初中";
        8                             else
        9                                 type = "高中";

         

    3. 搭档的代码功能基本都可以实现,可是有一个问题,就是她的注释不是不少,对每个功能的注释也不是很明确。寥寥几处注释,主要是介绍了这个函数的功能等,具备针对性的注释不是不少。可是却也有部分缘由,咱们后文细说~  
    4. 在具体代码方面,本次文档所写的需求较多,须要的功能函数也比较全面,可是仔细看搭档的函数会发现她的函数进行了合并——有一些功能比较简单的函数就直接与其余功能的函数合并了,在后期修改的过程当中较为麻烦。

一律而论的话,搭档的代码大致状况很好,可是在部分方面可扩展性不够强。后期若是增添更多需求或者别的方案的话代码的修改幅度较大。spa

 


 

 

固然,瑕不掩瑜。在学习搭档代码的过程当中仍是学到了不少也了解了不少的。设计

    1. 搭档在编写代码时考虑较多,想法也比较全面。看到她直接作了界面就能够感慨了。不愧是作了n次pm的人,果真很懂需求。固然,也感谢搭档作了界面,按键等功能,在结对编程时就能够有所依据,有必定基础与打底了。
    2. 在写代码时,搭档写了几个.java为后缀的文件,不一样的文件控制不一样的窗口及功能,确实是感受到了其中的逻辑性与布局的合理性。
    3. 接下来就是上文中留的悬念了,搭档在写代码时注释不是不少,可是运用了大量的Java自带API,这样也能够大大提升代码的可移植性。(就是对像我这种不是很熟悉API的人是一种折磨,为了读懂代码须要查不少API的功能啥的)
       1 /**
       2      * 构造函数
       3      * 
       4      * 功能实现:生成登陆窗口(用户名输入、密码输入、登陆键)。
       5      */
       6     public Login() {
       7         setTitle("自动出题系统");
       8         setLayout(null);
       9         Container c = getContentPane();
      10         JLabel username = new JLabel("用户名:");
      11         final JTextField un = new JTextField();
      12         JLabel password = new JLabel("密码:");
      13         final JPasswordField pw = new JPasswordField();
      14         pw.setEchoChar('*');
      15         JButton login = new JButton("登陆");

       

    4. 在设置初高中出题过程当中,搭档的随机方案较好,在每一处设置随机值,在其中安插一些须要的函数。而且设置每个功能块的计数操做,若是从头至尾没有初中必备(开根或者平方)或高中必备(tan,sin,cos函数)操做,则在最后为其随机产生一个位置放入操做。这些方法都利于一些特殊状况的操做。也正是我在最初所说,经过阅读搭档的代码更能明确本身代码的缺陷,找到本身代码的不足。
    5. 用户出题级别较为多变。在每一次出题后用户均可以从新选择本身的出题类型。这样子也方便用户随时更改本身须要的等级。这个设计也是比较让我佩服的。我当时在分析这个需求的时候就比较懵逼,不太懂这个需求的具体意思,可是看完搭档的代码以及运算演示后更加感受本身对需求的理解不到位,在实现过程当中仍是有不少问题。

 

 


 

 

最后,在小小的分析以后固然是要总结一下这个结对编程中代码复审过程的意义所在啦~code

    1. 经过审核搭档的代码,反而对本身的代码更是一种反思,明确了本身在写代码过程当中的种种不足,也在分析对方代码的过程当中明确了一些本身没发现的不足之处与可改进之处
    2. 审核对方的代码,其实也是对本身代码的一种审核:她实现的功能我实现了吗?她在这里是这样实现的,那我呢?咱们两个的实现方式谁的更好一点?这些需求咱们的不一样理解不一样实现谁会更加贴近于用户的需求?种种问题更是一种自我反思,在不断地自我反思中咱们也会不断进步。
    3. 三人行,必有我师焉。两人前行,更能相互鼓励共同前行。相互对比,共同讨论,一个问题的解决方案会有不少,一我的或许只能想出来一点,两我的一块儿考虑可能就会想出一个更完美的解决方式策略。这也许就是结对的魅力所在。
    4. 搭档之间相互diss,相互表扬,更能知道本身的不足,明确本身的优点所在,在将来的发展过程当中更能取己精华去己糟粕。这样才能不断进步不断前行。
    5. 一样也要感谢本身的搭档啊,没有他们的diss咱们可能都发现不了本身的一些失败与不足(而后还自觉得本身是成功的,恩,好比我)。
相关文章
相关标签/搜索