首页 » 信息技术 »

C语言设计开发思考

2010年1月23日 / 73次阅读
CC++

做了很多年的C语言开发,以下内容是当年做开发时,自己总结的一些经验,全供参考。麦新杰是个死脑经,外加理想主义的软件开放高手,在很长的时间里面,自己除了C,什么别的都不会。 :cry:

1,.c和.h文件要放在一起吗?

其实我喜欢放在一起,就在一个目录下面,方便!连makefile也放里面。一个模块能有多少文件,多了就要分成多个模块。但是经典的设计思路是一个source文件夹,一个include文件夹,就让它经典吧。

2,对内公共.h

一种比较好的思路是定义一个***_in.h ,把公共的东西都放在这里面。或者***_common.h也可以呀!

[20090516]

如果每个.c文件都有对应的.h文件,而且对应良好,一个公共的.h用处也不大。还是按照需要什么,取用什么的思路比较好,代码的可读性也比较强。

3,对外接口

我喜欢定义一个***_pub.h,把对外的接口放在里面,包括函数,宏等。这样会造成同样的宏可能有多个定义的地方。只要使用得当,就没有问题。这样做的一个好处的兼顾了模块的独立性!

[20081018]

有同事非常反对这样的做法,即一个结构体在多个地方定义;反对也是有道理的。一个改进的思路是:模块自己要做好代码布局,哪些对外的,哪些对内的,哪些内外都要用的,按照内外划分之后,逻辑上是不是还要在分一下,不要把所有的东西都放到一个.h里面。

4,用传统的风格,.c文件都要对应一个.h文件。

尽量不要使用编译器的增强特性,不要有“文件后面的函数可以调用文件前面的函数”这样的思路。这样会让代码越来越乱的,除非有特殊情况。

[20081018]

传统的风格带来了几个好处:

  1. .c文件中的函数可以不用考虑前后顺序,调用关系随意;
  2. 宏定义都放到.h里面,结构非常好;
  3. 便于代码扩展,同时维持良好结构。

5,过分的最求代码布局的美观不现实。

最重要的是保证模块所提供的功能正确高效。

[20090317]

其实,代码美观是质量好的一个标志;美观的代码容易阅读理解,容易发现错误并容易修正;只是实际做到这一点很难,特别是很大的软件项目;因此,个人认为不间断的局部的对代码进行重构不失为一种改进代码质量的方法!

[20130125]

可以考虑用工具对代码格式进行强制调整;

6,一个模块越独立越好,随便copy到那个工程里面,小改几个参数就OK!

7,暂时用不到的代码怎么处理?

我喜欢把暂时无用的代码用#if 0注释掉,加上注释说明情况;如果是永远都用不到的代码,那就直接删除算了。但是现实总是不让人满意,对于这种简洁的艺术追求,领导是不赞同的,他们只会觉得删除了的代码如果还要用上,怎么办?你还能写得出来吗?

8,如何编写函数?

函数应该组成一个系统的最小单元,函数与流程相关,但函数又需要独立于流程;函数的不同的简单组合,就是一个不同的流程;不要为流程去写函数,而是写好了函数,组合成一个流程;函数要越简单越好,功能越单一越好;

9,什么样的函数需要设计返回值,什么样的函数不需要?

今天好像想明白这个问题了,不是所有的函数都是需要返回值的,那些申请资源的函数一般需要返回值,那些需要考虑成功或者失败的地方需要返回值,如果只是简单的计算,或者复杂一些的计算,但是只要是纯计算,这样的函数我觉得大多不需要返回值,有些函数只是将重复的代码集中起来,这样的函数当然也就不需要返回值了,返回值嵌套的层次不要太多,太多只能说明流程或者结构设计不太好。

函数可以做到完美,但是流程和结构是很难做到完美的!

所以,我大多数时候是尽力去做到函数的完美,流程和结构只要能够保证功能和性能的正确就OK。

本文链接:https://www.maixj.net/ict/c-5982

留言区

《C语言设计开发思考》有3条留言

  • 麦新杰

    汇编器引入symbol概念,解决了relocation的问题。C语言+编译,解决了代码可移植,比汇编更高效的开发等问题。汇编代码一般是不能移至的,除非CPU的ISA一样。 []

  • 麦新杰

    可以看出,当时对系统的理解是多么的苍白..... []

  • 麦新杰

    C语言是给OS写程序,直接在OS中运行。Python是给解释器写程序,在解释器中运行脚本。 []


前一篇:
后一篇:
-->只要几分钟回答问卷,就能轻松赚现金!

栏目精选

云上小悟,麦新杰的独立博客

Ctrl+D 收藏本页

栏目


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1。云上小悟网站部分内容来源于网络,转载目的是为了整合信息,收藏学习,服务大家,有些转载内容也难以判断是否有侵权问题,如果侵犯了您的权益,请及时联系站长,我会立即删除。

网站二维码
go to top