gpt4 book ai didi

ruby - 在类中使用 ruby​​ attr_readers(与仅使用实例变量相比)?

转载 作者:数据小太阳 更新时间:2023-10-29 08:44:36 24 4
gpt4 key购买 nike

我正在构建一个系统,该系统使用大量小类来进行数据处理(每个类都执行不同的处理步骤,不错且类似于 SRP)。我用一些参数初始化每个类,然后调用该类的 execute() 方法,然后该类使用其他私有(private)方法进行一些数据计算。

我的问题是:如果我不访问类外的任何参数,我应该只使用私有(private)方法中的实例变量吗?或者定义一个 attr_reader?

例如,这是我编写的一些人为设计的代码:

class Car
attr_reader :make

def initialize(make, model)
@make = make
@model = model
end

def execute
apply_paint
rotate_tires
end

private

def apply_paint
if make == "Toyota"
Painter.paint(self, "red")
else
Painter.paint(self, "green")
end
end

def rotate_tires
if @model == "Sequoia"
set_tire_size(:large)
else
set_tire_size(:normal)
end
end
end

那么哪个更好呢?我如何处理“制作”或如何处理“模型”?

如果我知道我根本没有在这个类之外使用这些变量中的任何一个,我是否应该坚持使用实例变量?还是使用 attr_reader 更好,因为这样我就可以将它们转换为实际方法而无需更改其余代码...即因为 apply_paint 使用 make 而不是 @make,如果需要,我可以将 make 更改为本地方法,而不更改 apply_paint 方法。

我一直在犹豫,不知道哪个更好。也许这只是一个偏好的事情,但我想看看其他人对这个问题有什么想法。

最佳答案

使用 attr_ 方法。如果您不在类之外访问它们,您可以(并且可能应该)将它们设为私有(private)。为什么要使用它们?您可以通过说明您对如何使用它的意图来提高可读性。 attr_reader 应该被解释为“这个变量应该只被读取”。

关于ruby - 在类中使用 ruby​​ attr_readers(与仅使用实例变量相比)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33457024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com