6.2 选择紧凑格式,不要选择松散格式
“除非绝对需要,否则不要认为应该存在更多的东西。”
——William Occam (c. 1280—1349)
“每件事情都应该尽可能简单,而不仅仅是简化。”
——一般认为出自阿尔伯特•爱因斯坦
对于任何编程语言来说,以短小、简洁和紧凑的形式编写代码是一种良好的软件工程。明确地只完成一个功能的模块更容易修改和理解。模块较少的系统更容易维护。
SQL可以使用几条语句代替数百行的过程化代码。应该尽量想出短小、简洁的解决方案,而不是权宜之计。但是,老的习惯很难戒除。很多新手从他们的第一种语言中了解了布尔逻辑和简单的AND-OR-NOT表达式,他们仍旧在以这种逻辑测试的方式思考问题。
6.2.1 避免使用多余的括号
新手们认为产生的SQL代码中有多余级别的括号可以安全地执行,并认为这就是编写代码的正确方式。考虑下面这个简单的示例:
SELECT a, b, c FROM Foobar WHERE (a = b) AND (c < 42);
|
读起来不错,但是当有5个以上的谓词和无用的嵌套括号时,代码就很难阅读了,而且很难定位丢失的括号。还是让LISP程序员使用这些括号吧,他们需要这些括号。
适度地使用括号可以使嵌套谓词更容易阅读。
SELECT application_nbr FROM LoanApplications WHERE years_employed > 5 OR (net_worth > loan_amt AND monthly_expenses < 0.25 * loan_amt) OR (collateral > 2.00 * loan_amt AND age > 25) OR (collateral > loan_amt AND age > 30) OR (years_employed > 2 AND net_worth > 2.00 * loan_amt AND age > 21 AND monthly_expenses < 0.50 * loan_amt); |
与下面的代码对比:
SELECT application_nbr FROM LoanApplications WHERE years_employed > 5 OR net_worth > loan_amt AND monthly_expenses < 0.25 * loan_amt OR collateral > 2.00 * loan_amt AND age > 25 OR collateral > loan_amt AND age > 30 OR years_employed > 2 AND net_worth > 2.00 * loan_amt AND Age > 21 AND monthly_expenses < 0.50 * loan_amt;
|
在下一节中,我们将会看到如何使用CASE表达式处理类似这样的情况。
【责任编辑:
董书 TEL:(010)68476606】
(0票)
(0票)
(0票)
(0票)
(0票)
(0票)