• 第二次结对编程总结


    这是现代软件工程课程第二次的结对编程总结作业(题目原始内容非公开可见故不链接),编程项目是一个词频统计程序

    How did you collaborate: working separately? pair programming? VS Live Share? other style?

    我们组虽然有三个人,但仍然尝试了使用结对编程的方式编写程序。我最初的想法是大家有空时两两配合开发,第三人之后对提交的代码进行 review。但实践中发现三个组员的架构和编码熟练程度还是有一定差距,为了更好地彼此学习交流,三人一起面对一台电脑完成了大部分编码工作。

    感觉我一开始做了整体架构设计和初始提交是一个错误,受到我的思路的局限后,其他组员的能动性没有很好地发挥出来。之后的项目中我要注意不干预别人的构思和实现,可以只在别人完成提交后 review 一下,给他提出我的改进建议。

    How did you discuss design guideline, coding convention and reach agreement?

    我本希望团队能讨论后得出一个关于哪些语言特性不要使用、哪些代码规范必须遵守的共识,然而这个进行得不如想象中顺利。如前所述,代码风格和质量受到了我撰写的初始提交的影响。

    How did the two of you aim high and try to deliver the optimal result with your own time constraints? Is this the best your could do? What prevent you from doing your best?

    另外两位组员的工作比较忙,大家不是很有时间,这确实是一个很大的限制因素。加上代码风格和质量规范的影响,我们意识到每个人分别完成一部分的话,可能会难以推动项目进展,所以在大家都有空时一起完成了大部分开发。

    如果我们有更多时间,或者相关技能对大家更加有意义(我觉得目前事实上编码能力对每个组员的意义是不一样大的,所以大家在相关训练上的追求不一样非常正常),我们应该先花一些时间在“磨刀”上,讨论合作方式、学习编码风格,再“砍柴”。

    List 3 strengths and 1 weak area of your partner.

    陈灿:积极主动、乐于学习、与团队合作融洽;编码经验不足。
    刘泽:思路清晰、编码熟练、架构能力较好;对工具和规范的积累稍不足。

    How did you use profile tools to find the performance bottleneck and improve speed? Show some screenshots of your analysis.

    我用 PyCharm 自带的 profiling 跑了程序各个功能,把两个主要热点去除了,一是逐字符读入效率太低,改成了一次性读入整个文件,用空间开销换库函数调用开销,二是每次做 lower() 调用的开销换成了在读入整个文件后直接做一次。剩下的热点比较均匀,去除的话需要对代码架构做较大调整,就没有动了。其他组员也尝试了使用这个工具进行分析,在此不重复他们的博客内容了。

    一个想法:如果把整个程序用 NumPy 重新设计的话应该能大幅提高性能,比如字符频率统计时,可以直接作为 byte array 读入,count 成 256 维向量,扔掉非字母部分,把大小写的两个切片相加再做 argsort 即可。但这样重写代价太大了,我们没有时间。

    图片

  • 相关阅读:
    获得目标服务器中所有数据库名、表名、列名
    SQL Server 2008 安装SQLDMO.dll
    三层交换原理
    NAT地址转换原理全攻略
    C#中显/隐式实现接口及其访问方法
    As,is含义?using 语句
    c#泛型约束
    C#几个经常犯错误汇总
    C#--深入分析委托与事件
    markdown基础
  • 原文地址:https://www.cnblogs.com/SmartHypercube/p/wf.html
Copyright © 2020-2023  润新知