定义特定于条件的变量是好的做法吗

Is it good practice to define variables specific to conditions

说我有这样一个程序(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 是 correct/good 设计实践吗
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)

我想说这样做的一个好处是你可以很容易地看到算法中的哪个 "path" 属于 var,并且新的变量名称可能更相关(特别是在向预先存在的条件添加条件时当原始变量名称 "var" 可能有意义并且与算法中的原始路径相关并且可能与新算法中的相同路径相同时的算法,但对于辅助添加的路径可能没有意义/相关。
在错误的一端,我会说它可能更容易产生错误,因为如果您引用一个尚未定义的名称,编译器或程序在执行期间将抛出异常。
也就是说,这也可以被视为一个优势,因为它更容易匹配变量的路径。

你怎么看?事实上,命名约定通常被定义为与良好的设计相结合,但我认为问题远不止于此,所以它并不是特别基于 python (我只是使用它,因为它主要对任何理解 [=25 的人来说都是可读的=]).

我认为第一个示例是定义变量的更好方法。它更容易调试,并且由于它是由 if/else 子句设置的,因此将它作为一个公共变量更有意义。

你声明的变量越多,需要的变量就越多space,因为这个特殊的问题可以用一个变量来处理,所以第一个设计成功了。由于未定义错误而导致错误的部分 [这是错误的代码原则] 将您的变量初始化为适合您的算法的值,如果它与 foo 或 bar 不匹配,则在后续代码中捕获该变量,这意味着什么else 与您的代码一致。

怎么样:

print(f"training of foo :{intermediate_process(process1())}" if boolean else
      f"testing of bar :{intermediate_process(process2())}")

我认为这样更清晰,并且不需要您记住代码中前面定义的奇怪变量。我明白,在更高级的情况下,你不一定能把它简化成这么简单的一行,但没有具体的例子,很难讨论什么是"best practice"。我想不出有一个是不是很明显占位符的名称(例如中间总和)或者由于添加太多变量而实际上失去了清晰度。