组合爆炸你有很多代码几乎都在做同样的事情……但在数据或行为上有微小的变化。这可能很难重构——也许使用泛型或解释器?- 杰夫阿特伍德通过编码恐怖
在这种情况下,它不是很多代码,但它仍然困扰着我。我有一个共同的问题,即尝试连接到 IP 时,如果失败,我应该使用下一个 IP 重试。
我有一个函数可以为 NSQ 生成一个生产者:
//Since we are in a critical system, we try with each IP until we get a producer
var err error
for i, success := 0, false; i < len(ips) && !success; i++ {
publisher, err = nsq.NewProducer(ips[i], nsq.NewConfig())
if err == nil {
success = true
}
}
另一个几乎共享相同代码的函数是一个接受 NSQ 消费者并连接它的函数:
var err error
for i, success := 0, false; i < len(ips) && !success; i++ {
err = consumer.ConnectToNSQD(ips[i])
if err == nil {
success = true
}
}
我想在不牺牲易读性的情况下摆脱这个几乎重复的代码。想法?
aluckdog
大话西游666
相关分类