그들은 더 잘 알지 못하기 때문에.
원작자는 아마도 혼란스럽고 복잡한 C ++ 세계에서 비롯된 SOLID 원칙에 대한 오해에 집착하고있을 것입니다.
루비, 파이썬 및 펄 세계에는 여기에 대한 답변이 봉인의 이유라고 주장하는 문제가 없다는 것을 알기를 바랍니다. 동적 타이핑과 직교한다는 점에 유의하십시오. 액세스 수정자는 대부분의 언어에서 쉽게 사용할 수 있습니다. C ++ 필드는 다른 유형으로 캐스트하여 막힐 수 있습니다 (C ++가 더 약합니다). Java와 C #은 리플렉션을 사용할 수 있습니다. 액세스 수정자는 실제로 원하지 않는 한 작업을 수행 할 수 없을 정도로 어렵게 만듭니다.
봉인 강의와 모든 회원을 비공개로 표시하는 것은 간단한 일이 단순하고 어려운 일이 가능해야한다는 원칙을 명백히 위반합니다. 갑자기 단순해야 할 것들이 아닙니다.
원저자의 관점을 이해하도록 권유합니다. 현실 세계에서 절대적인 성공을 보여주지 못한 캡슐화에 대한 학문적 아이디어에서 비롯된 것입니다. 어딘가 개발자가 약간 다르게 작동하기를 원하지 않고 변경해야 할 이유가없는 프레임 워크 또는 라이브러리를 본 적이 없습니다. 회원을 봉인하고 비공개로 만든 최초의 소프트웨어 개발자를 괴롭 혔을 가능성이 두 가지 있습니다.
- 오만-그들은 확장을 위해 개방되고 수정을 위해 폐쇄되었다고 정말로 믿었습니다.
- 만족-그들은 다른 유스 케이스가있을 수 있다는 것을 알았지 만 그 유스 케이스에 대해서는 쓰지 않기로 결정했습니다
회사 프레임 워크에서 # 2가 아마도 그럴 것이라고 생각합니다. 이러한 C ++, Java 및 .NET 프레임 워크는 "완료"되어야하며 특정 지침을 따라야합니다. 이러한 지침은 일반적으로 유형이 유형 계층 구조의 일부로 명시 적으로 설계되고 다른 용도에 유용 할 수있는 많은 것들에 대한 개인 구성원이 아닌 한 봉인 된 유형을 의미합니다. . 새로운 유형을 추출하는 것은 지원, 문서화 등을하기에는 너무 비쌉니다.
액세스 수정 자의 기본 개념은 프로그래머가 스스로 보호해야한다는 것입니다. "C 프로그래밍은 발로 자신을 쏠 수 있기 때문에 나쁘다." 프로그래머로서 동의하는 것은 철학이 아닙니다.
나는 파이썬의 이름 맹 글링 접근법을 선호합니다. 필요한 경우 개인을 쉽게 대체 할 수 있습니다 (반사보다 훨씬 쉽습니다). 그것에 대한 훌륭한 글은 여기에서 볼 수 있습니다 : http://bytebaker.com/2009/03/31/python-properties-vs-java-access-modifiers/
Ruby의 개인용 수정자는 실제로 C #에서 보호되는 것과 비슷하며 개인용 C # 수정 자도 없습니다. 보호는 조금 다릅니다. 여기에 좋은 설명이 있습니다 : http://www.ruby-lang.org/en/documentation/ruby-from-other-languages/
정적 언어는 해당 언어로 작성된 코드의 구식 스타일을 따를 필요가 없습니다.