主要()应该有多大?

Jos*_*ern 12 c gnu

我在假期周末学习了一点C,我开始研究用C编写的其他程序.我最后看了GNU Netcat,认为这将是一个很好的例子.

看到600线main()功能让我有点震惊.这是正常的吗?如果这是正常的,这被认为是良好的C编码实践吗?

Car*_*icz 22

引用了一位美国总统(林肯?),他被问到男人的腿应该多久."足够长,可以从他的身体到达地面,"他说.

回到主题:

像"清洁代码"这样的书的作者宣称每个函数只做一件事(我在这里大大简化了),所以理论上你main()应该调用一个初始化函数,然后调用应用程序工作的另一个函数,就是这样.

在实践中,许多程序员发现许多微小的功能令人恼火.一个可能更有用的指标是功能通常应该放在一个屏幕上,如果只是为了让它更容易看到和思考.

如果一个程序很复杂并且其大部分功能都在其中main(),那么某人就没有做出体面的工作来解决问题.从本质上讲,您应该努力实现可管理性,可理解性和可读性.主要()通常没有充分的理由是巨大的.

  • 为什么太长了?浏览netcat的main(),它按照设定的顺序执行许多操作,并清楚地描述了部分.由于没有重复的代码,拆分函数只会起到与每个代码段之前放置的注释相同的目的,除了塞进标识符而不是漂亮的英语句子.我只是在捍卫netcat的main()成为魔鬼的拥护者......真正的一点是,全局不可能应用任何长度指标.清晰度是最重要的问题,它有时只与长度有关. (6认同)

Jos*_*hua 7

我经常在某些类型的应用程序中发现main()有数百行初始化,然后是大约20行顶级循环.

在我需要打电话给他们两次之前,我的习惯是不要破坏功能.这有时会导致我编写一个300行函数,但只要我看到同一个块出现两次,我就会打破该块.

至于主要的,初始化例程通常是一次,因此600行听起来不合理.