这些不起眼的代码错误,90%的程序员都写过!

科技   2025-01-07 17:01   福建  
👆点击关注 回复『网盘』👆
0元领取编程学习包

我们在学习编程的过程中,不可避免地会遇到一些bug,今天我们来讨论几个比较常见的代码问题。


这些问题虽然常见,但解决方法很简单。只要掌握方法,就能快速提升代码质量。


1. 变量命名不清晰,一词多义


变量名是代码的标识。好的变量名能准确描述变量的含义,而模糊的变量名会导致代码难以理解和维护。


因此,避免使用缩写或含义不明确的名称,每个变量名应该只代表一个含义,不要用同一个变量名表示不同的含义。


例如:


if(staff_id == 0) {     printf("系统归档,不是员工归档"); }


上述代码中,使用staff_id应该始终代表员工编号,而不是其他含义。如果需要表示系统存档,应该使用不同的变量名。


特殊情况,例如使用特定数值表示状态,应该使用枚举或常量来明确定义,而不是依赖变量的特定值。


此外,不要使用变量的缺失值来表示其他含义。例如,空用户名不应表示用户已删除。应该使用布尔型变量(例如isDeleted)来明确表示用户的删除状态。


2. 使用魔数


魔数,即代码中直接出现的没有意义的数字常量,直接在代码中使用未定义的数字常量(魔术数字)会降低代码的可读性和可维护性。


魔数的危害在于:


● 难以修改


如果需要修改魔数,开发者必须在整个代码库中搜索并修改所有相关位置,这不仅费时费力,而且容易出错。


例如,代码中使用了数字80表示端口号,如果需要更改为443,则需要全局搜索并替换80,这极易遗漏,造成难以预测的后果。


● 难以理解


一个孤立的数字无法表达其含义,开发者必须通过上下文推断其作用,这无疑增加了代码理解的难度,降低了代码的可维护性。


例如:


for(int i = 0; i < 13; ++i) {     ... }


上述代码中,for(int i = 0; i < 13; ++i)中的13,如果不加注释,几乎没有人能立刻明白其含义。


解决魔数问题的关键在于:使用有意义的常量或枚举来代替魔数。


这不仅提高了代码的可读性,也方便了代码的修改和维护。即使魔数只在一个地方使用,也建议定义一个常量来代替,因为这是一种良好的编程习惯。


对于一些表示物理单位的数字,例如长度、重量等,如果其含义在上下文已清晰表达,则可以适当使用魔数。


但对于表示类别或状态的数字,则必须使用枚举或常量来明确其含义。


3. 条件分支过多过长


过长的if-else语句或switch语句难以理解和维护,降低了代码的可读性,也增加了代码的维护难度和出错概率。


当条件分支过多时,代码变得冗长、难以理解,修改和调试也变得异常困难。


一个简单的修改可能需要修改多处代码,并且容易引入新的错误。


例如下面的伪代码代码:


const int CN=1; const int US=2; const int UK=3;  string language; if(country==CN) {     language="中文"; } else if(country==US) {     language="english"; } else if(country==UK) {     language="english"; } else {     language=""; }


条件分支很多,用很长的if else语句或者switch语句才能表达完整的逻辑。


解决这个问题的关键在于:使用表驱动法或其他策略简化条件分支。


表驱动法将条件分支的逻辑和数据分离,将条件和结果存储在数据表中,通过索引查找结果,从而简化代码逻辑。


上面的代码可以修改为:


const int CN=1; const int US=2; const int UK=3;  string languageTable[]={"","中文","English","English"}; //先判断country变量是否在定义的CN、US、UK范围内,如果在继续 language = languageTable[country];


这使得代码更加简洁易懂,也方便了后期的修改和维护。






以上仅仅是部分常见的代码缺陷,除此之外还有很多其他方面需要开发者们注意。


提高代码质量不是件容易的事情,但只要我们能够重视代码规范,养成良好的编程习惯,并积极学习更先进的编程技巧,就能编写出更加优雅、高效、易于维护的代码。


🔊🔊🔊


想提升编程技能,同时挖掘更多赚钱机会的小伙伴,可以关注w3cschool编程狮旗下的新产品——「开发者掘金」

💡开发者掘金将持续为你分享优质副业项目、真实赚钱经验和多元化收入渠道,更有最新实用工具可领💪


点击下方名片并关注

解锁更多赚钱干货、接活技巧

w3cschool编程狮
学编程,从W3Cschool开始!
 最新文章