«encapsulation» 태그된 질문

17
개인 필드가있는 이유는 무엇입니까?
private클래스 필드 / 속성 / 속성 의 가시성 이 유용합니까? OOP에서 조만간 클래스의 서브 클래스를 만들게되며이 경우 구현을 완전히 이해하고 수정하는 것이 좋습니다. 클래스를 서브 클래 싱 할 때 가장 먼저하는 일 중 하나는 private메서드를 로 변경하는 것 protected입니다. 그러나,에서 세부 사항을 숨기고 외부 세계하는 것은 중요합니다 - 그래서이다 우리가해야 …

15
개인 변수가 필요한 이유는 무엇입니까?
클래스에 개인 변수가 필요한 이유는 무엇입니까? 내가 읽은 프로그래밍에 관한 모든 책은 이것이 개인 변수라고 말합니다. 이 설명의 문구는 항상 우리가 직업에 대한 신뢰의 위기가있는 것처럼 보였다. 설명은 항상 다른 프로그래머가 코드를 망치는 것처럼 들립니다. 그러나 개인 변수가없는 많은 프로그래밍 언어가 있습니다. 개인 변수는 무엇을 방지하는 데 도움이됩니까? 특정 재산이 …

15
TDD Red-Green-Refactor 및 사적인 방법을 테스트하는 경우 / 방법
내가 이해하는 한, 대부분의 사람들은 개인 메소드를 직접 테스트하지 말고 공개 메소드가 호출하는 방식을 통해 테스트해야한다는 데 동의하는 것 같습니다. 나는 그들의 요점을 볼 수 있지만 "TDD의 3 가지 법칙"을 따르고 "적색-녹색-리 팩터"주기를 사용할 때 이것에 약간의 문제가 있습니다. 예를 들어 설명하는 것이 가장 좋습니다. 지금은 탭으로 구분 된 데이터가 …

10
타사 라이브러리 사용-항상 래퍼를 사용합니까?
내가 참여한 대부분의 프로젝트는 여러 오픈 소스 구성 요소를 사용합니다. 일반적으로 코드의 모든 구성 요소를 타사 라이브러리에 바인딩하지 말고 캡슐화 래퍼를 사용하여 변경의 고통을 피하는 것이 좋습니다. 예를 들어, 대부분의 PHP 프로젝트는 log4php를 로깅 프레임 워크로 직접 사용합니다. 즉, \ Logger :: getLogger ()를 통해 인스턴스화하고-> info () 또는-> warn …

13
“낮은”응용 계층이“높은”계층을 인식하지 않는 것이 좋은 생각 인 이유는 무엇입니까?
일반적인 (잘 설계된) MVC 웹 앱에서 데이터베이스는 모델 코드를 인식하지 못하고, 모델 코드는 컨트롤러 코드를 인식하지 않으며, 컨트롤러 코드는 뷰 코드를 인식하지 못합니다. (하드웨어에서 시작하거나 더 나아가서 패턴이 동일 할 수 있다고 생각합니다.) 다른 방향으로 가면 한 레이어 만 내려갈 수 있습니다. 뷰는 컨트롤러를 인식 할 수 있지만 모델은 인식 …

8
게터와 세터 안에 무엇이 허용되어야합니까?
나는 getter와 setter 메소드와 캡슐화에 관한 흥미로운 인터넷 논쟁에 들어갔다. 누군가는 "순결한"상태를 유지하고 캡슐화를 보장하기 위해 할당 (세터) 또는 가변 액세스 (게터) 만해야한다고 말했다. 이것이 처음에는 게터와 세터를 갖는 목적을 완전히 잃고 검증과 다른 논리 (이상한 부작용없이)가 허용되어야한다는 것이 맞습니까? 언제 검증이 이루어져야합니까? 값을 설정할 때 setter 내부에서 (객체가 잘못된 …

5
동적 타입 언어로 열거 형이 필요한 이유는 무엇입니까?
나는 여기에 약간의 코드를 읽고 enum이 html 태그의 이름을 저장하는 데 사용되는 것을 보았습니다. 왜 이렇게해야합니까? 이 전략을 사용하면 어떤 이점이 있습니까? 열거 형이 컴파일되거나 정적으로 유형이 지정된 언어로 얼마나 유용한 지 알고 있지만 동적으로 유형이 지정된 언어로 열거 형을 볼 때 위에서 보여준 예제 코드와 같이 궁금합니다. 따라서 질문은 …

10
일반적으로 객체 또는 해당 멤버 변수를 함수로 보냅니 까?
이 두 경우 사이에 일반적으로 허용되는 방법은 다음과 같습니다. function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } 또는 function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } 다시 말해서 일반적으로 전체 객체를 전달하거나 필요한 필드 만 전달하는 것이 더 낫습니까?

6
다른 함수에서만 사용되는 함수를 해당 함수 내에 배치해야합니까?
특히, 나는 JavaScript로 쓰고 있습니다. 기본 함수가 함수 A라고 가정 해 봅시다. 함수 A가 함수 B를 여러 번 호출하지만 함수 B가 다른 곳에서는 사용되지 않는다면 함수 B를 함수 A 내에 두어야합니까? 좋은 습관입니까? 아니면 여전히 기능 B를 기능 A와 동일한 범위에 두어야합니까?

6
Java가 패키지 액세스를 기본으로 설정 한 이유는 무엇입니까?
나는 그들이 좋은 이유 때문에 그것을했고 대부분의 사람들이 지금까지 업계에서의 경험에서 잘 사용하지 못한다고 믿기 때문에이 질문을하고 있습니다. 그러나 내 이론이 사실이라면 왜 그들이 개인 액세스 수정자를 포함했는지 잘 모르겠습니다 ...? 기본 액세스가 올바르게 사용되면 캡슐화를 유지하면서 향상된 테스트 기능을 제공한다고 생각합니다. 또한 개인 액세스 수정자를 중복으로 렌더링합니다. 기본 액세스 …


4
Java가 일부 클래스에서 캡슐화를 사용하지 않는 이유는 무엇입니까?
내 질문은 클래스 와 관련 이 있습니다 (표준 라이브러리의 질문 System.in과 System.out다른 것이있을 수 있습니다). 왜 그런가요? OOP에서 그렇게 나쁜 습관이 아닙니까? 다음 System.getIn()과 같이 사용해서는 안됩니다 System.getOut(). 나는 항상이 질문을 받았으며 여기서 좋은 답을 찾을 수 있기를 바랍니다.


7
변수에 getter 및 setter가있는 경우 공용이어야합니까?
개인 변수가있는 클래스가 있고 클래스에 해당 변수에 대한 getter 및 setter가 있습니다. 왜 변수를 공개하지 않습니까? getter와 setter를 사용해야한다고 생각하는 유일한 경우는 set 또는 get 이외의 작업을 수행 해야하는 경우입니다. 예: void my_class::set_variable(int x){ /* Some operation like updating a log */ this->variable = x; }

5
협회, 집계 및 구성의 사용은 무엇입니까?
캡슐화 란 무엇이며이를 구현하는 세 가지 기술 (협회, 집계 및 구성)에 대한 많은 이론을 살펴 보았습니다. 내가 찾은 것은 : 캡슐화 캡슐화는 클래스의 필드를 개인용으로 만들고 공용 메소드를 통해 필드에 대한 액세스를 제공하는 기술입니다. 필드가 개인용으로 선언되면 클래스 외부의 사용자가 필드에 액세스 할 수 없으므로 클래스 내의 필드가 숨겨집니다. 이러한 …

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.