由Hello World的世界看世界

前言

以前总是自诩一门自己比较有天赋的学科,每每看到一些文章和句子,眼前就能浮现时态、句型、词组、惯用法等一些概念,相当于重复学习,反复强化。

对于C编程语言中,看到简单的不能再简单的Hello World程序示例,好像也有这种感觉,有种从其中能够看到另外一个更丰富的世界

Hello World Example

#include 

int  main(void)
{
  printf("Hello World!\n");
  return 0;
}

Hello World程序代码确实挺简单,很多人都一扫而过,觉得只是一个玩具

预备知识

在讲到程序模块搭建时,除了高内聚、低耦合的理论外,还有高扇入、低扇出的理论

原则上讲模块应该保持高扇入、低扇出!

如果从调用和依赖的观点来看

  • 扇入就是被调用或被依赖
  • 扇出就是调用或依赖第三方

所以,高扇入意味着被使用、复用的越多;低扇出意味着依赖比较少。

高扇入也是有代价的,适当场景需要权衡利弊

对高扇入的模块的修改会影响到的其它模块就比较多。所以,这些高扇入模块必须具备稳定、简单的特点。

如果就像螺丝钉一样通用,保持高扇入又何妨?!

由Hello World的世界看世界

#include 
  • 必须要包含其它头文件,以利于使用其它模块的类型、枚举、宏、函数、函数宏、甚至全局变量

  • 程序代码搭建,建议预先思考它的头文件体系,或可以看成模块体系

  • 头文件与具体的实现代码无关,仅与逻辑概念、接口和类型相关

  • 头文件体系,建议首先进行自顶向下进行思考方式,每层根据概念和约束条件划分接口和定义类型,然后逐层发散

按照信息论指导,全信息参数设计是一把利刃

  • 自底向上或从建筑学意义上来看,头文件又像一个金字塔,居于更下层的公共组件通常具有高的扇入。
    不过,这个金字塔最好不是实心的,某些头文件之间可以像在金字塔内发散生长的树一样,保持独立和不交叉
  • 复杂一点的程序建构头文件会组成的文件体系森林
  • 自顶向下和自底向上的思考方式,需要兼而有之
int  main(void)

main函数作为可执行程序的入口,是C语言中人尽皆知的编译约定

main函数可以被传递参数,另外一种实现版本为int main(int argc, char* argv[])

printf("Hello World!\n");

调用其它模块的函数,以利于实现某种功能。此处为向标准输出打印Hellow World字符串
在main函数中调用其它模块函数,与所有函数类似,应需要保持合理的扇出,以控制函数的复杂度

经常讲事不过三,大于三就是比较大的数量,以及心理学上超过6位数的数字都难以记忆的规律,每个函数扇出概念划分最好不超过6

C程序代码需要经过编译,才能运行,与其它解释执行的语言存在区别
解释执行的语言代码,没有所谓的编译过程
存在编译过程的语言,一般为强类型语言

结束语

以小见大,其它语言Hello World代码示例基本上说明了它的基本要点

你可能感兴趣的:(c&c++技术,笔记,C语言,HelloWorld,设计经验)