Đôi khi, một if
câu lệnh có thể khá phức tạp hoặc dài, vì vậy để dễ đọc, tốt hơn là trích xuất các lệnh gọi phức tạp trước if
.
ví dụ:
if (SomeComplicatedFunctionCall() || OtherComplicatedFunctionCall())
{
// do stuff
}
vào cái này
bool b1 = SomeComplicatedFunctionCall();
bool b2 = OtherComplicatedFunctionCall();
if (b1 || b2)
{
//do stuff
}
(ví dụ cung cấp không phải là mà xấu, nó chỉ mang tính minh họa ... tưởng tượng cuộc gọi khác với nhiều đối số, vv)
Nhưng với trích xuất này, tôi đã mất đánh giá ngắn mạch (SCE).
- Tôi có thực sự bị mất SCE mỗi lần? Có một số trường hợp mà trình biên dịch được phép "tối ưu hóa nó" và vẫn cung cấp SCE không?
- Có những cách nào để duy trì khả năng đọc được cải thiện của đoạn mã thứ hai mà không làm mất SCE?