«class-design» 태그된 질문

업계에서 가장 잘 알려진 클래스를 디자인하는 방법에 대한 일반 지침.

16
단일 책임 원칙을 사용할 때 "책임"은 무엇입니까?
"단일 책임 원칙"이 "한 가지 일만"을 의미하는 것은 아님이 분명합니다. 그것이 방법에 대한 것입니다. public Interface CustomerCRUD { public void Create(Customer customer); public Customer Read(int CustomerID); public void Update(Customer customer); public void Delete(int CustomerID); } 밥 마틴은 "수업은 변화해야 할 단 하나의 이유가 있어야한다"고 말했다. 그러나 SOLID를 처음 사용하는 프로그래머라면 …

9
다중 상속을 싫어하는“실제”이유가 있습니까?
나는 언어에서 다중 상속을 지원한다는 아이디어를 항상 좋아했습니다. 대부분의 경우 의도적으로 무시되었지만 "교체"라고 생각되는 것은 인터페이스입니다. 인터페이스는 단순히 다중 상속이 수행하는 모든 동일한 접지를 다루지 않으며, 이러한 제한으로 인해 더 많은 상용구 코드가 생길 수 있습니다. 내가 들어 본 유일한 기본 이유는 기본 클래스 의 다이아몬드 문제 입니다. 나는 그것을 …

13
다른 프로그래머에게 클래스 구현에 대해 경고하는 방법
"특정 방법으로 사용해야합니다"클래스를 작성하고 있습니다 (모든 클래스는 반드시 ...). 예를 들어 fooManager클래스를 만들려면을 호출 해야 합니다 Initialize(string,string). 그리고 예제를 조금 더 나아 가기 위해 클래스의 ThisHappened행동을 듣지 않으면 클래스는 쓸모가 없습니다 . 내 요점은, 내가 쓰고있는 클래스에는 메소드 호출이 필요하다는 것입니다. 그러나 이러한 메소드를 호출하지 않으면 컴파일이 잘되고 빈 FooManager가 …

12
여러 계층을 통해 인스턴스를 전달하는 것은 나쁜 습관입니까?
프로그램 디자인에서 종종 여러 클래스를 통해 객체 인스턴스를 전달해야하는 시점에 도달합니다. 예를 들어, 오디오 파일을로드 한 다음 플레이어로 전달하는 컨트롤러가 있고 플레이어가 playerRunnable에 전달하면 다른 곳으로 다시 전달됩니다. 그것을 피하는 방법을 알아라. 아니면 괜찮습니까? 편집 : 아마도 파일을 나중에로드 할 수 있기 때문에 플레이어 예제가 가장 좋지 않을 수도 있지만 …

6
객체의 상태가 유효하지 않은 경우 getter에서 예외가 발생해야합니까?
일반적인 OOP 문제라고 생각하더라도 특히 Java 에서이 문제가 자주 발생합니다. 즉, 예외를 발생 시키면 디자인 문제가 드러납니다. String name필드와 필드 가있는 클래스가 있다고 가정하십시오 String surname. 그런 다음 해당 필드를 사용하여 인보이스와 같은 일종의 문서에 표시하기 위해 사람의 완전한 이름을 작성합니다. public void String name; public void String surname; public …

6
클래스를 자체 목록의 하위 클래스로 정의하면 어떤 단점이 있습니까?
최근 프로젝트에서 다음 헤더를 사용하여 클래스를 정의했습니다. public class Node extends ArrayList<Node> { ... } 그러나 내 CS 교수와상의 한 후, 그는 수업이 "기억에 나쁘다"고 "나쁜 연습"이라고 말했다. 나는 첫 번째가 특히 사실이고 두 번째가 주관적인 것을 발견하지 못했습니다. 이 사용법에 대한 나의 추론은 임의의 깊이를 가질 수있는 것으로 정의 …

6
내부 멤버 사이에 클래스 멤버를 선호하거나 인수를 전달 하시겠습니까?
클래스의 개인 부분 내에 여러 개인 메소드가 사용하는 값이 있다고 가정하십시오. 사람들은 이것을 클래스의 멤버 변수로 정의하거나 각 메소드에 대한 인수로 전달하는 것을 선호합니까? 그 이유는 무엇입니까? 한편으로는 클래스의 상태 (즉, 멤버 변수)를 줄이는 것이 일반적으로 좋은 일이라는 주장을 알 수 있지만 클래스의 메소드에서 동일한 값이 반복적으로 사용되는 경우 이상적입니다. …


4
정적 클래스보다 정적이 아닌 내부 클래스를 선호하는 이유는 무엇입니까?
이 질문은 Java에서 중첩 클래스를 정적 ​​중첩 클래스 또는 내부 중첩 클래스로 만들지 여부에 관한 것입니다. 여기와 Stack Overflow에서 검색했지만이 결정의 디자인 영향에 관한 질문은 실제로 찾을 수 없었습니다. 내가 찾은 질문은 정적 클래스와 내부 중첩 클래스의 차이점에 대해 묻는 것입니다. 그러나 익명 클래스를 제외하고 Java에서 정적 중첩 클래스를 사용해야하는 …

5
다른 클래스의 ClassCollection을 만드는 것이 좋은 방법입니까?
Car수업 이 있다고 말합니다 . public class Car { public string Engine { get; set; } public string Seat { get; set; } public string Tires { get; set; } } 우리는 주차장에 대한 시스템을 만들고 있다고 말하고 많은 Car수업 을 사용할 것이므로 수업을 만들면 다음 CarCollection과 같은 몇 가지 …

5
언제 그리고 왜 중첩 클래스를 사용해야합니까?
Object Oriented Programming을 사용하면 클래스 (중첩 클래스) 내에 클래스를 만들 수 있지만 4 년 동안 코딩 경험에서 중첩 클래스를 만들지 않았습니다. 중첩 클래스는 무엇입니까? 클래스가 중첩되어 있으면 클래스를 비공개로 표시 할 수 있고 포함 클래스에서 해당 클래스의 모든 비공개 멤버에 액세스 할 수 있음을 알고 있습니다. 포함하는 클래스 자체에서 변수를 …

3
선택적 매개 변수 또는 오버로드 된 생성자
나는 DelegateCommand을 구현하고 있으며 생성자를 구현하려고 할 때 다음 두 가지 디자인 선택을 생각해 냈습니다. 1 : 여러 개의 오버로드 된 생성자 public DelegateCommand(Action<T> execute) : this(execute, null) { } public DelegateCommand(Action<T> execute, Func<T, bool> canExecute) { this.execute = execute; this.canExecute = canExecute; } 2 : 선택적 매개 변수를 가진 …

10
우리는 생성자없이 살 수 있습니까?
어떤 이유로 든 모든 객체가 $ obj = CLASS :: getInstance () 방식으로 생성되었다고 가정 해 봅시다. 그런 다음 setter를 사용하여 종속성을 주입하고 $ obj-> initInstance ()를 사용하여 초기화 시작을 수행합니다. 생성자를 전혀 사용하지 않으면 해결할 수없는 실제 문제 나 상황이 있습니까? 추신 :이 방법으로 객체를 생성하는 이유는 일부 규칙에 …


2
동일한 기능을하는 다른 기능 서명을 제공하는 것이 좋습니다?
다음은 세 가지 값으로 구성된 C ++ 클래스입니다. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; 모든 매개 변수 유형이 다릅니다. 순서가 중요하지 않도록 생성자를 오버로드 할 수 있습니다. class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, std::string, int); …

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