假设我有这样一个程序(python不过是一道算法题):
if boolean == true:
commonvar = process1()
var = "foo"
else:
commonvar = process2()
var = "bar"
result = intermediate_process (commonvar)
if boolean == true:
print ("training of {} :{}".format (var, result)
else :
print ("testing of {} :{}".format (var, result)
在 say 中修改 var 是否正确/良好的设计实践:
if boolean == true:
commonvar = process1()
var_true = "foo"
else:
commonvar = process2()
var_false = "bar"
result = intermediate_process (commonvar)
if boolean == true:
print ("training of {} :{}".format (var_true, result)
else :
print ("testing of {} :{}".format (var_false, result)
我想说这样做的一个好处是你可以很容易地看到算法中的哪条“路径”属于 var,并且新变量名称可能更相关(特别是在将条件添加到现有算法时,原始变量名称“var”可能有意义并且与算法中的原始路径相关,并且可能与新算法中的相同路径相关,但对于辅助添加的路径可能没有意义/相关。
在错误的一端,我会说它可能更容易产生错误,因为如果您引用一个尚未定义的名称,编译器或程序在执行期间将抛出异常。
也就是说,这也可以被视为一个优势,因为它更容易将路径与变量匹配。
你怎么看?事实上,命名约定通常被定义为与良好的设计相结合,但我认为问题远不止于此,所以它不是专门基于 python 的(我使用它只是因为它对于任何了解编程/英语的人来说都是可读的)。
最佳答案
关于:
print(f"training of foo :{intermediate_process(process1())}" if boolean else
f"testing of bar :{intermediate_process(process2())}")
我认为这要清楚得多,并且不需要您记住代码中前面定义的奇怪变量。我明白,在更高级的情况下,你不一定能将它简化为这么简单的一行,但没有具体的例子,很难讨论什么是“最佳实践”。我想不出有什么地方可以立即明确占位符的名称(例如中间总和),或者由于添加太多变量而实际上失去了清晰度。
关于python - 定义特定于条件的变量是好的做法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43778550/