Mic*_*ant 3 ruby parameters optimization
我知道更少的参数更好,超过2(或3或4,取决于文献)是代码气味.
如果我有代码与params,如下所示:
class DoubleSeries
def self.generate_sequences(seq1_start, seq2_start, seq1_step, seq2_step, iterations)
seq1,seq2=seq1_start,seq2_start
result=[]
(1..iterations).each do
result << seq1 << seq2
seq1+=seq1_step
seq2+=seq2_step
end
result
end
end
Run Code Online (Sandbox Code Playgroud)
当它们全部提供功能时,如何减少5个参数的数量?
我想如果你想严格遵守Sandi Metz的规则,那么OOP方式就是你要走的路.
class Sequence
attr_reader :start, :step
initialize(start, step)
@start = start
@step = step
end
end
sequence_1 = Sequence.new(seq1_start, seq1_step)
sequence_2 = Sequence.new(seq2_start, seq2_step)
class DoubleSeries
def self.generate_sequences(sequence_1, sequence_2, iterations)
item_1, item_2 = sequence_1.start, sequence_2.start
result=[]
iterations.times do
result << item_1 << item_2
item_1 += sequence_1.step
item_2 += sequence_2.step
end
result
end
end
Run Code Online (Sandbox Code Playgroud)
[我的代码(迈克尔):
