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

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

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

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

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

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

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

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

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

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

20220512数据结构绿皮书读书笔记相关推荐

  1. 20220530数据结构绿皮书读书笔记

    个人博客 https://blog.hylstudio.cn/archives/964 20220530数据结构绿皮书读书笔记 9 表格和信息检索 9.1 简介 第七章我们证明过,仅仅使用比较的方式从 ...

  2. 20220518数据结构绿皮书读书笔记

    个人博客 https://blog.hylstudio.cn/archives/945 为了良好的阅读体验,建议到个人博客或CSDN,QQ空间就是备份用的,tx看起来彻底放弃日志了.... 20220 ...

  3. 20220601数据结构绿皮书读书笔记

    个人博客 https://blog.hylstudio.cn/archives/970 20220601数据结构绿皮书读书笔记 11 多叉树 11.1 定义 数学定义上的树有着广泛的概念,它是任意顶点 ...

  4. 20220517数据结构绿皮书读书笔记

    个人博客 https://blog.hylstudio.cn/archives/942 为了良好的阅读体验,建议到个人博客或CSDN,QQ空间就是备份用的,tx看起来彻底放弃日志了.... 20220 ...

  5. 20220527数据结构绿皮书读书笔记书笔记

    个人博客 https://blog.hylstudio.cn/archives/961 20220527数据结构绿皮书读书笔记 8 排序 各种排序算法来咯 插入排序.选择排序.希尔排序.快排.堆排 8 ...

  6. 20220519数据结构绿皮书读书笔记

    个人博客 https://blog.hylstudio.cn/archives/949 20220519数据结构绿皮书读书笔记 2.5.3 优化数据结构的定义 4个层次,1.概念,2.算法,3.编程, ...

  7. 20220513数据结构绿皮书读书笔记

    20220513数据结构绿皮书读书笔记 效率分析 程序运行哪里耗时最长?显然不是输入,因为只有一次,输出一般来说也很快.大量的计算都是在update方法个neighborCount方法的调用上,在每代 ...

  8. 2012-2-24 《数据结构》读书笔记2 线性表

    "软件只不过是人的思想产物,软件可能是人能造出来的最复杂的实体"这是昨天晚上UML(统一建模语言)老师的一句话,也更加坚定了我学习软件的决心,真的有这么复杂么,其实还是自己不够用心 ...

  9. 《大话数据结构》读书笔记-树

    写在前面:本文仅供个人学习使用.<大话数据结构>通俗易懂,适合整体做笔记输出,构建体系.并且文中很多图片来源于该书,如有侵权,请联系删除. 文章目录 6.2 树的定义 6.2.1 结点分类 ...

最新文章

  1. python爬虫一般格式
  2. CVPR2021深度框架训练:不是所有数据增强都可以提升最终精度
  3. 这款开源测试神器,圆了我玩游戏不用动手的梦想
  4. 【Google Play】App Bundle 使用详解 ( 简介 | 应用内更新 | 即时更新 | 灵活更新 )
  5. OpenCV-Python bindings是如何生成的(2)
  6. python爬虫数据分析系统_2小时精通python爬虫技术 带你打造Bug系统数据抽取及统计分析...
  7. Postgres 9.2.4的升级方案与步骤
  8. 如何远程访问***之easy ***
  9. python棋盘放麦粒_从零开始学习PYTHON3讲义(五)while循环和棋盘麦粒问题
  10. Google发布MobileNets,一种预训练的高效Tensorflow计算机视觉模型
  11. 计算机触摸板设置方法,解决办法:四种关闭笔记本电脑触摸板的方法[图形教程]...
  12. 电力拖动(工厂电气控制)实验装置
  13. 老男孩python培训怎么样_Python如何实现爬虫?老男孩Python
  14. 【题解】「THUPC 2017」体育成绩统计 / Score
  15. python小游戏之超级玛丽进阶版(1~4关)。好玩到爆炸~【内附github源码,及其详细备注】
  16. 科技英语写作中的动词时态和冠词的使用问题
  17. dataframe获取字符串中的字数
  18. css 外弧_CSS绘制圆(弧)
  19. Android 模仿H5高斯模糊发光阴影
  20. vue实战-产品详情页(轮播图、放大镜)

热门文章

  1. ATEC线上赛网络欺诈举报定性Top1方案总结
  2. 微服务和分布式的联系与区别什么?
  3. Boosted Tree
  4. 【HTTP】http重定向301/302/303/307
  5. 取mailq队列的邮件
  6. 这些是不是程序员爱不释手的10款神级工具【萝卜青菜各有所爱】
  7. 蓝牙Mesh灯控方案简介
  8. oracle数据转到mysql----OracleToMySQL 工具
  9. WARNING: export AUTOGRAPH_VERBOSITY=10
  10. 且用计算机语言怎么表示,如何学习SCL语言?SCL语言编程入门