代码之家  ›  专栏  ›  技术社区  ›  Maciek

C-用通用定义/常量/枚举等创建代码文件?

c#
  •  4
  • Maciek  · 技术社区  · 15 年前

    在C++中,我经常创建一个包含常量、枚举、α定义、宏等的代码文件。

    C中的最佳实践是什么?我是否创建一个静态类并用该数据填充它?还是有别的办法?

    5 回复  |  直到 15 年前
        1
  •  6
  •   Marc Gravell    15 年前

    枚举不需要静态类-它们可以是顶级的(意思是:命名空间级别)。是的,您需要一个常量类(静态类就足够了),但是我倾向于有多个类——每个意图一个。没必要把它们都塞进一起。

    在C语言中,任何 #define 只应用于该文件,因此没有太多的意义为它们建立一个类(而是将它们放在项目/构建脚本中)。宏不存在。

        2
  •  4
  •   David Basarab    15 年前

    如果您有一些要全局定义的项,比如一组字符串,那么我将使用一个具有静态属性的静态类。如果你要在一个以上的地方使用它,我会这样做的。

    如果您要使用一个定义好的字符串,例如只在一个地方,那么我将把它放在引用它的类中。

    使用非常重要 属性 不暴露成员。我发现,C++开发人员在移动到C语言时已经工作了,它们公开成员,因为它们不需要“属性的特殊逻辑”。当您最初编写代码时,这可能是真的。如果您将它公开为一个成员,并且需要执行特殊的逻辑,那么您必须以一种主要的方式进行重构。而如果以属性开始,则可以添加逻辑而不进行重构。

    对于Enums,i tpyily在表示命名空间的文件夹中定义一个Enum.cs文件。而不是在静态类中定义它们。

        3
  •  3
  •   Simon P Stevens    15 年前

    宏指令 :
    宏在C中不存在。

    γ定义 :
    定义是非常有限的,只用于条件编译。您应该使用项目属性(或在msbuild脚本中)来定义它们。

    枚举类型 :
    枚举应分别放在各自的单独文件中。它们不需要在类中,只需要直接进入名称空间。

    常量 :
    就我个人而言,我尽量将常量保持在最小值,并尽可能在类内保持私有。

    如果您必须将它们公开并全局可用,请使用静态类(如果它们与一个类直接相关,则使用普通类)。试着根据它们的使用将它们分组到类中。

    如果您谈论的是字符串常量,那么如果它们是可本地化的字符串,则可以考虑改用资源文件。

        4
  •  2
  •   Patrick Karcher    15 年前

    通常有一个类或结构,您的枚举等特别适用。我把它放在那个文件里,在课堂下面。从代码中使用的任何地方都很容易找到定义。如果可能的话,我尝试将名称空间(或其他逻辑分组)的所有类似实体放在同一位置。

        5
  •  1
  •   foraidt    15 年前

    我已经反对C++中的那个练习了。
    在需要的地方定义那些东西,而不是在一个“dump”文件中。随着时间的推移,这种文件往往会积累大量未使用的内容。很难清理,因为谁知道,你的代码中有哪些部分在使用它…