【问题标题】:What would be the correct variable name?什么是正确的变量名?
【发布时间】:2015-05-27 09:51:48
【问题描述】:

在实时嵌入式设备的实现中,我为每个通道都有一个状态寄存器变量(让我们盲目地假设我的嵌入式设备有多个通道,并且必须为每个通道完成一些工作)。

下面是当前声明状态变量的方式:

struct channel_status status[NCHANNELS];

考虑到性能,最好使用一个中间全局变量,它是所选通道的status 变量的副本。

例子:

struct channel_status status_shadow;

void some_work() {
    for(channel = 0; channel < NCHANNELS; channel++) {
        status_shadow = status[channel]; 
        foo(); // Function that use the status_shadow as global
        bar(); // "
        baz(); // "
        status[channel] = status_shadow;
}

我不是在讨论实现,也不是在讨论使用指针而不是变量的可能性。我的问题与中间变量的名称有关。

我选择了status_shadow,因为我觉得我在做某种shadowing

这种中间变量有更好/更准确的技术名称吗?

实施注意事项:

我决定使用这个中间变量的原因是因为将通道指针i或状态变量传递给每个函数foobarbaz、.. . 就性能而言,避免堆栈推送/弹出可以在实时应用程序中节省一些宝贵的时间。

【问题讨论】:

  • IMO,你没有遮蔽任何东西。您的方法只是循环法。我建议status_selected 或类似的。
  • 我喜欢status_shadow,很明显你在做什么。一个可能相关的术语是“工作集”,如果它是一组实际的变量,它可能是一个更好的名称。
  • OT:复制struct 也需要时间。这是否很少,然后将指针值推送到堆栈上几次可能是要讨论的主题。
  • current_status, active_status?我在这里看不到阴影。

标签: c naming


【解决方案1】:

从技术上讲,您不是在模仿;您必须定义一个具有相同 name 的变量来隐藏它。此外,阴影通常是不受欢迎的,因为粗心的使用会导致容易混淆。

您正在做的是为您的周期获取当前项目,因此合适的名称可能是current_statuscur_status。如果将其用作参数,则名称将只包含在for() 中,它也可能是currentcur_item

另一个想法可能是temp_channel_status,暗示尽管变量是全局变量,但该值不被视为固定值。

【讨论】:

    【解决方案2】:

    我想要一个名称,例如 work_statusstatus_copy

    【讨论】:

      【解决方案3】:

      您可以使用status_localstatus_local_copy

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 2012-12-08
        • 2016-12-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多