【问题标题】:Should I make a global constant variable for forever-constant value such as a count of soccer players?我应该为永远不变的值(例如足球运动员的人数)创建一个全局常量变量吗?
【发布时间】:2014-11-08 19:00:03
【问题描述】:

我正在编写一个足球模拟器,我需要在许多源文件中多次写入数字11。

我在 continue 中遇到了两种可能的编写代码的方式:

  1. 轻松写11,因为它永远不会改变,也不介意我自己;或者,

  2. 制作const int COUNT_OF_SOCCER_PLAYERS=11。

    如果是这样,我应该在一些头文件中提取这个常量(可能是constants.h)和include这个头文件我需要的任何源文件11!

我现在该怎么办?

换句话说,我为什么不写11。这有什么问题?

(请回答所有永久常数值的一般问题)

【问题讨论】:

  • 您可以这样做(使其在标准命名空间中成为全局)。只是个人喜好的问题。但是如果:不要使用其他事情可能需要的名称。
  • 为什么不使用 11:以便其他阅读代码的程序员(或者您,在您忘记每一行的想法之后)快速理解 11 的含义,而不用想太多.
  • 一般来说,使用“幻数”是不好的,因为通常很难知道它们的含义。但这并不像那样明确,因为对于特定程序,数字可能很明显。例如,在纸牌游戏中使用数字 52,或者在足球游戏中使用数字 11,那么它们的含义就很明显了,而且它们永远不会改变。但是对于其他可能不明显的数字,或者可能会根据要求而变化,那么使用符号名称会更好。
  • 你不需要写这么长的变量名,NPLAYERS 就可以了。通常的原因是维护,以防以后发生变化。这是一个不可能的风险。不过后来遇到NPLAYERS你就知道是什么了想保留等等……
  • 谢谢大家。我明白了:)

标签: c++ coding-style refactoring constants


【解决方案1】:

一般来说,您可能应该使用一个常量值,即使它看起来是多余的,以提高代码的可读性/灵活性。我个人建议将其放在头文件中以将值保存在一个位置

【讨论】:

    【解决方案2】:

    如果这个 COUNT_OF_SOCCER_PLAYERS 被许多模块使用,那么最好制作一个单独的头文件,您将在其中放置所有 const。

    通过这种方式,const 的使用被本地化到一个地方,它肯定有助于维护。

    【讨论】:

      猜你喜欢
      • 2017-02-12
      • 2018-10-12
      • 1970-01-01
      • 2022-07-12
      • 1970-01-01
      • 2012-02-25
      • 2014-09-18
      • 1970-01-01
      • 2013-11-16
      相关资源
      最近更新 更多