Hiệu_ứng_lề_(khoa_học_máy_tính)

Trong khoa học máy tính, một hàm hay biểu thức được cho là có hiệu ứng lề (side effect) nếu nó thay đổi một số trạng thái ngoài tầm vực của nó; hoặc có một sự tương tác quan sát được (observable) với hàm gọi nó hay phạm vi bên ngoài bên cạnh việc trả lại giá trị. Ví dụ, một hàm cụ thể có thể thay đổi giá trị của biến toàn cục (global variable) hay biến tĩnh (static variable), thay đổi một trong những tham số của nó, gây ra ngoại lệ (exception), hiển thị dữ liệu hay ghi dữ liệu vào tập tin, đọc dữ liệu, hay gọi các hàm khác có hiệu ứng lề. Với sự có mặt của hiệu ứng lề, hành vi của chương trình có thể phụ thuộc vào lịch sử của nó; nghĩa là, thứ tự của đánh giá các vấn đề. Hiểu đúng và gỡ lỗi một hàm có hiệu ứng lề đòi hỏi kiến thức về ngữ cảnh và lịch sử của nó.[1][2]Hiệu ứng lề là cách phổ biến nhất mà một chương trình tương tác với thế giới bên ngoài (con người, hệ thống tập tin, các máy tính khác trong mạng). Nhưng mức độ sử dụng hiệu ứng lề phụ thuộc vào mẫu hình lập trình. Lập trình mệnh lệnh được biết đến nhiều vì thường sử dụng hiệu ứng lề.Trong lập trình hàm, hiệu ứng lề hiếm khi được sử dụng.Lập trình viên sử dụng hợp ngữ phải chú ý đến hiệu ứng lề ẩn.