스택큐힙리스트

Java에서는 객체의 멤버를 공개적으로 사용하는 것이 항상 좋은 아이디어일까요? 본문

카테고리 없음

Java에서는 객체의 멤버를 공개적으로 사용하는 것이 항상 좋은 아이디어일까요?

스택큐힙리스트 2024. 1. 10. 19:56
반응형

내 응용 프로그램에는 데이터 클래스가 있습니다. 내 응용 프로그램은 공개 API로 사용되지 않을 것이며, 내 프로젝트에서 코드를 개발하는 유일한 사람이 될 것입니다.


나는 프로세서와 메모리 성능을 가능한 한 최대한 저장하려고 노력하고 있습니다.


데이터 클래스 내의 데이터 멤버를 public/protected/default 보호로 만들어 getter를 사용할 필요가 없는 것은 나쁜 생각인가요? getter를 사용하면 약간 더 많은 메모리 소비와 스택의 생성이 필요하다고 생각하는데... 그러한 것들은 필요하지 않다고 믿습니다. getter를 사용하는 유일한 이유는 보호/개인 정보 보호를 위한 것입니다. 그러나 내가 유일한 개발자이고 다른 사람이 내 API를 사용하지 않을 것이라면 getter를 사용하지 않는 것은 나쁜 생각일까요?


이것이 어리석은 생각인지 알려주세요.

답변 1

성능 또는 메모리 최적화를 위해 getter/setter를 대체한다면, 잘못된 방법을 사용하고 있습니다. 이들은 거의 확실히 응용 프로그램이 느리게 실행되거나 너무 많은 메모리를 사용하는 이유일 것이 아닙니다.


최적화의 카디날 신은 필요성을 알기 전에 최적화를 하는 것입니다. 가장 많은 시간/메모리가 낭비되는 부분을 보여주는 실제 정보가 있을 때에만 최적화하세요. 그리고 그 부분에 대해 최적화하는 데 시간을 투자하세요. 이 아이디어의 핵심은 실행 시간의 80%를 차지하는 코드 조각에서 5%의 시간을 줄이는 것이 전체 실행 시간의 5%만 기여하는 코드 조각에서 20%를 줄이는 것보다 더 큰 이득을 얻을 수 있다는 것입니다. (메모리도 마찬가지입니다).

또한, 당신이 제안한 대로 응용 프로그램을 설계하는 것에 주의해야합니다. 왜냐하면 이렇게하면 일부 속성 (예 : 간단한 속성)은 직접 액세스 할 수 있지만, 다른 속성 (보다 복잡한 유도 속성 또는 기저 유형을 노출시키고 싶지 않은 속성)은 getters/setters 가 있을 것입니다. 따라서 액세스 스타일이 혼합되어 유지 보수가 덜 가능해질 것입니다.

답변 2

In Java, 객체의 멤버를 공개 접근 가능하도록 설정하는 것이 항상 좋은 아이디어인가요?
자바에서 객체를 생성하고 사용할 때, 멤버 변수를 공개적으로 접근할 수 있게끔 설정하는 것은 여러 이유로 장점이 있을 수 있습니다. 그러나 이러한 접근법이 언제나 좋을까요? 이 문서는 객체의 멤버 변수 접근 방식에 대한 장단점 및 적절한 사용 시기에 대해 알아보고자 합니다. 자바 프로그래밍에서 멤버 변수에 대한 접근 제어 규칙을 어떻게 결정하고 적용해야 하는지에 대해 명확한 지침을 제시해 드리겠습니다.
자바에서는 멤버 변수 접근에 대한 다섯 가지의 접근 제어자를 제공합니다. 이 중 가장 기본적인 것은 public입니다. public 접근 제어자를 사용하면 객체의 모든 멤버 변수와 메서드에 대해 외부에서 자유롭게 접근할 수 있습니다. 이는 코드의 가독성과 유지보수 측면에서 편리하다는 장점이 있습니다.
하지만 public 접근 제어자를 사용하는 것은 항상 좋은 선택은 아닙니다. 객체의 멤버 변수를 외부에서 직접 접근할 수 있다는 것은 객체의 캡슐화 원칙을 위반하는 것이기도 합니다. 객체의 상태를 변경할 때, 해당 변경에 대한 유효성 검사나 부가적인 작업을 수행하는 로직을 캡슐화된 메서드 내에 작성할 수 있다면, 객체의 무결성과 가독성을 쉽게 유지할 수 있게 됩니다.
또한, public 접근 제어자를 사용하면 외부에서 임의로 값에 대한 변경이 가능해지므로, 예기치 않은 결과를 초래할 수 있습니다. 객체의 상태를 변화시킬 수 있는 부분에 대해서는 setter 메서드를 제공하는 것이 더욱 안전하고 확장성 있는 방법입니다. getter와 setter 메서드를 사용하면 객체의 내부 구조를 외부로부터 은닉하게 되므로, 객체의 내부 구현을 변경하더라도 외부 코드에 영향을 줄 확률을 줄일 수 있습니다.
다만, 모든 경우에 public 접근 제어자를 피해야 하는 것은 아닙니다. 객체가 사용되는 상황과 개발자의 의도에 따라 적절한 접근 제어 규칙을 선택해야 합니다. 예를 들어, 클래스가 내부 데이터 저장용으로 사용되는 경우 private 접근 제어자를 사용하는 것이 좋습니다. 하지만 상속을 고려하여 설계된 클래스에서는 protected 접근 제어자를 사용하여 상속받은 클래스에서도 멤버 변수에 접근할 수 있도록 할 수 있습니다.
결론적으로, 자바에서 객체의 멤버 변수를 공개적으로 접근 가능하게하면 코드 작성과 유지보수가 편리해질 수 있습니다. 그러나 객체의 캡슐화 원칙을 위반하며 상태 변경에 대한 제어를 잃을 수 있으므로 신중하게 접근 제어자를 선택해야 합니다. 용도와 관련된 적절한 접근 제어 규칙을 선택하여 개발을 진행하면, 보다 견고하고 확장성 있는 코드를 구현할 수 있을 것입니다.

반응형
Comments