在我工作的地方,我看到很多用PL / SQL编写的以下类型的代码,
IF a>b THEN
NULL;
ELSE
c:=a*b;
END IF;
我发现这很奇怪,因为C等价物看起来像这样,
if (a>b)
{
}
else
{
c=a*b;
}
以上类型的代码在C论坛中被认为是不好的风格,我知道当新手发布时。 由于PL / SQL不允许空块并且总是需要NULL语句,这种类型的编码风格是否具有w.r.t可读性的任何优点,还是仅仅是一个偏好问题? FWIW,用上述风格编写PL / SQL的人肯定是一个经验丰富的编码员。 与以下相比有什么优势吗?
IF a<=b THEN
c:=a*b;
END IF;
答案 0 :(得分:9)
如果任何部分为空,a <= b
似乎不为真。这就是为什么这两个陈述不同。
在第一种情况下,c = a*b
将在a
为空时运行。在第二种情况下,它不会。除非您确定a
和b
不为空,否则等效语句将为:
IF a<=b or (a is null) or (b is null) THEN
c:=a*b;
END IF;
答案 1 :(得分:1)
在我工作的地方,我们不喜欢有空的块,所以我们总是像我们的底部示例一样编码我们,没有ELSE IF
。我认为这在很大程度上是一个偏好问题,但我宁愿反转IF
语句,就像你最后做的那样,以避免空块;我发现代码更容易阅读。