thể trùng lặp:
is “else if” faster than “switch() case” ?"nếu" so với "công tắc"
Tôi đã gặp rất nhiều tình huống thời gian gần đây, nơi tôi có điều kiện rất đơn giản và cần phải chi nhánh dòng chảy ứng dụng. Các phương tiện "đơn giản" của việc hoàn thành những gì tôi đang làm chỉ là một đồng bằng cũ if
/elseif
tuyên bố:
if($value == "foo") {
// ...
} elseif($value == "bar") {
// ...
} elseif($value == "asdf" || $value == "qwerty") {
// ...
}
... nhưng tôi cũng đang xem xét cái gì đó như:
switch($value) {
case "foo":
// ...
break;
case "bar":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Điều này có vẻ một chút ít có thể đọc được, nhưng có lẽ nó hiệu quả hơn? Tuy nhiên, khi có nhiều và nhiều hơn nữa "hay" biểu thức trong điều kiện, có vẻ như câu lệnh switch là nhiều hơn nữa có thể đọc được và hữu ích:
switch($value) {
case "foo":
// ...
break;
case "bar":
case "baz":
case "sup":
// ...
break;
case "abc":
case "def":
case "ghi":
// ...
break;
case "qwer":
case "asdf":
// ...
}
Tôi cũng thấy tùy chọn nơi mã dòng được phân nhánh sử dụng mảng và chức năng:
function branch_xyz() {/* ... */}
function branch_abc() {/* ... */}
function branch_def() {/* ... */}
$branches = array(
"xyz"=>"branch_xyz",
"abc"=>"branch_abc",
"def"=>"branch_def"
);
if(isset($branches[$value])) {
$fname = $branches[$value];
$fname();
}
Tùy chọn cuối cùng này cũng có thể được phân phối trên nhiều tệp, mặc dù nó khá xấu xí.
Bạn cảm thấy có lợi thế gì nhất với sự cân bằng ít nhất về hiệu suất, khả năng đọc và dễ sử dụng?
Sử dụng 'chuyển đổi 'tốt hơn trong loại tình huống bạn đã chỉ định. – Sarfraz
Hiệu suất thậm chí không thực sự ảnh hưởng đến nó. Viết mã có thể đọc trước, sau đó lập hồ sơ và tối ưu hóa khi cần thiết sau đó. –
Nhân bản một bản sao, v.v. http://stackoverflow.com/questions/3387758/java-case-statment-or-if-statement-efficiency-perspective –