看过一些关于代码封装的规范的书,不乏一些国外大牛的书,我印象比较深的比如:一个函数的代码不应该超过20行。
我是从来没有遵循这个规则,也不太能理解为什么要这样做的原因。我自己始终觉得“业务完整性”的表述更重要。比如一个“业务”实现的代码,如果要通过多个函数,甚至于多个逐层调用的函数来完成,这种业务代码在我来看,是很难阅读的(需要不断的进入/跳出函数,这很打断思路),所以我自己的习惯始终是,一个“业务”的代码,顺序读下来,代码间分段明确,注释足够,阅读效果是最好的,几百行代码读起来完全不费劲。
当然,我以前不太写c代码,我写的是c#这种代码,使用的是VS这种高级IDE,是不是这种高级语言和高级IDE下,代码规范如我这样写更好?我也只是猜测。
最近在看一个历史项目的c代码,把我这个疑问又勾起来了,我把它作为案例,拿出来问问大家。
它是这样的,在一个实现中,封装了七八层函数,这些函数都只被调用过一次,也就是函数封装起来只是被一个地方调用。那我就奇怪了,这样的话封装起来干嘛?封装起来不应该是为了“复用”吗?
这些函数,依次被调用,且仅调用一次:
parseVarBind()
parseSequence()
parseSequenceOf()
parseRequest()
parseCommunity()
parseVersion()
parseSNMPMessage()
SnmpXDaemon()
代码类似:
SnmpXDaemon()
{
//一些代码
parseSNMPMessage()
{
//一些代码
parseVersion()
{
//一些代码
parseCommunity()
{
//一些代码
parseRequest()
{
//一些代码
parseSequenceOf()
{
//一些代码
parseSequence()
{
//一些代码
parseVarBind()
{
}
//一些代码
}
//一些代码
}
//一些代码
}
//一些代码
}
//一些代码
}
//一些代码
}
//一些代码
}
请问:
这种封装方式,每个函数的代码量是不多,每个函数不超过50行,但
1、这种封装方式合理吗?
2、如果合理,为什么合理?