Tôi đã tìm kiếm một công cụ chất lượng mã Ruby vào ngày khác, và tôi đã đi qua đá quý pelusa, trông thú vị. Một trong những điều mà nó kiểm tra là số lượng các câu lệnh khác được sử dụng trong một tệp Ruby đã cho.Tại sao các phát biểu khác không được khuyến khích trong Ruby?
Câu hỏi của tôi là, tại sao những điều này xấu? Tôi hiểu rằng các tuyên bố if/else
thường thêm nhiều phức tạp (và tôi nhận thấy rằng mục tiêu là để giảm độ phức tạp của mã) nhưng làm thế nào để một phương pháp kiểm tra hai trường hợp được viết mà không cần else
?
Để tóm tắt, tôi có hai câu hỏi:
1) Có một lý do nào khác hơn giảm phức tạp của mã mà else có thể tránh được?
2) Dưới đây là phương pháp mẫu từ ứng dụng tôi đang xử lý sử dụng câu lệnh else
. Làm thế nào bạn sẽ viết này mà không có một? Lựa chọn duy nhất tôi có thể nghĩ ra sẽ là một tuyên bố ba năm, nhưng có đủ logic ở đây mà tôi nghĩ rằng một tuyên bố ba năm thực sự sẽ phức tạp hơn và khó đọc hơn.
def deliver_email_verification_instructions
if Rails.env.test? || Rails.env.development?
deliver_email_verification_instructions!
else
delay.deliver_email_verification_instructions!
end
end
Nếu bạn là người viết với một nhà điều hành ternary, nó sẽ là:
def deliver_email_verification_instructions
(Rails.env.test? || Rails.env.development?) ? deliver_email_verification_instructions! : delay.deliver_email_verification_instructions!
end
là đúng? Nếu vậy, không phải là cách khó đọc hơn sao? Câu hỏi else
có giúp giải quyết vấn đề này không? Có cách nào khác, tốt hơn, else
không có cách nào để viết điều này mà tôi không nghĩ đến?
Tôi đoán tôi đang tìm kiếm các cân nhắc về phong cách tại đây.
Viết tốt trên 'else' dưới dạng mã nguồn tại đây: http://solnic.eu/2012/04/11/get-rid-of-that-code-smell-control-couple.html – michaelmichael
Đó là khá tốt, và một số trong những gì tôi đang tìm kiếm (mặc dù một chút trên đầu của tôi tại các bộ phận). Hãy cẩn thận để đăng câu trả lời, xây dựng, và cho các điểm nghiệp bổ sung, tái cấu trúc ví dụ của tôi hoặc sử dụng một của riêng bạn để minh họa? Hay bạn có cảm thấy bài đăng đó nên hoạt động như một câu trả lời? – nickcoxdotme
Sử dụng quá mức là xấu, như là một sự khăng khăng cứng nhắc mà nó tránh được. Có một thời gian và một nơi, và, với mã viết đúng cách, đôi khi nó là giải pháp đúng. Nó có thể gây nhầm lẫn với mã spaghetti, do đó, tránh viết mã suy nghĩ kém và phần còn lại nên tự lo cho chính nó. –