以下哪些2個例子中的一個將執行更好:嵌套相對於複合條件
實施例1:
if($condition_1)
{
if($condition_2)
{
// do something
}
}
實施例2:
if($condition_1 and $condition_2)
{
// do something
}
以下哪些2個例子中的一個將執行更好:嵌套相對於複合條件
實施例1:
if($condition_1)
{
if($condition_2)
{
// do something
}
}
實施例2:
if($condition_1 and $condition_2)
{
// do something
}
如果有差異,可以忽略不計。您不必擔心第二個評估兩個條件,因爲short-circuit evaluation
IMO第二種形式使代碼更具可讀性。我討厭看到100萬縮進。
這是過早微嚴重情況下優化。即使存在差異,不存在不存在的問題 - 這不是一個問題,哪個問題表現更好,哪個問題更具可讀性。這將取決於具體情況。但是,從背景分離的角度來看,我認爲第二種選擇是可取的:「if」陳述暗示「其他」,即使它不存在,兩個「if」誤導讀者。
如果根本不存在差異,則可以忽略不計。我看到簡潔有以後的方法。
嵌套控制結構將有更多Cyclomatic Complexity。比較嵌套if塊構建
Lines of Code (LOC): 6
Cyclomatic Complexity/Lines of Code: 0.40
Comment Lines of Code (CLOC): 1
Non-Comment Lines of Code (NCLOC): 5
與複合如果塊結構
Lines of Code (LOC): 9
Cyclomatic Complexity/Lines of Code: 0.25
Comment Lines of Code (CLOC): 1
Non-Comment Lines of Code (NCLOC): 8
注意,數你如何佈局的代碼變化。在一行上寫嵌套結構會將CC增加到0.67。一般來說,你想避免嵌套控制流太深,因爲它會變得更難以維護。
因此,如果它不利於可讀性,請使用組合比較。
編輯:萬一你想知道爲什麼它是九條六交通線:因爲我加入<?php
和空行來我用於分析
的文件如果它只是一個街區,去與後來的選項因爲它需要更少的縮進,縮短並且可以說可讀性更高。
但是,請注意,從那時起,您將使用第一個變體,因爲您將添加else
s。這些都是不相同的:
if ($condition_1) {
if ($condition_2) {
// do something
}
else {
//do something else
}
}
if ($condition_1) {
if ($condition_2) {
// do something
}
}
else {
//do something else
}
在什麼情況下第二個例子只評估$ condition_1,但例1評估兩者? – 2010-07-31 15:02:40
@Cags LOL。我想我腦中有一個短路。 – NullUserException 2010-07-31 15:06:03
他們發生了,該死的短路。 :) – 2010-07-31 15:24:13