【问题标题】:Fixed-length integer datatypes固定长度整数数据类型
【发布时间】:2009-09-14 10:30:55
【问题描述】:

我读过软件设计中的Zero One Infinity rule

为什么叫这个?根据软件及其工程师的实际行为,这不是更好地称为零一二亿四千七百万四十八万三千六百四十八条规则,或者也许是零一四十亿二亿九千四百万六万七千二百九十六法则?

【问题讨论】:

标签: int


【解决方案1】:

上限不应该有“幻数”的规则要点。然而实际上很难做到这一点,因为实现有一些限制,比如整数的宽度和类似的东西。关键是当你从 N 位整数转移到 N+K 位整数时,软件设计应该自然地处理它——你不应该仅仅因为这种变化而重新设计一切。整数表示限制在这里不应是“幻数”。

【讨论】:

  • 我同意他们不应该是幻数:问题是,为什么他们?如果几十年前的 Lisp 可以将 bignums 作为原生数字处理,我们还有什么抱歉的借口?
  • 顺便说一句,我自己使用幻数是因为我只想完成工作,而不是想把所有事情都概括一下。在我最近创建的一个 bignum 库中,基数 1000 是一个神奇的数字,为了让我自己(和其他人)接受它,我给函数起名为 chilAdd、chilSub 等,其中“chil”是 chiliadic 的缩写。
【解决方案2】:

因为它只是建议人为限制实体实例数量的指导是愚蠢的。人们可以很容易地证明确保某种事物的存在为零(即黄色大象)是合理的。人们也可以证明只有一件事是合理的(即一个妻子或丈夫)。然而,超过这个限制,就更难说“好吧,我们只允许 5 个 Foos” - 限制通常(但不总是)相对随意 - 有人总是想要 6 个或 15 个等等。

因为它只是一个经验法则,专为人类设计,无限的上限被解释为“任意数量”。将其固定在给定的数字会破坏规则的要点。

【讨论】:

  • 那么,为什么“我们只允许 32 位”(对于整数)?
  • 我们不这样做 - 这是一个实施选择。许多语言/框架具有任意精度整数
【解决方案3】:
  1. 该建议会根据您的实施细节更改规则名称 产品。
  2. 该建议使规则名称难以使用。
  3. 这个建议是不是有点可笑?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多