Như những người khác đang nói, chắc chắn, nó vẫn là một chức năng thuần túy.
Tuy nhiên, hãy nói về các vấn đề thiết kế. Bạn có quyền thử làm một cái gì đó để giữ mã DRY, bằng cách đặt giá trị ở một nơi duy nhất. Ngoài ra, điều tôi nghĩ cũng nên được xem xét là mức độ khớp nối phù hợp.
Sử dụng một chức năng cho phép bạn linh hoạt hơn để thay đổi việc thực hiện, điều đó có nghĩa là cách tiếp cận chức năng cung cấp khớp nối lỏng lẻo hơn một biến toàn cục.
Câu hỏi là liệu người ta có cần nó hay không?
Nếu người tiêu dùng và nhà cung cấp ở trong cùng một mô-đun và nhà cung cấp là riêng tư đối với mô-đun, thì khó có thể tranh luận rằng mức độ khớp nối lỏng lẻo này là cần thiết, do thực tế là nếu nhà cung cấp yêu cầu nâng cấp từ một biến riêng tư thành một Phương pháp riêng tư, tái cấu trúc đơn giản trong mô-đun có thể được áp dụng cho người tiêu dùng cùng một lúc. Sử dụng một phương thức / chức năng trước khi bạn thực sự cần có thể thuộc YAGNI.
Ngay cả khi người tiêu dùng và nhà cung cấp ở các mô-đun khác nhau, nhưng các mô-đun được phiên bản cùng nhau (ví dụ: bạn sử dụng một công cụ khai thác để các mô-đun của người tiêu dùng và nhà cung cấp nằm trong cùng một tệp), YAGNI cũng có thể áp dụng.
Mặt khác, ví dụ, nếu nhà sản xuất ở trong thư viện hoặc gói API hoặc mô-đun được phiên bản riêng biệt với (các) người tiêu dùng, thì việc sử dụng chức năng có thể phù hợp. Trong trường hợp đó, chúng ta nên xem xét tuổi thọ của API và các nguyên tắc như OCP.
(Một lưu ý khác, nếu mã của bạn có kích thước đáng kể, tôi sẽ khuyến khích sử dụng các mô-đun với các trường và phương thức thay vì các biến và hàm toàn cục.)