Tôi sử dụng các chức năng một phần như là một cách để ghi lại mã. Gọi một hàm với một tên có ý nghĩa giúp dễ hiểu mã hơn. Trong một số trường hợp, ngay cả một hàm với một dòng duy nhất cũng có ý nghĩa.
Ví dụ, trong "Mã sạch", Robert C. Martin đưa ra ví dụ sau: Bạn muốn xem cái nào hơn? Điều này:
// Check to see if the employee is eligible for full benefits
if ((employee.flags & HOURLY_FLAG) &&
(employee.age > 65))
Hay cái này?
if (employee.isEligibleForFullBenefits())
Tôi không luôn đồng ý với anh ta, nhưng trong trường hợp này thì có. Mã phải được đọc, không chỉ khi bạn viết nó và bạn biết mọi chi tiết, mà cả lúc 9 giờ tối khi bạn phải sửa lỗi trong mã của người khác. Nhìn chằm chằm vào một điều kiện dài và cố gắng tìm ra tất cả các tiêu cực kép không được khuyến khích. Nếu bạn chỉ có thể đặt tên cho nó (không chỉ các điều kiện, mà mỗi đoạn mã bạn viết), nó sẽ trở nên đơn giản hơn rất nhiều.
Tôi chưa bao giờ hối hận khi đặt một cái gì đó vào một chức năng, và nếu bạn lo lắng về hiệu suất, thì hãy cấu hình trước.