AND和OR应放在多行条件语句中的哪个位置?

时间:2011-06-06 15:45:16

标签: coding-style conditional

一个简单的编码标准问题:

AND和OR应放在条件陈述中的哪个位置?

选项1:

if (x = 1 
    AND y = 2
    AND z = 3)

if (x = 1 
    && y = 2
    && z = 3)

if (x = 1 
    OR y = 2
    OR z = 3)

if (x = 1 
    || y = 2
    || z = 3)

选项2:

if (x = 1 AND 
    y = 2 AND
    z = 3)

if (x = 1 &&
    y = 2 &&
    z = 3)

if (x = 1 OR
    y = 2 OR
    z = 3

if (x = 1 ||
    y = 2 ||
    z = 3)

我个人更喜欢选项1,因为它允许您快速注释掉某些条件 - 即在大多数脚本语言中使用“//”,但我更频繁地看到选项2,尤其是在代码格式化程序中。

有标准吗?

你更喜欢什么?

3 个答案:

答案 0 :(得分:4)

在“Code Complete”第2版,第754-755页中,Steve McConnell列出了两种线条延续模式的优点。

第一个标识不完整的行,但操作符隐藏在不规则的行中。

第二个突出了运营商。如果操作员不同,这可能很重要。

比较

  float total = ticketSalesBefore + 
                ticketSalesOnDayOfConcert + 
                tShirtSales -
                finesFromLocalPolice; 

为:

  float total = ticketSalesBefore
                + ticketSalesOnDayOfConcert
                + tShirtSales
                - finesFromLocalPolice; 

我个人更喜欢第二种,并建议在审阅McConnell的那一章草稿时加入它。

答案 1 :(得分:1)

选项1,绝对是出于您提到的相同原因。易于注释,易于复制等。

但是,如果它们是你所提到的小条件,我会将它们全部放在一行上。

答案 2 :(得分:1)

我更喜欢选项1,因为它突出了测试。对于Python编码,我通常同意PEP 8,但它们与选项2一起使用。