首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何学习如何编写高效且可维护的C代码?

如何学习如何编写高效且可维护的C代码?
EN

Stack Overflow用户
提问于 2011-01-30 20:13:00
回答 7查看 9.9K关注 0票数 10

我目前的编程经验仅限于将一些shell脚本和一些汇编语言组合在一起。然而,我在大学里学到了C代码的基本语法。

我想学习如何编写高效的C代码,我很困惑是从K&R开始还是从C编程:现代方法开始。另外,我是否应该同时学习一些算法书籍,这样我就不会从一开始就编写效率低下的代码?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-01-30 20:17:29

在这个阶段,不要太担心高效的代码。让你自己更关注清晰和可读的代码。

通常,保持函数小,执行一项任务。如果要用太多的句子来描述一个函数的功能,那么它可能需要分解成更小的函数。

使用描述性变量名,而不仅仅是x和n等。

从编写你喜欢开发的程序开始,而不是“书上告诉你做的无聊的练习”。但是,一定要遵循书中的建议和指导。

每个人都有自己的风格,如果你的风格与下一个人的风格不太匹配,也不要担心。

最重要的是,享受它!如果你觉得学一件事有点无聊,那就去学别的吧,总会有很多东西要学。

编辑:另外,不要试图在你能走之前跑--我特别考虑a)指针和b)动态内存分配。在这个早期阶段,您不需要使用它们中的任何一个,直到您感到满意为止。

票数 13
EN

Stack Overflow用户

发布于 2011-01-30 20:25:59

首先,让基础知识变得湿润起来。学习技巧,学习好的C语言风格。你不可能在一次运行中就学会如何写出高效的C代码,所以在一开始就犯错误是可以的。

我发现学习如何编写高效代码的最好方法是学习如何避免内存泄漏。可维护的C代码需要良好的文档和源代码中的注释。此外,它还需要编写拒绝更改的代码。

示例:

糟糕的例子:

代码语言:javascript
复制
int* ptr = malloc(5 * 4); //4 here being size of int.
... do something with ptr here... //<-- this is wrong!

为什么不好呢?int可能并不总是4。另外,在第二行中,您正在对ptr (可能是赋值)做一些操作,而没有检查它是否为NULL。

更好的例子:

代码语言:javascript
复制
int* ptr = malloc(5*sizeof(int)); // better, always allocate with respect to int size
if (ptr) ..do something..

为什么更好?首先,你是根据int的大小分配的,所以即使在另一个架构中int的大小不同,你也是很好的。在使用之前,还需要检查ptr是否为NULL

最好的例子:

代码语言:javascript
复制
int* ptr = malloc(5* sizeof(*ptr));
if (ptr) .. do something.
free(ptr); // done with ptr

为什么这是最好的方法?首先,您不是将分配的大小与int的大小相关联,而是直接与ptr的类型相关联。现在,如果有人出于任何原因在ptr的声明中将int更改为long (特别是如果它是在其他地方声明的)而没有在malloc的参数中更改为long;您的分配仍然是正确的,因为它直接根据ptr的类型进行分配。

为了防止内存泄漏,我们还在使用完ptr之后释放了它。

票数 7
EN

Stack Overflow用户

发布于 2011-01-31 03:53:40

你应该试着读一下Steve Maguire的"Writing solid code“,这是一本古老的书,但它可以教你你需要什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4842817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档