Đôi khi điều khoản no-op có thể làm cho mã của bạn dễ đọc hơn.
Đó có thể là một vấn đề quan điểm, nhưng đây là một ví dụ. Giả sử bạn đã tạo một hàm hoạt động bằng cách sử dụng hai đường dẫn unix. Nó tính toán 'đường dẫn thay đổi' cần thiết để cd từ đường dẫn này sang đường dẫn khác. Bạn đặt ra một hạn chế đối với chức năng của mình rằng cả hai đường dẫn phải bắt đầu bằng '/' HOẶC cả hai đều không được.
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
true # continue with function
else
return 1 # Skip function.
fi
Một số nhà phát triển sẽ muốn loại bỏ no-op nhưng điều đó có nghĩa là phủ nhận điều kiện:
function chgpath() {
# toC, fromC are the first characters of the argument paths.
if [[ "$toC" != / || "$fromC" == / ]] && [[ "$toC" == / || "$fromC" != / ]]
then
return 1 # Skip function.
fi
Bây giờ-theo ý kiến của tôi- nó không quá rõ ràng với mệnh đề if-điều kiện mà bạn muốn bỏ qua thực hiện hàm. Để loại bỏ no-op và thực hiện nó một cách rõ ràng, bạn sẽ muốn di chuyển mệnh đề if ra khỏi hàm:
if [[ "$toC" == / && "$fromC" == / ]] || [[ "$toC" != / && "$fromC" != / ]]
then
cdPath=$(chgPath pathA pathB) # (we moved the conditional outside)
Điều đó có vẻ tốt hơn, nhưng nhiều lần chúng tôi không thể làm điều này; chúng ta muốn việc kiểm tra được thực hiện bên trong hàm.
Vậy điều này xảy ra thường xuyên như thế nào? Không thường xuyên lắm. Có thể một hoặc hai lần một năm. Nó xảy ra đủ thường xuyên, mà bạn nên biết về nó. Tôi không ngại sử dụng nó khi tôi nghĩ rằng nó cải thiện khả năng đọc mã của tôi (bất kể ngôn ngữ).