«encapsulation» 태그된 질문

6
메쏘드 체이닝 vs 캡슐화
메소드 체인과 "단일 액세스 포인트"메소드의 고전적인 OOP 문제가 있습니다. main.getA().getB().getC().transmogrify(x, y) vs main.getA().transmogrifyMyC(x, y) 첫 번째 클래스는 각 클래스가 더 작은 작업 집합에 대해서만 책임을지고 모든 것을 훨씬 모듈 방식으로 만드는 이점이있는 것 같습니다 .C에 메소드를 추가하는 것이 A, B 또는 C에서 노출시키지 않아도됩니다. 물론 단점은 캡슐화 가 약해서 두 …

5
캡슐화를 중단하지 않고 Dependency Injection을 사용할 수 있습니까?
내 솔루션과 프로젝트는 다음과 같습니다. 서점 (솔루션) BookStore.Coupler (프로젝트) Bootstrapper.cs BookStore.Domain (프로젝트) CreateBookCommandValidator.cs CompositeValidator.cs IValidate.cs IValidator.cs ICommandHandler.cs 서점 인프라 (프로젝트) CreateBookCommandHandler.cs ValidationCommandHandlerDecorator.cs BookStore.Web (프로젝트) Global.asax BookStore.BatchProcesses (프로젝트) Program.cs Bootstrapper.cs : public static class Bootstrapper.cs { // I'm using SimpleInjector as my DI Container public static void Initialize(Container container) { container.RegisterManyForOpenGeneric(typeof(ICommandHandler<>), …


1
친구 클래스를 사용하여 C ++에서 개인 멤버 함수를 캡슐화-우수 사례 또는 남용?
따라서 다음과 같이하여 개인 함수를 헤더에 넣지 않는 것이 가능하다는 것을 알았습니다. // In file pred_list.h: class PredicateList { int somePrivateField; friend class PredicateList_HelperFunctions; public: bool match(); } // In file pred_list.cpp: class PredicateList_HelperFunctions { static bool fullMatch(PredicateList& p) { return p.somePrivateField == 5; // or whatever } } bool …


5
항상 내부 데이터 구조를 완전히 캡슐화해야합니까?
이 수업을 고려하십시오 : class ClassA{ private Thing[] things; // stores data // stuff omitted public Thing[] getThings(){ return things; } } 이 클래스는 데이터를 저장하는 데 사용하는 배열을 관심있는 클라이언트 코드에 노출합니다. 작업중 인 앱 에서이 작업을 수행했습니다. 나는 ChordProgression일련의 Chords 를 저장하고 다른 것들을 하는 클래스를 가지고있었습니다 . …

4
캡슐화 남용으로 고통 받습니까?
코드 냄새가 나고 나쁜 것으로 보이는 다양한 프로젝트에서 내 코드의 무언가를 발견했지만 처리 할 수 ​​없습니다. "깨끗한 코드"를 작성하는 동안 코드를보다 쉽게 ​​읽을 수 있도록 개인 메서드를 과도하게 사용하는 경향이 있습니다. 문제는 코드가 실제로 깨끗하지만 테스트하기가 더 어렵다는 것입니다 (예, 개인 메서드를 테스트 할 수 있다는 것을 알고 있습니다 ...). …

4
중첩 클래스 : 유용한 도구 또는 캡슐화 위반?
그래서 나는 이것들을 사용 해야하는지 아닌지에 대해 여전히 울타리에 있습니다. 캡슐화가 극단적으로 위반된다고 생각하지만 코드에서 더 많은 유연성을 얻으면서 어느 정도의 캡슐화를 달성 할 수 있음을 알았습니다. 이전 Java / Swing 프로젝트 중첩 클래스를 어느 정도 사용했지만 이제는 C #의 다른 프로젝트로 이동했으며 사용을 피합니다. 중첩 클래스에 대해 어떻게 생각하십니까?

4
메서드 이름을 바꾸면 캡슐화를 유지할 수 있습니까?
getter / setter가 정당화되는 시점에 대해이 페이지를 읽고 OP는 다음 코드 샘플을 제공했습니다. class Fridge { int cheese; void set_cheese(int _cheese) { cheese = _cheese; } int get_cheese() { return cheese; } } void go_shopping(Fridge fridge) { fridge.set_cheese(fridge.get_cheese() + 5); } 허용 응답 상태 : 그런데, 귀하의 예제에서, 나는 클래스 …

5
함수가 외부에서 액세스되고 있음을 분명히하는 방법은 무엇입니까?
이것은 C 관련 질문입니다. 번역 단위 경계 안에 가능한 모든 것을 유지하려고 노력하고 .h파일을 통해 몇 가지 기능 만 노출시킵니다 . 즉, static파일 수준 개체에 연결을 제공하고 있습니다. 이제 다른 모듈에서 몇 가지 함수를 호출해야하지만 직접은 아닙니다. 내 모듈 / 파일 / 번역 장치가 다른 모듈을 구독하여 함수에 포인터를 전달합니다. …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.