擅长:python、mysql、java
<p>@丹</p>
<blockquote>
<pre><code>if otherString:
stringValue = otherString
else:
stringValue = defaultString
</code></pre>
<p>This type of code is longer and more expressive, but also more readable</p>
</blockquote>
<p>嗯,是的,时间更长。不太确定“更具表现力”和“更具可读性”。至少,你的要求是有争议的。我甚至会说这是彻头彻尾的错误,有两个原因。在</p>
<p>首先,您的代码强调决策(相当极端)。另一方面,条件运算符强调其他东西,即值(resp。上述价值的分配)。这正是这段代码的作者想要的。决策实际上是代码的副产品。这里的重要部分是赋值操作。您的代码在大量语法噪音中隐藏了这个赋值:分支。在</p>
<p>您的代码表达能力较差,因为它将重点从重要部分转移。在</p>
<p>即使这样,您的代码也可能胜过一些晦涩难懂的ASCII艺术,比如<code>?:</code>。最好使用内联-<code>if</code>。就个人而言,我不喜欢Python2.5引入的变体,因为它是向后的。我更喜欢读与C三元运算符相同的流(方向),但使用单词而不是ASCII字符:</p>
<pre><code>C = if cond then A else B
</code></pre>
<p>这是轻而易举的胜利。在</p>
<p>不幸的是,C和C没有这样的表达方式。但是(这是第二个论点),C语言中的三元条件运算符建立得太久了,它本身已经成为一种习惯用法。三元运算符与“常规”<code>if</code>语句一样是语言的一部分。因为这是一个习语,任何懂这门语言的人都会立即正确地阅读这段代码。此外,它是表达这些语义的一种非常简短、简洁的方式。事实上,这是可以想象的最短的方法。它非常有表现力,因为它不会用不必要的噪音掩盖本质。在</p>
<p>最后,Jeff Atwood写了一个完美的结论:<a href="http://www.codinghorror.com/blog/archives/000878.html" rel="noreferrer"><strong>The best code is no code at all</strong></a>。在</p>