分类: C/C++
2008-04-23 21:49:27
C/C 作用域引申出的编码规范
作者: 周星星
以下就是一个对变量/过程的作用域和生存期的演示:
在很多地方都可能会用到的函数或类型()
{
};
一个功能函数或类型()
{
仅在此函数或类型中用到且多次用到的子函数或子类型() // C 没有子函数这一说法,可以使用函数对象(仿函数)替代
{
};
在接下来的部分也需要用到的变量; // 注意这个分号
{
仅在这个{}中用到的临时变量;
仅在此函数或类型中用到且只用到一次的功能段
}
函数或类型其他部分;
};
这样就将变量和过程局限在它们应有的空间中,避免了变量和过程对以后的变量和过程的污染,尤其在代码量很大的程序中,而且因为有了{}区分不同的功能代码,使得程序可读性增强。当然一切还是了可读性,看以下这个情况:
某个功能代码的第一行;
某个功能代码的第二行;
某个功能代码的第三行;
{
只为此功能实现一次的,由与此功能无逻辑关系的代码第一行;
第二行;
…… ;
第 n行;
}
某个功能代码的第四行;
某个功能代码的第五行;
某个功能代码的第六行;
这样实现也许逻辑清晰,但在代码编辑器中需要非常麻烦的上下翻页才能看到连续的功能代码,而且{}中的代码太长,像个丑陋的补丁,这时候将{}中的代码移到一个独立子函数中比较适合,就变成了
某个功能代码的第三行;
{
call子函数( 参数s ); // 上下的{}可以不要
}
某个功能代码的第四行;
当然前面也提到过如果这个子函数和这个功能代码段的耦合性太强的话,就需要传递很多的参数,这没有什么好的方法,因为这毕竟是为了可读性而作出的妥协。
局部类(比如定义在函数内部的类)有一些令人不快的功能限制,比如没办法作为模板参数,我还不知道在c 中为什么有这样的限制,但这一点确实确实令人不快。
短文完毕,编码规范有很多,希望这篇短文可以起到抛转引玉的作用,谢谢!