张家港保税区规划建设局网站学校网站源码php
张家港保税区规划建设局网站,学校网站源码php,沈阳网站建设服务,广西桂建云证件查询1.4.3 保证程序可预测性设计程序的时候#xff0c;如何保证可预测性呢#xff1f;答案就是我们上面所说的#xff0c;所有的代码必须是经过测试的#xff0c;必须是一步一步调试过的。只有经过你调试过的代码#xff0c;你才能知道这个代码做某种运算的时候#xff0c;它…1.4.3 保证程序可预测性设计程序的时候如何保证可预测性呢答案就是我们上面所说的所有的代码必须是经过测试的必须是一步一步调试过的。只有经过你调试过的代码你才能知道这个代码做某种运算的时候它是怎样的执行方法。如果你不知道它的执行方法你没进行过调试则你就没有任何预测性。要达到可预测性代码在汇编级是怎么执行的你都得非常清楚。代码对哪个部分进行了什么操作你都得知道。如果达不到这点你的可预测性就很差。比如有些程序你看它的C或者C的源代码时都看不出任何的问题。你看静态的程序时看不出任何问题动态的程序调试你也看不出任何问题这时你必须把它的汇编打开看一看它具体的操作才能知道。所以说开放性思维非常重要你必须从最低层到最上层都要清楚。VC本身提供了一个汇编的调试环境但是打开汇编后如果你都看不懂那你说怎么调呢调什么如果一个程序经过调试出来则它会出错的地方你马上就会知道只要看一些表现就知道它有些什么问题。比如说我们做“大眼睛”的时候有个这样的现象。当要显示一个很大的图的时候屏幕上只能显示其中的一小块这样就可能需要拖动整个图像但是拖的时候如果在Windows 2000或Windows XP系统下就会发现一旦我将图像拖到右下角时图像就一下到左上角去了。该图像在右下角没有到底的时候还是显示正确的但一旦到底就把右下角转到左上角去了。这时我就做了一个区域的比较即看这个区域和整个这个图像的区域是否中间运算有错误。但程序是调用Windows本身的API我就怀疑是不是这个API出问题了。于是又重新写了一个区域相交部分一步一步去查它也没有任何问题在任何情况下都是好的但是到达右下角时图像就会翻过来。经过以上两个步骤后我就能确定这是Windows操作系统的问题Windows 98下没有这个问题Windows 2000有Windows XP也没有改过来。这是操作系统的原因绝对不是软件的问题。为什么会出现这样的问题这是因为微软设计系统的那些家伙自以为聪明。只要图像的左上角是0不管三七二十一肯定往下面放但是它的图像是正向位图所有的位图设计的时候是倒过来的。而一个正向位图的高度是负的否则它显示的时候是倒过来的。高度是负的时候这个0发生了变化从上向下的那么他设计操作系统的时候只看了0而没去看高度这时他没做条件处理。他的想法是为了加速这个位图的速度是做优化的结果但结果就出错了而到现在他也没有解决这个问题。所以可预测性在这里就显得很重要了。当出现这个问题时能想到要么就是区域合并有问题要么就是直接显示的这个函数有问题。区域合并的问题可以解决我写个函数还不行吗我一步一步地去跟踪就能肯定这个API有没有问题最后得出结论是有问题也的确是它有问题。如果你不会调试的话这个问题你永远也查不出来如果你不了解操作系统你永远不会想到操作系统会出问题如果你不了解这个平台你根本就不知道问题所在。所以要成为一个高手视角一定要从里到外从点到面非常开阔。如果你局限在一个封闭的思维里做系统就很难。