Hãy xem xét một tình huống mà bạn cần gọi các thường trình liên tiếp và dừng ngay sau khi một trả về một giá trị có thể được đánh giá là dương (true, object, 1, str (1)).Nó được coi là hình thức xấu để thực hiện một chức năng trong một tuyên bố có điều kiện?
Nó rất hấp dẫn để làm điều này:
if (fruit = getOrange())
elseif (fruit = getApple())
elseif (fruit = getMango())
else fruit = new Banana();
return fruit;
tôi thích nó, nhưng đây không phải là một phong cách rất tái phát trong những gì có thể được coi mã sản xuất chuyên nghiệp. Một người có thể muốn xem mã phức tạp hơn như:
fruit = getOrange();
if(!fruit){
fruit = getApple();
if(!fruit){
fruit = getMango();
if(!fruit){
fruit = new Banana();
}
}
}
return fruit;
Theo định kiến về cấu trúc cơ bản, biểu mẫu trước có thể chấp nhận được không? Bạn muốn giới thiệu nó?
Edit:
Tôi xin lỗi cho những ai cho rằng các chức năng này đã có nghĩa là các nhà máy hoặc nhà xây dựng. Họ không phải, họ chỉ là người giữ chỗ. Câu hỏi đặt ra nhiều hơn về cú pháp so với "factorying". Các hàm này cũng có thể là lambda.
Tùy thuộc vào ngôn ngữ. – SLaks