是否有任何通用的命名约定来区分已分配和未分配的字符串?我正在寻找的东西希望类似于us
/ s
Making Wrong Code Look Wrong,但我宁愿使用一些常见的东西而不是自己制作。
答案 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
的系统来实现。然后安装一个系统,该系统可以验证在需要时是否未使用该类型并使构建失败。在事后搜索/维护/清理之后,其他任何事情都会花费你太多,而且实现编码风格的一半甚至比糟糕的编码风格更糟糕。