문제

합리적인 이유가 있습니까? 기본 속성 Java 7의 일부가되지 않습니까?

도움이 되었습니까?

해결책

자바에서 "올바른"속성을하는 것은 쉽지 않습니다. Rémi Forax의 작품은 특히 이것이 어떻게 생겼는지 알아 내고 다루어야 할 많은 "gotchas"를 발견하는 데 가치가 있습니다.

한편 Java 7은 이미 너무 오래 걸렸습니다. 폐쇄 토론은 광범위한 지원에 대한 합의를 가진 특징 (예 : 속성)을 개발하는 데 사용될 수있는 많은 정신력을 낭비하는 거대하고 논란의 여지가있는 방해물이었습니다. 결국, 모듈화 (Project Jigsaw)의 주요 변화를 제한하기로 결정했습니다. 언어 (프로젝트 동전에 따라)에 대해 "작은 변화"만 고려되고 있습니다.

Javafx는 아름다운 부동산 지원을 가지고 있으므로 Sun은 속성의 가치를 명확하게 이해하고이를 구현하는 방법을 알고 있습니다. 그러나 Javafx Properties에 의해 망쳐 놓은 개발자는 Java에서 반 구운 구현에 정착 할 가능성이 적습니다. 그들이 할 가치가 있다면, 그들은 올바르게 할 가치가 있습니다.

다른 팁

물론 일정 및 자원과 관련된 몇 가지 높은 이유가 있습니다. 속성 구현 및 다른 언어 기능과의 모든 파급 효과 및 교차점을 이해하는 것은 다양한 Java 5 언어 변경의 크기와 유사한 큰 작업입니다.

그러나 나는 태양이 속성을 밀어 내지 않는 진짜 이유가 폐쇄와 동일하다고 생각합니다.

1) 구현의 모습에 대한 합의는 없습니다. 또는 오히려, 경쟁하는 대안이 많고 재산에 대한 열정이있는 사람들은 구현의 중요한 부분에 대해 동의하지 않습니다.

2) 아마도 더 중요한 것은이 기능이 원하는지 여부에 대한 합의가 크게 부족하다는 것입니다. 많은 사람들이 속성을 원하지만 그것이 필요하거나 유용하다고 생각하지 않는 많은 사람들이 있습니다 (특히 서버 측 사람들은 스윙 프로그래머보다 일상 생활에 훨씬 덜 중요하다고 생각합니다).

속성 이력은 다음과 같습니다.

주어진 일은 기본적으로 "완료되지 않았다"는 것이므로 무언가를 수행하지 않기 위해 특별한 이유가 필요하지 않습니다. 오히려 무언가를 "완료"에서 "계획된"또는 "완료"로 옮기려면 몇 가지 강력한 이유가 필요합니다. 이 언어 기능에 대해서는 충분히 설득력있는 이유가 없었습니다.

모든 언어로 속성을 피해야 할 두 가지 이유가 있습니다.

  • 속성은 객체 지향적이지 않습니다. 글을 쉽게 작성할 수있게하면 객체가 내부 상태를 제공하는 패턴을 장려하고 발신자는이를 조작합니다. 객체는 더 높은 수준의 방법을 제공하고 내부를 비공개로 유지해야합니다. 다음에 getter를지지로 구현할 때, 발신자가 데이터로 무엇을 할 것인지, 그 기능을 직접 제공 할 수 있는지 고려하십시오.

  • 속성은 돌연변이 상태 (세터를 통해)를 장려하여 프로그램을 덜 병렬화 할 수있게합니다. 코어의 수가 증가함에 따라, 우리는 모두 동시 추론을 더 쉽게 만들기 위해 우리의 대상을 불변으로 만들려고 노력해야합니다. 다음에 세터를 고정시킬 때 세터를 제거하고 객체를 불변으로 만드는 것을 고려하십시오.

  • 충분하지 않은 시간?
  • 아직 제대로 지정되지 않았습니까?
  • Java의 구현으로 인해 Java에 추가하기가 어렵습니까?
  • 충분히 중요하지 않은 것으로 간주됩니다. 즉, 다른 것들은 우선 순위가 있었습니까?
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top