PL / SQL中IF块的奇数编码风格

时间:2011-10-22 19:20:12

标签: sql oracle plsql

在我工作的地方,我看到很多用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;

2 个答案:

答案 0 :(得分:9)

如果任何部分为空,a <= b似乎为真。这就是为什么这两个陈述不同。

在第一种情况下,c = a*b将在a为空时运行。在第二种情况下,它不会。除非您确定ab不为空,否则等效语句将为:

IF a<=b or (a is null) or (b is null) THEN
  c:=a*b;
END IF;

答案 1 :(得分:1)

在我工作的地方,我们不喜欢有空的块,所以我们总是像我们的底部示例一样编码我们,没有ELSE IF。我认为这在很大程度上是一个偏好问题,但我宁愿反转IF语句,就像你最后做的那样,以避免空块;我发现代码更容易阅读。