已分配/未分配字符串的命名约定

时间:2011-06-28 15:15:18

标签: c string naming-conventions memory-management

是否有任何通用的命名约定来区分已分配和未分配的字符串?我正在寻找的东西希望类似于us / s Making Wrong Code Look Wrong,但我宁愿使用一些常见的东西而不是自己制作。

1 个答案:

答案 0 :(得分:1)

本文中的us / s约定有点用处,但它错过了更重要的一点。关键是变量命名约定只能像文档一样保护错误。

例如:

#Version 1

char* sHello = "Hello";
printf("%s\n", sHello);

最终被修改为

#Version 2
char* sHello = "Hello";
... 100 lines of code ...
sHello = realloc(sHello, strlen(sHello)+7);
strcpy(sHello+strlen(sHello), " World");
... 100 lines of code ...
printf("%s\n", sHello);

当你真的想要使编码约定工作时,你不能依赖某种任意的(是的,它们都是任意的)命名约定。您必须使用失败构建的方式备份该命名约定。在上面的例子中,明智地使用关键字const就可以做到这一点,但是编码惯例会让人们自满,因为它以某种方式命名。

这又是文档问题,最终代码内文档与代码不同步,并且您的代码内命名约定最终会与这些名称的使用不同步。

现在,如果您想要向C添加输入信息(这实际上是您所获得的),请通过实际将类型添加到c,typedef的系统来实现。然后安装一个系统,该系统可以验证在需要时是否未使用该类型并使构建失败。在事后搜索/维护/清理之后,其他任何事情都会花费你太多,而且实现编码风格的一半甚至比糟糕的编码风格更糟糕。