盖房子时,如果负责基础工作的泥瓦匠手艺不精又没有竭尽全力,房屋质量就不可能过关。即使后期有技艺精湛的装潢布局使得建筑物的外观精美绝伦,根基没有打好也会成为“豆腐渣工程”。同理,决定软件系统质量的就是编码工作,这就要求负责编码的程序员具有过硬的基本功。
本文将和大家分析编写零漏洞代码所需的编码准则。
数组下标应从0开始
C语言中的数组声明语句如下所示。
代码 P280 第一行
用该语句声明的数组具有如下形式。
代码 P280 第二段
此处需要注意,数组的第一个元素的下标为0。也就是说,数组的第一个元素并不是1号元素,1号元素实际上是数组的第二个元素。
程序员经常混淆这一点。这就导致为第五个元素赋值时,编写的语句形式如下所示。
代码 P280 第三行
这会导致原本应该赋给目标元素的值误赋予非目标元素,进而产生严重问题。实际上,为第五个元素赋值的正确语句如下所示。
代码 P281 第一行
指定数组下标时出现错误的原因主要在于,程序员基本功不够扎实。要想避免这些问题,就必须训练自己在指定数组下标时能够区分第一、第二、第三这种表示顺序的序数,以及一、二、三这种表示个数的基数。可以重读自己编写的代码,检查数组下标是否正确。
指定数组下标时出现的失误可能打乱整个数据集合。即应该赋给1号元素的值被赋给了0号元素,而1号元素仍保留原值。这与程序员的本意相背离,也很难定位引起这种数据混乱的根源所在。