«design» 태그된 질문

소프트웨어 설계를 통한 솔루션의 문제 해결 및 계획에 대한 질문.

4
스레드 / 백그라운드 작업자를 클래스에 배치하는 것이 "잘못된"/ 잘못된 디자인입니까?
Excel (C # 및 .Net 4)에서 읽을 클래스가 있고 해당 클래스에는 UI에서 응답을 유지하면서 Excel에서 데이터를로드하는 백그라운드 작업자가 있습니다. 내 질문은 다음과 같습니다 : 수업에 배경 근로자가있는 것이 나쁜 디자인입니까? 수업없이 수업을 만들고 백그라운드 작업자를 사용하여 수업을 진행해야하나요? 나는 이런 식으로 수업을 만드는 데 실제로 어떤 문제도 보이지 않지만 다시 …

1
리포지토리 패턴을 올바르게 사용하고 있습니까?
-repository데이터베이스에서 데이터를 검색하기 위해 접미사로 묶인 별개의 클래스 를 사용하고 있습니다. 각 테이블마다 자체 저장소가 있습니다. 예를 들어 customerrepository고객을 검색하는 모든 종류의 메소드가 있고 클래스를 vacancyrepository사용하여 공석을 검색 하는 클래스가 있습니다 . 이 일을하는 방법에 대한 두 가지 질문이 있습니다. 여러 테이블에 걸쳐있는 데이터를 가져 오는 것은 어떻습니까? 예를 들어 …

5
커플 링을 늘리지 않고 DRY를 적용 할 수 있습니까?
함수 F를 구현하는 소프트웨어 모듈 A가 있다고 가정합니다. 다른 모듈 B는 F '와 동일한 기능을 구현합니다. 중복 코드를 제거하는 방법에는 여러 가지가 있습니다. A가 B의 F '를 사용하게하십시오. B가 A의 F를 사용하게하십시오. F를 자체 모듈 C에 넣고 A와 B가 모두 사용하도록하십시오. 이러한 모든 옵션은 모듈간에 추가 종속성을 생성합니다. 커플 링을 …

3
하나의 구현을 구성하는 수많은 사람들. DI 희망이 없습니까? 서비스 로케이터를 사용 하시겠습니까?
주사를 받아들이지 않고 직접 의존성을 구성하는 1001 명의 고객이 있다고 가정 해보십시오. 보스에 따르면 1001을 리팩토링하는 것은 옵션이 아닙니다. 실제로는 소스 파일뿐만 아니라 클래스 파일에도 액세스 할 수 없습니다. 우리가해야 할 일은이 1001 클라이언트가 통과하는 시스템을 "현대화"하는 것입니다. 우리가 좋아하는 모든 것을 리팩터링 할 수 있습니다. 종속성은 해당 시스템의 일부입니다. …

5
OOP 코딩 스타일 : 생성자의 모든 것을 초기화합니까?
나는 여전히 자신을 도제 프로그래머라고 생각하기 때문에 항상 전형적인 프로그래밍을위한 "더 나은"방법을 배우려고합니다. 오늘날 동료는 코딩 스타일이 불필요한 작업을 수행한다고 주장했으며 다른 사람들의 의견을 듣고 싶습니다. 일반적으로 OOP 언어 (일반적으로 C ++ 또는 Python)로 클래스를 디자인 할 때 초기화를 두 개의 다른 부분으로 분리합니다. class MyClass1 { public: Myclass1(type1 arg1, …

1
두 가지 Java 8 기본 메소드를 서로 구현하는 것이 좋습니다.
다음과 비슷한 두 가지 관련 방법으로 인터페이스를 설계하고 있습니다. public interface ThingComputer { default Thing computeFirstThing() { return computeAllThings().get(0); } default List<Thing> computeAllThings() { return ImmutableList.of(computeFirstThing()); } } 구현의 약 절반은 한 가지만 계산하는 반면 나머지 절반은 더 많은 것을 계산할 수 있습니다. 이것은 널리 사용되는 Java 8 코드에서 전례가 …

3
실제로 열린 원칙을 고수하는 방법
공개 원칙의 의도를 이해합니다. 수정하지 않고 확장하도록 지시함으로써 수정하는 동안 이미 작동하는 것을 깨뜨릴 위험을 줄입니다. 그러나이 원칙이 실제로 어떻게 적용되는지 이해하는 데 어려움이있었습니다. 내 이해에는 두 가지 방법이 있습니다. 변경 전과 후에 : 이전 : 추상화에 프로그래밍하고 가능한 한 '미래를 예측'하십시오. 예를 들어, 향후 시스템에 s가 추가 drive(Car car)되면 …

8
코딩 전의 개념과 디자인 : 이것이 얼마나 사실입니까? [닫은]
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까? 이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 오년 전에 . 나는 학교에서 배웠고, 다른 곳 어디에서나 좋은 개발 방법론이 제대로 코딩하기 전에 개념과 디자인이 필요하다는 것을 읽었습니다. 초보자 …

5
구현하기 전에 인터페이스 API를 작성해야합니까?
최근에보다 "조직화 된"프로그래밍에 대해 연구하고 있으며 구현이 아닌 인터페이스로 프로그래밍해야한다는 것을 배웠습니다. 이를 염두에두고, 가능한 경우 구현을 작성하기 전에 인터페이스에서 프로젝트를 "스케치"하는 것이 더 좋을까요? 이 경우 타사 라이브러리 (예 : Lidgren)를 사용하는 경우 인터페이스로 랩핑하고 IOC 컨테이너를 통해 해결해야합니까? 아니면 인터페이스에 노출해도됩니까?

2
디자인 결정-왜 ​​<p>없이 </ p> 생성합니까?
tl; dr html을 생성하는 널리 사용되는 일부 프로그램은 브라우저가 단락을 올바르게 닫는다 고 가정 할 때 시작 단락 태그 만 생성하고 닫는 태그는 생성하지 않습니다. 브라우저는 단락을 올바르게 닫을 것이라는 가정이 맞지 않다고 생각합니다. 내 해석이 정확합니까? 더 일반적으로, 이런 종류의 결정에는 어떤 상충 관계가 있습니까? moinmoin 소스 코드를 살펴보면 …

10
RDBMS가 조인 된 테이블을 중첩 형식으로 반환하지 않는 이유는 무엇입니까?
예를 들어, 사용자와 모든 전화 번호 및 이메일 주소를 가져오고 싶다고 가정하십시오. 전화 번호와 이메일은 별도의 테이블에 저장되며 한 명의 사용자는 많은 전화 / 이메일에 접속합니다. 나는 이것을 아주 쉽게 할 수있다. SELECT * FROM users user LEFT JOIN emails email ON email.user_id=user.id LEFT JOIN phones phone ON phone.user_id=user.id 이 …
14 design  sql  rdbms 

7
대리 키가 사용자에게 노출되어야합니까?
종종 자연 키가없는 테이블에서 사용자가 고유하게 생성 된 식별자를 가질 수있는 것이 여전히 유용합니다. 테이블에 대리 기본 키가 있고 (이 경우 확실하게 예상 할 수있는 경우) 해당 키를 사용자에게 노출해야합니까, 아니면 다른 필드를 해당 용도로 사용해야합니까? 대리 키를 표시하지 않는 한 가지 이유는 이제 레코드 간 관계를 유지하는 작업을 수행 …

3
전략 패턴을 사용하는 Java의 일반 파일 파서 디자인
모듈 중 하나의 책임이 XML 파일을 구문 분석하고 필요한 내용을 데이터베이스에 덤프하는 제품을 개발 중입니다. 현재 요구 사항은 XML 파일 만 구문 분석하는 것이지만 향후 모든 종류의 파일을 지원할 수있는 방식으로 구문 분석 모듈을 설계하려고합니다. 이 접근 방식의 이유는 특정 고객을 위해이 제품을 구축하고 있지만 가까운 시일 내에 다른 고객에게 …
14 java  design  parsing  xml 

8
OO 기술 인터뷰에서 디자인 관련 질문 [닫기]
폐쇄되었습니다 . 이 질문은 의견 기반 입니다. 현재 답변을받지 않습니다. 이 질문을 개선하고 싶습니까?이 게시물 을 편집 하여 사실과 인용으로 답변 할 수 있도록 질문을 업데이트하십시오 . 휴일 3 년 전 . 최근에 몇 번의 인터뷰에 참석했으며 회사에서 "[insert model] 디자인"질문에 몇 번 이상 대답하도록 요청했습니다. 요즘 업계에서 이것이 정상입니까? …

5
'유틸리티'수업이 문제의 원인입니까? [닫은]
현재로서는이 질문이 Q &amp; A 형식에 적합하지 않습니다. 답변, 사실, 참고 자료 또는 전문 지식을 통해 답변이 뒷받침 될 것으로 예상되지만이 질문은 토론, 논쟁, 여론 조사 또는 광범위한 토론을 요구할 것입니다. 이 질문을 개선하고 다시 열 수 있다고 생각 되면 도움말 센터 를 방문하여 안내를 받으십시오 . 휴일 칠년 전에 …

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