0

I am sure that this has been asked, but I can't find it through my rudimentary searches.

Is it discouraged to perform operations within string initializations?

  > increment = 4
 => 4 
  > "Incremented from #{increment} to #{increment += 1}"
 => "Incremented from 4 to 5"
4

2 回答 2

3

当然不会,因为这不是您在阅读代码时寻找改变事物的地方。

它模糊了意图,模糊了意义。


相比:

url = "#{BASE_URL}/#{++request_sequence}"

和:

request_sequence += 1
url = "#{BASE_URL}/#{request_sequence}"

如果您要查看序列号的来源,哪个更明显?

几乎可以接受第一个版本,但我可能会选择后者。我也可以这样做:

url = build_url(++request_sequence)
于 2013-07-22T18:38:02.470 回答
2

在您的特定情况下,这可能没问题,但问题是应该对变量进行操作的位置必须是字符串中同一变量的最后一个实例,您不能总是确定这一点。例如,假设(出于某种文体原因),你想写

"Incremented to #{...} from #{...}"

然后,突然之间,你不能做你所做的事情。因此,在插值期间执行操作高度依赖于字符串中的特定短语,这会降低代码的可维护性。

于 2013-07-22T18:59:38.120 回答