我们如何编写(简单的)变量" toggle"?

时间:2020-03-06 14:54:56  来源:igfitidea点击:

给出以下成语:

variable = value1
if condition
  variable = value2

解决方案

switch语句也可以。如果它很简单并且有2或者3个以上的选项,那就是我所使用的。

我倾向于自己大量使用#1. " if condition"比" if!condition"读起来容易,尤其是如果我们对"!"怀有强烈的渴望,那至少是我想起的。

我所做的大多数编码都是使用C#,但是除非我使用(主要是)局部变量,否则我仍然倾向于避免使用三元运算符。如果在某个结构的深处调用三层,则在三元运算符中,行往往很快变得很长,这又很快降低了可读性。

我更喜欢方法3,因为它更简洁并且是一个逻辑单元。它只设置一次值,可以作为一个块移动,并且不那么容易出错(发生的情况,尤其是在方法1中,如果设置为value1并检查并可选地设置为value2由其他语句分隔)

在这种情况可能不会发生的情况下。我会选择1或者2. 否则,它只是基于我想要代码执行的操作。 (即我同意巡航者)

如果没有...,我倾向于使用...返回。

但这就是我们要返回变量的情况。首先消除不符合条件的资格往往会使其更具可读性。它实际上取决于语句的上下文以及语言。 case语句在大多数情况下可能会更好地工作并可读,但是在VB下性能会受到影响,因此在该特定情况下,一系列if / else语句更有意义。

方法1或者方法3对我来说。方法1可以避免额外的示波器进入/退出,但是方法3可以避免额外的分配。我倾向于避免方法2,因为我试图使条件逻辑尽可能简单(在这种情况下,!无关紧要,因为它可以重写为没有方法1的方法),并且相同的原因也适用于方法4.

这取决于我要测试的条件。

如果是错误标志条件,那么我将使用1)设置错误标志以捕获错误,然后如果条件成功,则清除错误标志。这样就不会丢失任何错误情况。

对于其他一切,我会用3)

在我脑海中很好地阅读代码时,NOT逻辑只会增加混乱,不能代表其他意思:-)

如果变量具有自然的默认值,我将使用#1. 如果任何一个值都同样适合(默认)默认值,那么我将使用#2.

variable = value2
if not condition
  variable = value1

3)

if condition
  variable = value2
else
  variable = value1

4)

if not condition
  variable = value1
else
  variable = value2

Which do you prefer, and why? 

We assume the most common execution path to be that of condition being false.

I tend to learn towards using 1), although I'm not exactly sure why I like it more.

Note: The following examples may be simpler—and thus possibly more readable—but not all languages provide such syntax, and they are not suitable for extending the variable assignment to include more than one statement in the future.

variable = condition ? value2 : value1
...
variable = value2 if condition else value1

没有理由不以确实提供这种语法的语言使用它们。顺便说一句,这包括我最后一次提到之后的所有当前主流语言。

Note: The following examples may be simpler—and thus possibly more readable—but not all languages provide such syntax

这是真实的。但是,通常可以肯定的是,这样的扩展将永远不会发生,因为"条件"将始终产生两种可能情况之一。

在这种情况下,我总是会喜欢表达式变体而不是语句变体,因为它减少了句法混乱并提高了表达能力。在其他情况下,如果语言允许,我倾向于使用前面提到的switch语句。如果不是,则退回到通用的" if"。

3)是我们想要发生的事情的最清晰表达。我认为所有其他人都需要一些额外的思考来确定哪个值最终会出现在变量中。

在实践中,如果我使用支持它的语言,我将使用三元运算符(?:)。在可能的情况下,我宁愿以功能性或者声明性风格来撰写文章,也不愿使用命令性的文章。

这取决于。我喜欢三元运算符,但是有时使用" if"语句会更清楚。我们选择四种选择中的哪一种取决于上下文,但是我倾向于选择使代码的功能更清晰的方法,并且因情况而异。

标题数量不匹配

标题数量不匹配

代码数量不匹配