2011-10-24 6 views
0

저는 학습 목적으로 객체 지향 프로그래밍 언어를 설계하고 있습니다.OO 언어를 디자인 할 때 쓰기 전용 속성을 피해야합니까?

Class Fruit: 
    Property ReadWrite Float weight 
    Property WriteOnly Integer someWriteOnlyProperty # <-- avoid? 

내가 쓰기 전용 속성에 대한 옵션을 추가해야하거나 프로그램에 나쁜 디자인 결정이 유일한 단서는이 언어를 사용하는 것이다 : 언어는이 같은 특성을 가지고있다?

+0

저는 오늘날 대부분의 OOP 언어에서 구현되는 방식의 속성에 대한 아이디어가 순수한 악이며 피해야한다고 생각합니다. –

+0

writeonly 속성은 무엇입니까? – Ankur

+3

@MK. - 너 확장 할 수있어? 왜 그것이 "순수한 악"이라고 생각합니까? – Oded

답변

3

반드시 쓰기 전용 속성을 디자인하십시오. 단지 쓰기가 제한된 속성이라는 것을 알고 있어야합니다 (단, 쓰기 만하고 노출시키지 않으면 왜 속성이 있어야합니까?).

간단한 방법을 대신 사용할 수도 있습니다. 이렇게하면 코드를 사용하는 사람들의 혼란을 줄일 수 있습니다.


Java 및 .NET에는 쓰기 전용 속성이 있으므로 전례가 있습니다.

+1

쓰기 전용 속성에서 얻을 수있는 이점은 무엇입니까? –

+0

@DJQuimby - 캡슐화를 강화하는 데 도움이 될 수 있습니다. 이것을보십시오 : http://stackoverflow.com/questions/2213879/do-write-only-properties-have-practical-applications – Oded

+0

고마워, 나는 그것을 읽을 것이다. –

2

쓰기 전용 속성은 나에게 이해가 가지 않습니다. 정보 목적을위한 읽기 전용 속성은 매우 유용하지만 "나는 당신에게 정보를 제공하지만 당신이 알고있는 것을 결코 찾을 수 없을 것"이라는 구체적인 보안 근거는 무엇입니까?

+1

예제가 변경 될 것이라고 생각합니다. 암호. 원래 값을 볼 수없고 변경할 수 있습니다. – dnuttle

+0

실제 사례는 아닙니다. 암호를 설정할 수 있으면 프로그램이 실행되는 동안 암호가 있습니다. 다음 번에 프로그램을 시작할 때만 "암호를 잊어 버리고 요청할 수 없습니다"라는 메시지가 표시됩니다. mmmpf – Fischermaen

+0

http://stackoverflow.com/questions/2213879/do-write-only-properties-have-practical-applications – Oded

1

다른 OO 언어가 이것을 허용합니다. 예를 들어 Java에서는 개인 변수를 만들고 변수를 변경할 수는 있지만 읽을 수는없는 메소드를 추가 할 수 있습니다. 귀하의 접근 방식은 Microsoft의 라인을 따라 명시 적으로 "속성"을 작성하지만 이것이 왜 문제가되는지는 알 수 없습니다. 모든 잘못된 디자인 결정을 방지하기 위해 OO 언어를 디자인하면 "DENIED"인쇄를 제외하고 언어가 아무 것도하지 않고 종료됩니다.

+0

"DENIED" '' – Raynos