• 结对编程


    结对编程

    结对同伴 蒲涛(201831081501)
    github项目地址 (https://github.com/putaotao/WordCount/tree/master)
    同伴作业地址 (https://www.cnblogs.com/simple5960/p/11658401.html)

    PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时
    Planning 计划 2000 1860
    ·Estimate 估计这个任务需要多少时间 2000 1860
    Development 开发 500 600
    ·Analysis 需求分析 100 120
    ·Design Spec 生成设计文档 50 30
    ·Design Review 设计复审(和同事审核设计文档) 20 40
    ·Coding Standard 代码规范(为目前的开发制定合适的规范) 20 40
    ·Design 具体设计 70 60
    ·Coding 具体编码 330 200
    ·Code Review 代码复审 30 30
    ·Text 测试(自我测试,修改代码,提交修改) 30 30
    ·Reporting 报告 30 30
    ·Text Report 测试报告 30 30
    ·Size Measurement 计算工作量 30 30
    ·Postmortem & Process Improvement Plan 事后总结,并提出过程改进计划 30 30
    · 合计 1860 1860

    计算接口与设计实现

    功能分析
    统计文件字符数英文字母和数字字母等,统计字符总数和有效行数,统计单词出现频数,输出排序后的字符。
    解决方法
    先创建一个列表统计行数,然后用字符串存取字符,再过滤掉可能出现的回车空行等无效的空白行和无效字符用word[]链表存储字符产dic{}统计有效字符,之后用rank链表进行排序,统计词频数最后输出。具体思路和实现过程在代码里有注释。

    代码复审

    本次结对编程是和同学一起完成,因为两个人想法不同,编码水平差异也大,并没有各编各的代码再合并到一起,而是一起商量着一起做的,在同伴那里学到了很多。

    with open("content.txt", "r", encoding='UTF-8') as f:
        # 方便读取行数
        content = f.readlines()
        f.seek(0, 0)
        # 方便读取字符数
    
        content1 = f.read()
        # 过滤掉空白字符
        r = list(filter(lambda x: x != "" and x != "
    ", content))
        # 过滤掉空白字符
        r1 = content1.replace(" ", "").replace("
    ", "")
    
        length = len(r)              # 有效行数
        length1 = len(r1)             # 有效字符数
    
        print("行数为", length)
        print("字符数为", length1)
    
        word = []
    
        # 去掉每行末尾的换行符,并且通过空格分割为单个字符串
        for i in r:
            if i.find("
    ") != -1:
                i = i.replace("
    ", "")
            word.extend(i.split(" "))
    
        dic = {}
        count = 0
        # 过滤掉不合条件的字符串,并且将符合的字符串加入字典统计次数
        for i in word:
            if i.isalnum() and len(i) >= 4:
                # 符号条件的字符串计数
                count += 1
                if i in dic:
                    dic[i] = dic[i] + 1
                else:
                    dic[i] = 1
    
        print("单词数为", count)
    
        rank = []
        for i in dic:
            rank.append(dic[i])
    
        rank = sorted(rank, reverse=True)
    
        maxwords = []
    
        flag = False
        for i in rank:
            if flag:
                break
            for j in dic:
                if i == dic[j] and (j not in maxwords):
                    maxwords.append((j ,dic[j]))
                    # 数量足够就跳出多层循环
                    if len(maxwords) == 10 or len(maxwords) == len(dic):
                        flag = True
                        break
    
        print(maxwords)
    

    运行截图如下:

    结对过程

    心得与体会

    目前就我自己以及室友的体会,一个人写代码的效率要比两个人的要高,首先是心理上嘛,大家都能偷懒就偷懒一起的时候就是推来推去,然后分开的话,别人写的代码,超过200行的基本是不太想看的(即便有注释),还有一个问题就是对需求的分析能力没有那么高,在对接之前给了这样的接口,可能到后面发现还需要其他的东西,导致中间修改有点麻烦,然后大家思考问题的角度不太一样然后交流也做的不够好,我这边符号用int型0 1 2 3代表,而他那边直接存char型+ - x /,也属于对接上的问题吧,总得来说吧,感觉这个结对编程是很有意义的,可以说是对后面团队编程的一个铺垫吧,现在遇到的问题可能到后面就会注意一点,然后自己也确实自学了不少东西。总得来说就是对需求的分析还要更全面一点,多多交流,分工合作,这样才能事半功倍,要不然就是事倍功半。我们的结对编程项目实现过程差不多就是这样,过程中遇到了各种各样的问题,尝试着一一解决,总体来说学到了很多很多。这次合作也是从队友那里学到了不少,合作还是十分愉快的,非常感谢队友对我的帮助!

  • 相关阅读:
    DataTable.Load技巧,多结果集查询
    sql编写小技巧
    最近学习记录
    分享layui的table的一些小技巧,前端分页
    WTM框架在开发过程中如何动态迁移表和创建表
    .net core cookie滑动过期设置
    在使用DapperExtensions时遇到"其他信息: ConnectionString 属性尚未初始化。"错误
    在域环境中客户端三次输入密码错误锁定方法(原创)
    共享打印机提示0x000006cc的解决方法
    win10 1909版本用ultraISO做启动U盘,写入只有1g不到
  • 原文地址:https://www.cnblogs.com/simple5960/p/11658401.html
Copyright © 2020-2023  润新知