20220512数据结构绿皮书读书笔记

20220512数据结构绿皮书读书笔记

维护程序的第一步就是review、分析、评估。思考如下几个问题
1.程序是否按需求正确解决了问题?
2.程序在所有条件下都能正常的工作吗
3.程序是否有一个好的用户界面?用户能否方便简单的输入,输出是否有用简洁?程序是否提供了可选的特性供使用者选择?是否包含足够的指导和其他信息?
4.程序的逻辑是否使用使用方便和简短的函数来清晰的书写,数据结构能否准确的反映程序的需要
5.程序是否有良好的文档?命名是否意义准确?对困难和主要的代码是否有解释?
6.程序对空间和时间的利用是否高效?通过修改算法能否让程序的性能进一步提升?

review整个程序
首先是问题的定义:
如果我们回去看问题定义的规则,会发现我们并没有完全遵守,规则没提到gird矩阵有边界,但我们定义了最大值。在程序中超出边界的细胞被我们忽略了。
虽然任意的计算机模拟都肯定会有边界,但我们定义了20 60这种数字太过随意,其实可以做到不限定矩阵大小,但在此之前我们需要实现几种特殊的数据结构。

编程原则
确认你完全理解了你的问题,如果你必须修改问题描述,清晰的解释你改了什么

然后是程序的正确性:
因为程序测试无法证明错误不存在,我们需要其他的方式来二次证明程序的正确性,构造符号来证明程序的正确性通常是困难的,但有的时候是可以做到的。
Life模拟这个程序只有update会修改数据,只有neighborCount会统计邻居,我们关注这两个
对于neighborCount,只有有限的几个邻居和状态,使用白盒测试构造几个case即可完整测试
对于update,每个单元格的邻居数量只有几种情况,分别测试输出即可

接着是用户交互界面:
对于初始化状态通过坐标输入其实是比较反人类的,部分布局非常复杂,人工计算容易出问题。所以最好是支持用户输入一整行的数据,空行代表都是死亡比较方便。或者是支持从文件读入。另一个选项就是允许用户通过任意方式自己编辑初始值。

输出也有提升空间,如果直接我们不是每次都重新打印,只再原来的输出上修改变化的部分,看起来会更好一些。(命令行里,这其实是可以做到的)

帮助信息,可以用弹框或其他形式,更加直观

一般来说,设计一个程序必须要慎重考虑用户的使用体验,大型程序很重要的一点就是提供用户界面,通常设计界面的精力要比其他所有地方加起来都要多

效率分析,下次更新,不一定是明天,明天放假了hhhh 可能是下周再说了
mark 目前是37页第6点,pdf是54页

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值