我有一个对象代表地图上某个点的计算结果。
class Radiation
attr_accessor :node
attr_accessor :hash_of_results
others....
def initialize(node, sky, weather, etc.)
....
end
def calculations
......
end
end
在我的代码中,我可以拥有数千个这样的对象。另一种解决方案是
class Radiation
attr_accessor :node
attr_accessor :hash_of_results
def initialize(*node, sky, weather, etc.)
....
end
def calculations
......
end
end
在这种情况下,Radiation表示整个字段,因为我传递的是节点数组,其他变量(天空,天气等)完全相同。
我的问题是:两种方法中哪一种在内存和性能方面更好?它们是等价的吗?也许天真地我倾向于认为第二种方法应该更好,因为第一种解决方案我必须创建更多这些对象的实例。
答案 0 :(得分:2)
您的问题不是特定于Ruby的。它属于对象建模领域,而不是特定的编程语言。因此,如果我是你,我会先构建一个可靠的域模型,然后实现一些任务。完成此操作后,如果出现任何问题,可以继续进行优化。而且我可以根据我的经验告诉你,他们中的大多数你现在都没有预料到。
说到设计,我推荐给你一本精彩的经典书籍,埃里克·埃文斯不出所料地叫做“领域驱动设计”#34;
现在某些问题更具针对性。
对于我对你的问题的了解,在我看来应该有更多的课程。一个好的开始是看看实际过程是如何在现场发生的,提取名词和动词并与它们一起使用。例如,类可以是以下内容:
RadiationMeasurement
- 某个点的辐射值,轻量级结构EnvironmentalConditions
- 您将sky
,weather
等命名为RadiationCondition
- 一个包含EnvironmentalConditions
值对象和RadiationMeasurement
值对象数组的对象。我很确定这种分解对你来说完全是胡说八道,因为你知道你的区域比我更好,但它应该提供一个基本的想法。这种方法的优点在于,从计算的角度来看,它需要进行一些合理的调整才能提高效率。
希望这是有道理的,至少有一点帮助!