【问题标题】:When should I use a hash vs a class [closed]我什么时候应该使用散列与类[关闭]
【发布时间】:2014-05-19 17:32:36
【问题描述】:

我一直在说“如果是数据存储,使用哈希/数组,如果涉及方法,使用类”,但我可能正在重新考虑这个说法。

我有一个哈希值,用于绘制父/子关系。下面列出了此哈希。它正在成为一个非常大的数据集,虽然它可以很好地存储在 JSON 对象中,但如果/当出现问题时,它变得难以调试,并且由于数据结构是如此紧密耦合,因此添加或删除信息变得更加困难。

我是否应该有一个用于 Test、Feature 和 AllTests 的类,其中 Features 是 AllTests 内的 Feature 类型数组,而 Tests 是附加到 Feature 的 Test 类型数组?从可读性和松散耦合的角度来看,我觉得这是更好的解决方案,但我觉得我通过使用类而不是哈希映射来增加复杂性。想法?

{all_tests =>
  {features =>
    {feature_name => ,
     feature_line_number => ,
     test =>
      {test_name => ,
       test_line_num => ,
       test_status => ,
       error_message => }
    }
  }
}

【问题讨论】:

  • 增加了什么复杂性?拥有一组已知的访问器和方法并不比使用相同的方法名称包装一个哈希更复杂,这样您就不会粗暴地使用哈希键。
  • 所以你不相信Value Objects我接受。此外,您已使用两种语言标记此问题,但每种语言的答案可能不同。

标签: java ruby class hash hashmap


【解决方案1】:

从 OO 的角度来看(并且您正在使用 Java 编程...),您应该为此使用类。

我认为它根本不会增加任何复杂性。这就是课程的目的。如果这些类除了 getter 和 setter 之外没有任何方法,那么这就是所谓的 TO(传输对象)的地方。即使这不应该被视为设计参数,当然它比哈希更易于调试。

【讨论】:

  • 为了扩展这一点,我决定改变我们的设计模式以包含一个数据库。通过将模式更改为数据库 ORM,它使类选项变得轻而易举
猜你喜欢
  • 2012-12-23
  • 2021-07-13
  • 1970-01-01
  • 2017-09-11
  • 1970-01-01
  • 2022-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多