控制循环
循环,应该是我们解决大多数实际问题最常见的办法,是个非常难得事情。难点不在于他的语法,而是我们如何抽象的把实际问题改变成机器语言,并给他一个合适的结构。建模问题是我认为的计算机行业的核心内容,历代计算机的学者都是致力于把实际问题改编成数学模型问题,用死板的理论知识来构造这个世界。
对我个人来说,在研究生期间使用的循环就是来操作数组的,循环基本与数组绑定,在写的时候很容易就被这种多维数据来搞混,本书中提到多次,尽量少使用i j k等无意义的下标,在循环的时候标注下标的时候要带上意义,才能更好的表达自己的意思,同时提醒自己也为了让读者更明白代码的意思。
循环的种类,在书中总结了四种,不限语法,有计数循环(循环的次数是一定的)、连续求值循环(根据迭代结果来判断循环是否是要继续)、无限循环、迭代器循环(针对容器里的每一个元素foreach)。
重点是带退出的循环。根据书中的内容,我们在日常的编写代码过程中,带退出的循环还是非常少的,更多的是等到循环结束才停止的或者是到达了停止条件的,但是这种方式并不是业界公认的好方法,但是只要我们在使用的时候小心谨慎,这确实能够帮我们解决很多问题。
这里注意的是,我们的初始化条件或者循环内务要尽量写在一起或者大家意识里都常见的位置,这样在维护或者修改的时候,不会产生遗漏。退出条件也尽量放在一处,不然会再调试、测试或者修改的时候被忽略。
在控制循环的时候,有两条注意的事项,可以让我们避免大部分的循环语法错误,首先,减少能影响该循环各种因素的数量,简化!不要有太多控制循环的因素!其次,把循环内部当做一个子程序来看待,把循环尽可能的放到循环体外,非常恰当的例子,我们的循环应该就是个黑盒子,我们只看循环条件就能知道是干嘛的,但是却不知道里面是怎么循环的。
***注意事项(根据个人经验摘录)
1.从一个位置进入循环,不要搞什么花里胡哨的,我们尽量保证从头部进入循环就好;
2.使用while(true)表示无限循环;
3.在while更合适的使用while,其余时间更多的使用for,因为for把所有的控制条件写在了一个地方;
4.一个循环只做一件事,我之前在写代码的时候经常尝试这种花里胡哨的东西,喜欢用最少的代码实现最复杂的功能,但是本书的核心思想还是要求我们写代码的时候脚踏实地,所以尽量能保证最简单最基础的功能实现之后再进行代码的升级;
5.尽量不要出现依赖于循环下标最终取值的代码,循环下标也不要出现在别处使用,如果使用的话最好使用中间变量来过渡;
6.多使用break或者continue,而不使用bool;
7.break尽量写在一处,集中起来,避免遗漏出现错误,使用起来要小心谨慎,因为break会把循环体变得复杂,我们需要完整的读完循环体才能明白循环在干什么。
****
本章中写的注意事项很多,我这里也不再赘述,这本书也不是看一遍就能放到一边的,日后还要多多翻阅,来增强记忆,或者说来提高自己的素质。
其实写了这么多,我对于本章最深的两点感受还没写出来:
第一点,在本章的内容中,第一次有了“业余”和“专业”的区分,他讲了一些实例,说这些是业余爱好者和程序员的区别,虽然我没有出现这些“业余”错误,但是我也没达到程序员的“专业”,很多时候基础还是不够牢固;
第二点,好的程序员与一般程序员的区别,很多语法结构在处理的时候不能光靠思想来确认,还需要动手去画去计算,不能单纯凭一些简单的测试来“碰”这个结构是否正确。