所以我正在學習Transact-SQL,它沒有elsif等價物,只有一個僞結構,否則如果它實際上是一個嵌套的if ... else。我已經是PL/SQL程序員大約8年了,所以我一直在使用if ... elsif ... else而沒有真正考慮它。我知道elsif將執行保存在一個邏輯塊與一系列嵌套塊之間,但除了使用elsif和嵌套if的可讀性之外,還有一個原因嗎?從本質上講,將它們保持在一個邏輯塊中會有效率增益還是其他好處?除了可讀性以外,如果在PL/SQL中使用elsif和nested,還有其他什麼原因嗎?
例如,我可以這樣做:
if x = 1 then
dbms_output.put_line('foo');
elsif x=3 then
dbms_output.put_line('foo2');
else
dbms_output.put_line('foo3');
end if;
或者我可以這樣做:
if x=1 then
dbms_output.put_line('foo1');
else
if x=3 then
dbms_output.put_line('foo2');
else
dbms_output.put_line('foo3');
end if;
end if;
我知道使用的第一個例子PL/SQL最佳實踐建議,但如果我很好奇,有除了無關的「end if」之外,這也是它的一個原因。當你經歷2或3級的深度時會出現凌亂的縮進。有什麼想法嗎?
我想你回答了你自己的問題。 – OldProgrammer
你可以看看你的代碼。你可以發現一個簡單和可讀性較低的代碼。 ;) – Avrajit
無視可讀性,目的本身是不同的。在你的情況下,他們看起來多餘,但實際上並非如此它不僅適用於PL/SQL .. IF-ELSIF非常像SWITCH ..一次只能執行一個。 Where-as嵌套IF可以靈活地給出多重條件檢查。所以選擇你喜歡的東西!這就像選擇/同時循環! –