«constructors» 태그된 질문

9
직접 객체 생성 대신 팩토리 클래스를 사용해야하는 이유는 무엇입니까?
GitHub 및 CodePlex에서 여러 С # 및 Java 클래스 라이브러리 프로젝트의 역사를 보았으며 직접 객체 인스턴스화와는 반대로 팩토리 클래스로 전환하는 경향을 봅니다. 왜 팩토리 클래스를 광범위하게 사용해야합니까? 클래스의 공용 생성자를 호출하여 객체가 구식 방식으로 만들어지는 꽤 좋은 라이브러리가 있습니다. 마지막 커밋에서 저자는 수천 개의 클래스의 모든 공용 생성자를 내부로 신속하게 …

12
생성자에서 모든 객체의 작업을 수행해야하는 이유가 있습니까?
이 코드가 내 코드 나 동료의 코드가 아니라고 말함으로써이 서문을 시작하겠습니다. 몇 년 전 우리 회사의 규모가 더 좁 았을 때, 우리는 용량이 없었기 때문에 필요한 프로젝트를 수행하여 아웃소싱했습니다. 이제는 일반적으로 아웃소싱 또는 계약자에 대해 아무런 조치도 취하지 않았지만 이들이 생성 한 코드베이스는 대량의 WTF입니다. 즉, (주로) 효과가 있기 때문에 …


9
C #의 생성자 매개 변수 유효성 검사-모범 사례
생성자 매개 변수 유효성 검사에 대한 모범 사례는 무엇입니까? 간단한 C #을 가정 해 봅시다. public class MyClass { public MyClass(string text) { if (String.IsNullOrEmpty(text)) throw new ArgumentException("Text cannot be empty"); // continue with normal construction } } 예외를 던질 수 있습니까? 내가 직면 한 대안은 인스턴스화하기 전에 사전 검증이었습니다. …

5
매개 변수 또는 반환 값으로 C 구조체를 초기화해야합니까? [닫은]
내가 일하는 회사는 다음과 같은 초기화 기능을 통해 모든 데이터 구조를 초기화하고 있습니다. //the structure typedef struct{ int a,b,c; } Foo; //the initialize function InitializeFoo(Foo* const foo){ foo->a = x; //derived here based on other data foo->b = y; //derived here based on other data foo->c = z; //derived here …

3
"시작", "실행"또는 "실행"방법이 모범 사례입니까?
현재 Start 메서드를 구현하는 많은 클래스가있는 코드베이스에서 작업하고 있습니다. 이것은 나에게 2 단계 구조처럼 보이지만, 항상 나쁜 습관으로 간주했습니다. 이것과 생성자의 차이점을 알 수 없습니다. 일반적인 객체 구성 대신 시작 방법을 사용하는 것이 언제 적절한가요? 언제 생성자를 사용해야합니까? 편집 : 관련성이 없다고 생각하지만 프로그래밍 언어는 C #이며 Java 또는 C …

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 : 선택적 매개 변수를 가진 …

5
생성자에서 setter를 사용하는 것이 일반적인 패턴이 아닌 이유는 무엇입니까?
접근 자와 수정 자 (일명 setter 및 getter)는 세 가지 주요 이유로 유용합니다. 변수에 대한 액세스를 제한합니다. 예를 들어 변수에 액세스 할 수는 있지만 수정할 수는 없습니다. 그들은 매개 변수의 유효성을 검사합니다. 부작용이 발생할 수 있습니다. 웹의 대학교, 온라인 강좌, 튜토리얼, 블로그 기사 및 코드 예제는 모두 접근 자와 수정 …

4
생성자의 합법적 인 "실제 작업"?
디자인 작업을하고 있지만 계속 장애물을 치고 있습니다. XML 스키마를 구문 분석하여 생성 한 복잡한 노드 트리의 소유자 인 DOM (특정 클래스) 인 특정 클래스 (ModelDef)가 있습니다. 좋은 설계 원칙 (SOLID)을 따르고 결과 시스템을 쉽게 테스트 할 수 있는지 확인하고 싶습니다. DI를 사용하여 종속성을 ModelDef의 생성자로 전달하려는 모든 의도가 있습니다 (필요한 …

5
생성자를 어떻게 분해 할 수 있습니까?
Enemy 클래스가 있다고 가정하면 생성자는 다음과 같습니다. public Enemy(String name, float width, float height, Vector2 position, float speed, int maxHp, int attackDamage, int defense... etc.){} 생성자가 너무 많은 매개 변수를 가지고 있기 때문에 이것은 좋지 않지만 Enemy 인스턴스를 만들 때 이러한 모든 것을 지정해야합니다. 또한 Enemy 클래스에서 이러한 속성을 원하므로 …

3
수많은 매개 변수와 빌더 패턴의 생성자
클래스에 많은 매개 변수가있는 생성자 (예 : 4 개 이상)가 있으면 코드 냄새 일 가능성이 높습니다 . 클래스가 SRP를 충족하는 경우 다시 고려해야 합니다. 그러나 10 개 이상의 매개 변수에 의존하고 결국 빌더 패턴을 통해 모든 매개 변수를 설정하는 것으로 끝나는 경우 어떻게해야합니까? Person개인 정보, 작업 정보, 친구 정보, 관심사 …

3
생성자가 얼마나 복잡한가
생성자와 함께 할 수있는 작업량에 대해 동료와 논의하고 있습니다. 내부에 다른 개체 A가 필요한 클래스 B가 있습니다. 개체 A는 클래스 B가 작업을 수행해야하는 몇 가지 구성원 중 하나입니다. 모든 공용 메소드는 내부 객체 A에 따라 다릅니다. 객체 A에 대한 정보는 DB에 저장되므로 생성자의 DB에서 조회하여 확인하고 가져 오려고합니다. 내 동료는 …
18 c#  constructors 

1
기본 생성자를 사용할 수 없게 만드는 것이 좋습니까?
기본 생성자에 대해 구체적으로 묻습니다. 생성자가 객체의 모든 데이터를 초기화한다고 가정하면, 적절한 초기화없이 사용할 수없는 클래스를 만들면 기본 생성자가 쓸모없는 경우가 아닌가? 치다: // A class for handling lines in a CSV file class CSV_Entry { private: unsigned num_entries; std::string string_version; std::vector<std::string> vector_version; ...etc public: CSV_Entry(); CSV_Entry(const std::string& src_line); // …

3
인수 개수를 어떻게 낮게 유지하면서도 타사의 종속성을 개별적으로 유지합니까?
타사 라이브러리를 사용합니다. 그들은 우리의 의도와 목적을 위해 아마도 다음과 같이 구현 되는 POJO 를 전달 합니다. public class OurData { private String foo; private String bar; private String baz; private String quux; // A lot more than this // IMPORTANT: NOTE THAT THIS IS A PACKAGE PRIVATE CONSTRUCTOR OurData(/* …

6
객체를 제대로 인스턴스화하지 못하는 생성자를 작성하는 방법
때로는 실패 할 수있는 생성자를 작성해야합니다. 예를 들어 파일 경로를 사용하여 객체를 인스턴스화하고 싶다고 가정 해보십시오. obj = new Object("/home/user/foo_file") 경로가 적절한 파일을 가리키는 한 모든 것이 좋습니다. 그러나 문자열이 유효한 경로가 아닌 경우 문제가 발생합니다. 그러나 어떻게? 당신은 할 수 있습니다 : 예외를 던지다 null 객체 반환 (프로그래밍 언어에서 …

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