2012-04-10 30 views
5

Cảm giác tôi nhận được về thành ngữ này là nó rất hữu ích vì nó đảm bảo rằng các tài nguyên được phát hành sau khi đối tượng sử dụng chúng nằm ngoài phạm vi.Tại sao RAII lại được đặt tên như vậy?

Nói cách khác, đó là thêm về de-muade-khởi, vậy tại sao là thành ngữ này được đặt tên theo cách đó là?

Trả lời

6

Trước tiên, tôi nên lưu ý rằng nó được coi là thành ngữ được đặt tên kém. Nhiều người thích SBRM, viết tắt của Stack Bound Resource Management. Mặc dù tôi (cười) đi cùng với việc sử dụng "RAII" đơn giản bởi vì nó được biết đến rộng rãi và được sử dụng, tôi nghĩ SBRM đưa ra một mô tả tốt hơn về mục đích thực sự.

Thứ hai, khi RAII mới, nó áp dụng nhiều cho việc mua lại khi phát hành tài nguyên. Đặc biệt, tại thời điểm nó khá phổ biến để xem khởi tạo xảy ra trong hai bước. Trước tiên, bạn định nghĩa một đối tượng và chỉ sau đó phân bổ động bất kỳ tài nguyên nào được liên kết với đối tượng đó. Nhiều hướng dẫn phong cách ủng hộ điều này, chủ yếu là bởi vì tại thời điểm đó (trước khi C++ có xử lý ngoại lệ) không có cách nào tốt để đối phó với thất bại trong một nhà xây dựng. Do đó, các hướng dẫn theo phong cách thường nói, các nhà xây dựng chỉ nên làm việc tối thiểu, và đặc biệt tránh bất cứ thứ gì mở cửa cho sự thất bại - đặc biệt là phân bổ tài nguyên (và một số vẫn nói những điều như thế).

Khá nhiều trong số đó đã xử lý giải phóng tài nguyên trong trình phá hủy, vì vậy sẽ không có sự khác biệt rõ ràng so với thực tiễn trước đó.

Các vấn đề liên quan