第五章、编程习惯的养成与思维的训练

编程习惯的养成与思维的训练

(一)防御性编程与备注

防御性编程的基本思想:
假设a,如果您从想用户那里获得输入,他们不一定会按照你的要求输入的。假如你想要的是正数,请不要指望他们会给你一个符合要求的回复。
假设b,如果你正在使用一个有不完美的程序员编写的程序,可能是我自己,或者是您自己,那个程序中可能有错误,所以您编写程序的假设是不仅用户可能会犯错,程序的其它部分有可能会犯错,并且是在假设您发现某些错误的问题上,然后让他出错的假设下进行了许多不同的测试,不知道问题的来源。
记住主要的事情:人们是愚蠢的,一定会犯错。因此你编写程序的目的是在避免犯错误的时候发生灾难,要养成编写防御性编程的思维。

(二)科学分析思维

迭代问题的逻辑
1、选择一个可以计数的变量
2、在外部需要初始化它
3、需要设置正确的最终测试
4、构建代码块
5、当结束后,你知道该怎么做

代码效率
目前需要解决问题的增长高于电脑计算的速度的增长,在时间、空间恒定的情况下,需要考虑的是:
1、计算需要多少内存
2、输入大小的函数所需要的基本步骤数量是多少

表现 所需要的步骤及内存
best min
worst max
expected avg

(三)图灵完备语言

图灵完备语言包含三部分
1、数据:数组,字符串,布尔
2、操作:数字运算,如±*/等
3、命令:赋值、输入输出、条件分支、循环机制
有了这是三部分,我们就可以做任何事情,在基础部分,我们都接触过。具体可以做什么事情呢?图像识别,语音识别,自然语言学习等等。

(四)Debugger

1、Debugger的思路,debugging的目标朝着没有错误的程序进行运行,做这个最好的工具是打印和阅读代码。
2、首先是发现产生问题的最小输入,然后进行打印测试,采用二分法进行测试,每次是在代码中进行打印,每次测试可以排除一般的代码块。并自己先预测结果是什么,耐心冷静的减小搜索出现的问题。
3、请教他人,在请教他人的时候,要把问题的逻辑理清楚再去问,可能问的时候就恍然大悟,原来这样。

(五)抽象化、模块化、封装代码

这部分是为了解决阅读代码的问题,事实上上万行的代码看的时候是很难理解的,需要把代码进行分成几个模块,一个模块负责对应的操作,方便后续的阅读及debugger.

(六)如何知道运行代码的时间

经过基础部分的学习,大家已经了解到运行不同的代码需要不一样的人时间。
形象代码运行时间因素:1、机器性能,2、使用的语言,3、数据量,等等。
唯一不变的是运行这个程序的步骤,这个代码的逻辑思维决定了你的运行时间。

(七)如何修复他人的代码

在编程的时候,我们常借鉴别人的代码,但常常会遇到问题,并不是每一份代码都可以完成复现,会受到版本,运行环境等因素影响,所以要修复他人的代码,需要有一个系统性的思考:
1、记录你尝试的地方,修改的点
2、考虑重新假设
3、调试代码
4、放下自己骄傲,自尊心,寻找他人的帮助
5、休息一段时间再来修复

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值