博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结对编程之效能分析
阅读量:4512 次
发布时间:2019-06-08

本文共 3913 字,大约阅读时间需要 13 分钟。

作业要求:

项目git地址:
第一次用博客园,而此篇文章是在csdn上写的,没有写出博客园的风格,所以排版别扭的可以查看

作业简介

  • step0-输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位
  • step1:输出单个文件中的前 N 个最常出现的英语单词。
  • step2: 支持 stop words
  • step3: 我们想看看常用的短语是什么, 怎么办呢?
  • step4: 把动词形态都统一之后再计数。
  • step5: 统计动介短语出现的频率
  • 效能分析

guideline

我们收到assigment后,便约了时间,一起讨论了这次的guideline,一直按照这个guideline进行

如何合作

此次结对编程,我们前期独立实现每步的功能,每天晚上19:00-22:30进行讨论,一是确保自己程序的正确性;二是交换各自的idea; 三讨论接下来的工作,与自己的感受。 后期我们整合了一个程序,三个人对其进行测试与效能分析,测试的结果写到腾讯的共享文件里,bug解决后 可以在后面标注已解决,不用删。

编程语言

由于我们三人中,2个人擅长python,2个人了解c/c++,加之人生苦多,我用python,同时为了更快的开发。So我们的开发环境:

  • 系统: win10
  • 语言:python
  • IDE:pycharm2017

    代码风格

    我们的代码命名使用
  • 普通变量名:一个或多个单字连结在一起,首字母以小写开头,每个单词首字母大写(第一个单词除外)。
    例如: (注释是为了更好地说明命名规则,实际注释风格并非如此)
    python wordsCountsDict #存放词频的字典,key为单词,value为频率
  • 全局变量:一个或多个单字连结在一起,开头为为g_,每个单词首字母大写(第一个字母除外)。
    例如:
    python g_wordsCountsDict #存放词频的字典的全局变量
  • 函数名/类名: 一个或多个单字连结在一起,每个单词首字母大写
    例如:
    python def CountLetters(): #用来统计字母的频率的函数 class WordCount(object):
  • 注释风格
    • 函数的说明
      写明函数名称,功能输入,输出,作者,日期。
    ####################################################################################Name:StopWordProcessing()#function:Remove the words from the "stopwords.txt"#input: dict2List : A list transformed by a dict whose keys are words and values are frequencies# ouput: listProcs : A list after removing stopwords#Author: Enoch#Date:2018.10.22###################################################################################
    • 某行注释
      注释在某行行末
    wordsCounts = StopWordProcessing(wordsCounts)  # Remove the words from the "stopwords.txt"

    单元测试、代码覆盖率与回归测试

    对于单元测试、代码覆盖率与回归测试这些概念,可以参考邹老师的博客,在此简要说一下。

    单元测试:写完某个模块后,假想一下各种情况,测试文件的正确性。
    代码覆盖率:这其实在单元测试的时候已经做了,代码覆盖率都不是100%,那么此程序肯定不是只为此公共功能服务。
    回归测试:便是高版本兼容低版本,不是之前实现了统计字母的频率,在实现了可以统计单词频率后,统计字母就出bug。
    我们这三部分并不独立,我们把所有的测试合并成一个文件。如下所示

from CountLetters import CountLetters from CountPhrase import CountPhrases from CountPrephrase import CountVerbPre from CountWords import CountWords from CountDir import OperateInDir  if(__name__=='__main__'):     #test letters #测试统计字母的频率    CountLetters('test.txt',10,None,None)  #测试统计字母有没有正常工作,test文件是个20个字的短文。    CountLetters('gone_with_the_wind.txt',-10, None, None) #测试输出前-10时,程序能正确处理    CountLetters('gone_with_the_wind.txt',10,'stopwords.txt','verbs.txt') #测试程序是否正确处理stopword和verb.txt    CountLetters('empty.txt', 10, None, None) #测试程序是否正确处理空文件    CountLetters('blanks.txt', 10, None, None) # blank.txt里面全是字符    #test words #测试统计单词的频率    CountWords('test.txt', 10, None, None)     CountWords('gone_with_the_wind.txt',10,'stopwords.txt',None)     CountWords('gone_with_the_wind.txt',10,None,'verbs.txt')     CountWords('gone_with_the_wind.txt', 10, 'stopwords.txt','verbs.txt')     CountWords('empty.txt', 10, 'stopwords.txt','verbs.txt')     #test phrase #测试统计短语的频率    CountPhrases('test.txt', 10, None, None, 2)     CountPhrases('gone_with_the_wind.txt',10,None,'verbs.txt',2)     CountPhrases('gone_with_the_wind.txt', 10, 'stopphrase.txt', 'verbs.txt', 2)     CountPhrases('blanks.txt', 10, 'stopphrase.txt', 'verbs.txt', 2)     # test dir # 测试遍历目录与子目录    OperateInDir(CountWords, 'examples', 10, 'stopwords.txt', 'verbs.txt', True)     OperateInDir(CountPhrases, 'examples', 10, 'stopwords.txt', 'verbs.txt', None, 2)     # test verbpre #测试统计动介短语的频率    CountVerbPre('empty.txt', 10, None, 'verbs.txt', 'prepositions.txt')     CountVerbPre('empty.txt', 10,'stopverbpre.txt', 'verbs.txt', 'prepositions.txt')     CountVerbPre('test.txt', 10, None, 'verbs.txt','prepositions.txt')     CountVerbPre('gone_with_the_wind.txt', 10, 'stopverbpre.txt', 'verbs.txt', 'prepositions.txt')

如何搭建环境可以参考博客 里面的例子也是引用本次作业的例子,应该通俗易懂吧,哈哈。

little bug

在单元测试的时候发现了一些little bug,放到共享文件里,之后进行了改正

在这里插入图片描述

coverage的html的测试报告。

在这里插入图片描述

效能分析与提升

效能的定义可以点击 了解,

针对此次任务我们的效能分析为 :

My teammates

杨涛:极强的领悟能力与快速学习能力,热爱科研,对待各项任务都投入极大的热情,看待问题独到而全面,善于运用各种strange tips。就喜欢坑我,刚约了网课就拉我去讨论。

张贺: 超强的逻辑思维与敏锐的洞察力,善于总结与能把握进度,相见恨晚。
在这里插入图片描述

总结

此次编程,体会了人生苦短,我用python的感慨;首次对程序进行了单元测试,代码覆盖率与回归测试。用效能分析提升了程序的性能。这次的获益匪浅真不违心。

转载于:https://www.cnblogs.com/enshengshi/p/9894665.html

你可能感兴趣的文章
APP压力稳定性测试
查看>>
Java-循环语句和条件语句
查看>>
mysql数据库和禅道安装
查看>>
一、python特性+python安装测试
查看>>
Windows文件操作基础代码
查看>>
1-8
查看>>
任务17:从UML角度来理解依赖
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_04-集合_04 数据结构_2_数据结构_队列
查看>>
Entity Framework操作Oracle数据库实现主键自增问题
查看>>
Leetcode WC-108-03 931-下降路径最小和
查看>>
从“智猪博弈”看所谓“大国责任”
查看>>
Day3:Spring-JDBC、事务管理
查看>>
模块的四种形式
查看>>
教你如何培养幽默感
查看>>
asp.net的一个简单简历缓存方法
查看>>
loj 1185(bfs)
查看>>
全排列-按从大到小-time limited
查看>>
减肥中,做个 体重三围 测量软件
查看>>
windows下命令行修改系统时间;修改系统时间的软件
查看>>
[LeetCode] 384. Shuffle an Array 数组洗牌
查看>>