项目 | 任务 |
---|---|
课程班级博客链接 | https://edu.cnblogs.com/campus/xbsf/2018CST/ |
这个作业要求链接 | https://www.cnblogs.com/nwnu-daizh/p/14604444.html |
我的课程学习目标 | 1.练习Github的Fork、Clone、Push等基本操作; 2.自主学习基础的遗传算法; 3.锻炼与同伴的合作能力,学习同伴的长处,互相促进。 |
这个作业在哪些方面帮助我实现学习目标 | 1.熟悉Github操作 2.利用汉堡包法合作开发沟通 3.了解遗传算法 |
结对方学号-姓名 | 201871010109-胡欢欢 201871010114-李岩松 |
结对方本次博客作业链接 | 链接1 链接2 |
本项目Github的仓库链接地址 | 链接 |
体验软件项目开发中的两人合作,练习结对编程(Pair programming)。
掌握Github协作开发程序的操作方法。
代码规范 | 标准 |
---|---|
缩进 | 4个空格 |
行宽 | 100字符 |
括号 | 括号表示逻辑优先级 |
断行与空白的{ }行 | 每个“{”和“}”都独占一行 |
分行 | 不要把多行语句放在一行,不要把不同的变量定义在一行上 |
命名 | 匈牙利命名法(见邹欣老师《构建之法》附录B(第337页)) |
下划线问题 | 分隔变量名字中的作用域标注和变量的语义 |
大小写问题 | 多个单词组成的变量名:Pascal-所有单词的第一个字母都大写;Camel-第一个单词全部小写; 所有的类型/类/函数名都用Pascal形式,所有的变量都用Camel形式; 函数用动词或动宾组合词 |
注释 | 用来解释程序做什么(What),为什么这样做(Why),以及要特别注意的地方的;复杂的注释应该放在函数头; |
代码设计规范 | 标准 |
---|---|
函数 | 只做一件事,要做好 |
goto | 函数要有单一的出口,可以使用goto |
错误处理 | 参数处理,断言 |
博客链接 | 评价链接 | 结对方Github项目仓库链接 |
---|---|---|
https://www.cnblogs.com/1763088787h/p/14604500.html | https://www.cnblogs.com/1763088787h/p/14604500.html | https://github.com/123321hu/DP- |
克隆结对方项目源码
阅读测试运行后,完成复查表如下:
首先,胡欢欢同学的代码风格非常规范,每一块都有非常详细的注释,方便同伴理解审查,在代码中明显可以感觉到思路流畅清晰。其次,胡欢欢同学的作业中包含使用文档。最后,在Github上进行了八次commit。在阅读胡欢欢同学的代码后,我的收获颇丰,深刻认识到自己在的不足,我会努力学习借鉴。
代码核查表
1. 概要部分 | 代码能符合需求和规格说明么? 代码设计是否有周全的考虑? 代码可读性如何? 代码容易维护么? 代码的每一行都执行并检查过了吗 |
符合 基本周全 可读性好 比较容易维护 已一行一行执行检查 |
---|---|---|
2.设计规范部分 | 设计是否遵从已知的设计模式或项目中常用的模式? 有没有硬编码或字符串/数字等存在? 代码有没有依赖于某一平台,是否会影响将来的移植? 开发者新写的代码能否用已有的Library/SDK/Framework中的功能实现?在本项目中是否存在类似的功能可以调用而不用全部重新实现? 有没有无用的代码可以清除? |
遵循 没有 代码在pycharm上运行,但不依赖平台 存在类似功能可以调用 没有 |
3.代码规范部分 | 修改的部分符合代码标准和风格么? | 符合 |
4.具体代码部分 | 有没有对错误进行处理?对于调用的外部函数,是否检查了返回值或处理了异常? 参数传递有无错误,字符串的长度是字节的长度还是字符(可能是单/双字节)的长度,是以0开始计数还是以1开始计数? 边界条件是如何处理的?Switch语句的Default是如何处理的?循环有没有可能出现死循环? 有没有使用断言(Assert)来保证我们认为不变的条件真的满足? 对资源的利用,是在哪里申请,在哪里释放的?有没有可能导致资源泄露?有没有可能优化? 数据结构中是否有无用的元素? |
处理异常 无 未发现死循环 没有 没有资源泄露 |
5.效能 | 代码的效能(Performance)如何?最坏的情况是怎样的? 代码中,特别是循环中是否有明显可优化的部分? 对于系统和网络调用是否会超时?如何处理? |
效能良好,达到了具体任务的要求 没有 不会超时 |
6.可读性 | 代码可读性如何? 有没有足够的注释? |
可读性好 足够注释 |
7.可测试性 | 代码是否需要更新或创建新的单元测试? | 暂时不需要 |
依据复审结果尝试利用github的Fork、Clone、Push、Pull request、Merge pull request等操作修改同伴个人项目仓库源码。
操作 | 效果 |
---|---|
fork | 分叉、克隆 出一个(仓库的)新拷贝 |
Clone | 使用git来进行版本控制时,为了得一个项目的拷贝(copy),需要知道这个项目仓库的地址 |
Push | 将本地版本库的分支推送到远程服务器上对应的分支,一般形式为 git push <远程主机名> <本地分支名> <远程分支名> |
Pull request | 参考文章 |
(1)平台基础功能:实验二 任务3;
(2)D{0-1}KP 实例数据集需存储在数据库;
(3)平台可动态嵌入任何一个有效的D{0-1}KP 实例求解算法,并保存算法实验日志数据;
(4)人机交互界面要求为GUI界面(WEB页面、APP页面都可);
(5)查阅资料,设计遗传算法求解D{0-1}KP,并利用此算法测试要求(3);
嵌入D{0-1}KP实例求解算法
在线绘制散点图、回溯算法求解、动态算法求求解等
利用遗传算法求解D{0-1}KP问题
软件设计说明。
软件实现及核心功能代码展示:
程序运行:程序运行时每个功能界面截图。
(1)回溯算法
(2)散点图
(3)测评
描述结对的过程:线上讨论
提供此次结对作业的PSP。
PSP
PSP2.1 | 任务内容 | 计划共完成需要的时间(h) | 实际完成需要的时间(h) |
---|---|---|---|
Planning | 计划 | 0.5 | 0.5 |
·Estimate | · 估计这个任务需要多少时间,并规划大致工作步骤 | 0.5 | 0.5 |
Development | 开发 | 22 | 30 |
·· Analysis | 需求分析 (包括学习新技术) | 8 | 9 |
· Design Spec | ·生成设计文档 | 1 | 0.9 |
·Design Review | ·设计复审 (同伴再次审核设计文档) | 0.5 | 0.5 |
·Coding Standard | 代码规范 (为目前的开发制定合适的规范) | 1 | 1 |
·Design | 具体设计 | 1.5 | 2 |
·Coding | 具体编码 | 7 | 12 |
·Code Review | ·代码复审 | 1 | 2 |
·Test | 测试(自我测试,修改代码,提交修改) | 2 | 3 |
Reporting | 报告 | 2 | 3 |
··Test Report | ·测试报告 | 1 | 1.5 |
·Size Measurement | 计算工作量 | 0.5 | 1 |
·事后总结。并提出过程改进计划 | 0.5 | 0.5 |