Tôi đã nghiền ngẫm các tệp cấu hình và mối quan hệ của chúng với mã trong một thời gian và tùy thuộc vào ngày và hướng gió, ý kiến của tôi dường như thay đổi. Ngày càng nhiều mặc dù tôi tiếp tục quay lại nhận thức lần đầu tiên tôi có được khi học Lisp: có rất ít sự khác biệt giữa dữ liệu và mã. Điều này có vẻ đúng gấp đôi đối với các tệp cấu hình. Khi nhìn đúng chỗ, một tập lệnh Perl không hơn một tập tin cấu hình cho perl. Điều này có xu hướng gây ra hậu quả khá nặng nề đối với các tác vụ như QA và phân công lao động như ai phải chịu trách nhiệm thay đổi các tệp cấu hình.
Quá trình chuyển từ tệp cấu hình sang ngôn ngữ chính thức thường chậm và dường như được thúc đẩy bởi mong muốn có một hệ thống chung. Hầu hết các dự án dường như bắt đầu nhỏ với một số mục cấu hình như nơi ghi nhật ký, nơi tìm dữ liệu, tên người dùng và mật khẩu, v.v. Nhưng sau đó chúng bắt đầu phát triển: các tính năng bắt đầu có thể được bật hoặc tắt, thời gian và thứ tự của các hoạt động bắt đầu được kiểm soát, và chắc chắn ai đó muốn bắt đầu thêm logic vào nó (ví dụ: sử dụng 10 nếu máy là X và 15 nếu máy là Y). Tại một thời điểm nào đó, tệp cấu hình trở thành một ngôn ngữ cụ thể của miền và ở đó được viết kém.
Bây giờ tôi đã lan man về việc thiết lập sân khấu, đây là những câu hỏi của tôi:
- Mục đích thực sự của tệp cấu hình là gì?
- Có nên cố gắng giữ cho các tệp cấu hình đơn giản không?
- Ai phải chịu trách nhiệm thực hiện các thay đổi đối với chúng (nhà phát triển, người dùng, quản trị viên, v.v.)?
- Chúng có nên được kiểm soát nguồn (xem câu hỏi 3)?
Như tôi đã nói trước đó, câu trả lời của tôi cho những câu hỏi này thay đổi liên tục, nhưng ngay bây giờ tôi đang nghĩ:
- để cho phép những người không phải là lập trình viên thay đổi các hành vi lớn một cách nhanh chóng
- vâng, bất cứ thứ gì không được tạo chi tiết thô đều phải ở dạng mã
- người dùng phải chịu trách nhiệm về các tệp cấu hình và người lập trình phải chịu trách nhiệm về lớp cấu hình giữa tệp cấu hình và mã để cung cấp khả năng kiểm soát chi tiết hơn đối với ứng dụng
- không, nhưng lớp giữa có hạt mịn hơn sẽ