Đây là một vấn đề nhỏ, nhưng mỗi khi tôi phải viết mã như thế này, sự lặp lại làm phiền tôi, nhưng tôi không chắc rằng bất kỳ giải pháp nào không tệ hơn.
if(FileExists(file))
{
contents = OpenFile(file); // <-- prevents inclusion in if
if(SomeTest(contents))
{
DoSomething(contents);
}
else
{
DefaultAction();
}
}
else
{
DefaultAction();
}
- Có một tên cho loại logic này?
- Tôi có phải là một chút quá OCD?
Tôi mở các đề xuất mã xấu, nếu chỉ vì tò mò ...
make sure I have valid data for DoSomething(), and then DoSomething() with it. Otherwise, take DefaultAction()
. Các chi tiết khó chịu của nitty về việc đảm bảo bạn có dữ liệu cho DoS Something () ở mức độ trừu tượng thấp hơn, và do đó nên ở một chức năng khác. Hàm này sẽ có một tên ở mức độ trừu tượng cao hơn và việc thực hiện nó sẽ ở mức thấp. Các câu trả lời tốt dưới đây giải quyết vấn đề này.
DefaultAction
cuộc gọi vi phạm nguyên tắc DRY