gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 04:05:29 29 4
gpt4 key购买 nike

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

最佳答案

文章中的 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 来完成。然后建立一个系统,该系统可以验证该类型是否在需要时未被使用并导致构建失败。任何其他事情都会让您付出太多事后搜索/维护/清理的代价,而且实现的编码风格有一半甚至比糟糕的编码风格还要糟糕。

关于c - 分配/未分配字符串的命名约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6508778/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com