高质量c/c++编程(上)笔记

l 【规则2-6-1**】**应当将修饰符 * 和 & 紧靠变量名

例如:

char *name;

int *x, y; // 此处y不会被误解为指针

l l 【规则3-2-4**】**静态变量加前缀s_(表示static)。

例如:

void Init(…)

{

static int s_initValue; // 静态变量

}

l l 【规则3-2-5**】**如果不得已需要全局变量,则使全局变量加前缀g_(表示global)。

例如:

int g_howManyPeople; // 全局变量

int g_howMuchMoney; // 全局变量

l l 【规则3-2-6**】**类的数据成员加前缀m_(表示member),这样可以避免数据成员与成员函数的参数同名。

例如:

void Object::SetValue(int width, int height)

{

m_width = width;

m_height = height;

}l l 【规则4-2-2**】**不要有多用途的复合表达式。

例如:

d = (a = b + c) + r ;

该表达式既求a值又求d值。应该拆分为两个独立的语句:

a = b + c;

d = a + r;

4.3.2 整型变量与零值比较

l l 【规则4-3-2**】**应当将整型变量用“==”或“!=”直接与0比较。

假设整型变量的名字为value,它与零值比较的标准if语句如下:

if (value == 0)

if (value != 0)

不可模仿布尔变量的风格而写成

if (value) // 会让人误解 value是布尔变量

if (!value)

4.3.3 浮点变量与零值比较

l l 【规则4-3-3**】**不可将浮点变量用“==”或“!=”与任何数字比较。

千万要留意,无论是float还是double类型的变量,都有精度限制。所以一定要避免将浮点变量用“==”或“!=”与数字比较,应该设法转化成“>=”或“<=”形式。

假设浮点变量的名字为x,应当将

if (x == 0.0) // 隐含错误的比较

转化为

if ((x>=-EPSINON) && (x<=EPSINON))

其中EPSINON是允许的误差(即精度)。

4.3.4 指针变量与零值比较

l l 【规则4-3-4**】**应当将指针变量用“==”或“!=”与NULL比较。

指针变量的零值是“空”(记为NULL)。尽管NULL的值与0相同,但是两者意义不同。假设指针变量的名字为p,它与零值比较的标准if语句如下:

if (p == NULL) // p与NULL显式比较,强调p是指针变量

if (p != NULL)

不要写成

if (p == 0) // 容易让人误解p是整型变量

if (p != 0)

或者

if (p) // 容易让人误解p是布尔变量

if (!p)

4.3.5 对if语句的补充说明

有时候我们可能会看到 if (NULL == p) 这样古怪的格式。不是程序写错了,是程序员为了防止将 if (p == NULL) 误写成 if (p = NULL),而有意把p和NULL颠倒。编译器认为 if (p = NULL) 是合法的,但是会指出 if (NULL = p)是错误的,因为NULL不能被赋值。

程序中有时会遇到if/else/return的组合,应该将如下不良风格的程序

if (condition)

return x;

return y;

改写为

if (condition)

{

return x;

}

else

{

return y;

}

或者改写成更加简练的

return (condition ? x : y);

l 【建议4-4-1**】**在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU跨切循环层的次数。例如示例4-4(b)的效率比示例4-4(a)的高。

for (row=0; row<100; row++) { for ( col=0; col<5; col++ ) { sum = sum + arow; } }for (col=0; col<5; col++ ) { for (row=0; row<100; row++) { sum = sum + arow; } }

示例4-4(a) 低效率:长循环在最外层 示例4-4(b) 高效率:长循环在最内层

l l 【建议4-4-2**】**如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。示例4-4(c)的程序比示例4-4(d)多执行了N-1次逻辑判断。并且由于前者老要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。如果N非常大,最好采用示例4-4(d)的写法,可以提高效率。如果N非常小,两者效率差别并不明显,采用示例4-4(c)的写法比较好,因为程序更加简洁。

for (i=0; i<N; i++) { if (condition) DoSomething(); else DoOtherthing(); }if (condition) { for (i=0; i<N; i++) DoSomething(); } else { for (i=0; i<N; i++) DoOtherthing(); }

l l 【规则4-6-1**】**每个case语句的结尾不要忘了加break,否则将导致多个分支重叠(除非有意使多个分支重叠)。

l l 【规则4-6-2**】**不要忘记最后那个default分支。即使程序真的不需要default处理,也应该保留语句 default : break; 这样做并非多此一举,而是为了防止别人误以为你忘了default处理。

goto 语句至少有一处可显神通,它能从多重循环体中咻地一下子跳到外面,用不着写很多次的break语句; 例如

{ …

{ …

{ …

goto error;

}

}

}

error:

就象楼房着火了,来不及从楼梯一级一级往下走,可从窗口跳出火坑。所以我们主张少用、慎用goto语句,而不是禁用。

  • 24
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C/C++作为一种效的编程语言,早已成为计算机科学领域中不可缺少的工具。而质量的C/C++编程,更是关系到程序的性能、稳定性和可维护性等诸多方面。如何进行质量C/C++编程,对于每一位程序员来说都是一个必须面对的问题。 首先,代码的可读性是质量C/C++编程的一项重要因素。好的代码应该是简洁的、易于理解的、有规范的命名方式、注释清晰的。在编写时,要注意代码的排版、格式和缩进,这样不仅有利于他人的查看,也方便自己或其他维护者对代码进行修改和维护。 其次,C/C++编程需要严格遵循编程规范和标准,如C语言的ANSI C标准、C++语言的ISO/IEC 14882标准等。规范的编码风格可以减少代码中的错误和漏洞,增强程序的健壮性和安全性。 另外,程序员需要充分运用现代的开发工具和技术,如IDE、调试器、GCC等,以提代码的质量和效率。在开发时,要进行测试和调试,及时发现和解决问题,确保程序的正确性。 质量C/C++编程还需要具备良好的代码管理和协作能力,可通过版本控制工具和团队协作平台等帮助程序员有效地管理和协调团队开发。同时,要不断学习和研究最新的开发技术和工具,以保持自身在编程领域的竞争力。 综上所述,质量C/C++编程需要程序员具备良好的编码规范和技术水平,以及良好的代码管理和协作能力。只有不断提自己的专业能力,才能开发出效、稳定、可维护的优质程序。 ### 回答2: C/C++编程语言自诞生以来,一直被广泛应用于各种系统级和底层编程领域。随着计算机技术的不断发展和应用的不断扩大,C/C++编程已经成为了计算机编程的基础语言之一。 质量的C/C++编程可以提程序的效率、可靠性和可维护性。因此,学习和掌握C/C++编程技术,对于计算机科学和软件工程人员来说,是非常重要的一项技能。在学习C/C++编程技术时,需要注重实践,要经常进行编程练习,从而提自己的编程水平和技巧。 同时,在进行C/C++编程时需要关注以下几个方面: 1. 语言基础。掌握C/C++语言的基础知识是进行质量编程的基础。包括数据类型、运算符、流控制、函数等等。 2. 编码规范。编码规范是保证代码质量和可维护性的重要环节。遵循良好的编码规范可以使得代码更容易被理解、修改和扩展,降低程序出错的概率。 3. 算法和数据结构。算法和数据结构是C/C++开发中非常重要的一个方面,掌握好算法和数据结构可以帮助我们更好地理解问题、分析问题、解决问题。 4. 调试技术。调试是在C/C++编程中非常重要的一个环节,良好的调试技术可以帮助我们快速发现和解决问题,提程序的效率和可靠性。 总之,质量C/C++编程需要我们掌握好语言基础,遵循良好的编码规范,熟练掌握算法和数据结构,同时具备良好的调试技术和开发习惯。只有不断地学习和实践,才能够成为一名优秀的C/C++程序员。 ### 回答3: 质量C/C++编程下载是指可以轻松下载到质量C/C++编程内容的资源。在学习和使用C/C++编程语言时,对于学习者和开发者来说,能够获得质量编程资源是非常重要的。 质量C/C++编程下载的资源可以包括各种编码指南、最佳实践、样例代码、实用工具、编译器等开发工具和读物。通过下载这些资源,可以加快程序员的学习速度,提升代码的质量,提代码效率,以及提升代码的可维护性和可读性。 对于初学者而言,质量C/C++编程下载资源可以作为学习路上的重要指南,帮助他们建立起正确的编程思路和技能。对于有经验的开发者来说,这些资源可以提供新的思路和技术,使得他们的工作更加效和创新。 总的来看,质量C/C++编程下载资源对于学习者和开发者来说都是非常宝贵的资源,值得花费时间和精力去探索和学习。无论是初学编程技能还是进一步提升自己的专业水平,这些资源都能够带来巨大的帮助和收益。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值