Tôi chưa bao giờ là người đề xuất lập trình hướng đối tượng, và nếu có gì tôi đã phát triển ít hơn thì tôi càng học nhiều hơn về lập trình nói chung. Khi tôi nghiên cứu các mô hình lập trình khác nhau, tôi nhận ra rằng tính bất biến là một trong những khái niệm trung tâm của thiết kế chương trình, ảnh hưởng đến phần mềm được viết theo bất kỳ triết lý nào . Nó cực kỳ quan trọng trong lập trình chức năng, với ý nghĩa tối ưu hóa và đồng thời trên các đảm bảo an toàn đơn giản.
Về cơ bản, mọi thứ có thể là bất biến có lẽ nên , trừ khi bạn có lý do chính đáng cho trạng thái đột biến. Theo kinh nghiệm của tôi, viết chương trình bằng bất kỳ ngôn ngữ nào để theo đuổi mục tiêu này dẫn đến mã an toàn hơn, tốt hơn . Bạn không có gì để mất bằng cách sử dụng const
nơi mà tính bất biến áp dụng của Haiti là miễn phí!
(Ngẫu nhiên, tôi đã đùa giỡn với ý tưởng tạo ra một ngã ba của GCC cho một phương ngữ C ++, trong đó tất cả các loại là const
trừ khi rõ ràng có trình độ như mutable
. Nếu có sự hỗ trợ cho một điều như vậy, tôi sẽ hoàn toàn cam kết duy trì và sử dụng nó.)
Từ quan điểm OO, tính bất biến thực thi đóng gói bằng cách ngăn chặn truy cập ghi không hạn chế. Nó làm giảm sự ghép nối giữa các lớp vì các đối tượng bất biến phải quản lý hoàn toàn trạng thái của chính chúng và do đó hoạt động như các giá trị thông thường. Tính chính xác của Const làm giảm đáng kể quá trình chứng minh tính đúng đắn của chương trình, đặc biệt là trong bối cảnh lập trình đồng thời. Với tham chiếu C ++ và ngữ nghĩa tham chiếu giá trị C ++ 0x, bạn có thể sử dụng các đối tượng bất biến mà không phải lo lắng về chi phí sao chép chúng ở mọi nơi. Hơn nữa, trình biên dịch có thể hoạt động một số phép thuật tối ưu hóa khá tuyệt vời nếu bạn làm việc với các đối tượng chủ yếu là bất biến.
Tôi biết nó rất hấp dẫn để gõ const
ở mọi nơi, nhưng bạn nhanh chóng quen với nó và lợi ích trở nên rõ ràng theo thời gian về độ tin cậy và khả năng bảo trì. Tôi không phải là một nhà văn xuất sắc và dường như là một nhiệm vụ khó khăn đã được chứng minh để tạo ra một trường hợp cho nó, nhưng tôi biết rằng sự đúng đắn đã giúp tôi rất nhiều khi là một nhà phát triển khi thiết kế và thực hiện các chương trình, và tôi nghĩ kinh nghiệm là giáo viên tốt nhất trong vấn đề này.