Ngoài ra: Tôi đã viết bài này để trả lời câu hỏi của dallin (hiện đã đóng cửa) nhưng tôi vẫn cảm thấy nó có thể hữu ích cho ai đó nên ở đây đi
Tôi nghĩ rằng lý do cho các chức năng nguyên tử hóa là 2 lần và như @jozefg đề cập phụ thuộc vào ngôn ngữ được sử dụng.
Tách mối quan tâm
Lý do chính để làm điều này là để tách các đoạn mã khác nhau, do đó, bất kỳ khối mã nào không trực tiếp đóng góp vào kết quả / mục đích mong muốn của hàm là một mối quan tâm riêng biệt và có thể được trích xuất.
Giả sử bạn có tác vụ nền cũng cập nhật thanh tiến trình, cập nhật thanh tiến trình không liên quan trực tiếp đến tác vụ chạy dài nên cần được trích xuất, ngay cả khi đó là đoạn mã duy nhất sử dụng thanh tiến trình.
Nói trong JavaScript, bạn có một hàm getMyData (), trong đó 1) xây dựng một thông điệp xà phòng từ các tham số, 2) khởi tạo một tham chiếu dịch vụ, 3) gọi dịch vụ bằng thông báo xà phòng, 4) phân tích kết quả, 5) trả về kết quả. Có vẻ hợp lý, tôi đã viết hàm chính xác này nhiều lần - nhưng thực sự có thể chia thành 3 hàm riêng chỉ bao gồm mã cho 3 & 5 (nếu đó) vì không có mã nào khác chịu trách nhiệm trực tiếp nhận dữ liệu từ dịch vụ .
Cải thiện trải nghiệm gỡ lỗi
Nếu bạn có các hàm hoàn toàn nguyên tử, theo dõi ngăn xếp của bạn sẽ trở thành một danh sách tác vụ, liệt kê tất cả các mã được thực hiện thành công, tức là:
- Nhận dữ liệu của tôi
- Xây dựng tin nhắn xà phòng
- Tham chiếu dịch vụ khởi tạo
- Phản hồi dịch vụ được phân tích cú pháp - LRI
sẽ thú vị hơn sau đó phát hiện ra rằng có lỗi trong khi lấy dữ liệu. Nhưng một số công cụ thậm chí còn hữu ích hơn cho việc gỡ lỗi các cây gọi chi tiết sau đó, ví dụ như Canvas của Debugger Canvas .
Tôi cũng hiểu mối quan tâm của bạn rằng có thể khó theo dõi mã được viết theo cách này bởi vì vào cuối ngày, bạn cần phải chọn một thứ tự các hàm trong một tệp trong đó cây gọi của bạn sẽ phức tạp hơn . Nhưng nếu các chức năng được đặt tên tốt (intellisense cho phép tôi sử dụng 3-4 từ trường hợp camal trong bất kỳ chức năng nào, tôi vui lòng không làm chậm tôi) và được cấu trúc với giao diện công cộng ở đầu tệp, mã của bạn sẽ đọc như mã giả cho đến nay là cách dễ nhất để có được sự hiểu biết cao về một cơ sở mã.
FYI - đây là một trong những điều "làm như tôi nói không phải như tôi làm", việc giữ nguyên tử mã là vô nghĩa trừ khi bạn kiên quyết phù hợp với nó IMHO, điều mà tôi không làm.