«design» 태그된 질문

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

11
완벽한 범위 리터럴 설계
언어를 디자인하려면 "완벽한"범위 리터럴을 디자인하는 방법에 대해 생각했습니다. 1-4와 같이 값의 범위를 나타내는 명령문에서 범위 리터럴을 모르는 경우 for / foreach 루프에서 가장 일반적으로 사용됩니다. 고려해야 할 몇 가지 문제가있는 것 같습니다. 포괄적이고 배타적 인 범위에 대한 지원, 엔드 포인트에 +1 또는 -1을 적용하는 것은 약간 애매하고 오류가 발생하기 쉽습니다. …

9
하드 코딩 된 값 제거 및 방어 적 설계 vs YAGNI
먼저 약간의 배경 지식. Age-> Rate에서 조회를 코딩하고 있습니다. 7 개의 에이지 대괄호가 있으므로 조회 테이블은 7 개의 행이있는 3 개의 열 (From | To | Rate)입니다. 값은 거의 변하지 않습니다 . 3 년 동안 동일하게 유지 된 입 법률 (첫 번째 및 세 번째 열)입니다. 이 테이블을 하드 코딩하지 …
10 design 

6
Dijkstra는 우려 분리에 대해 글을 쓸 때 코드 모듈화를 계획 했습니까?
먼저, 나는 Edsger W. Dijkstra의 1974 년 논문 "과학적 사고의 역할에 관한"을 읽었습니다. 내가 당신에게 설명하려고 노력하겠습니다. 내 취향에 맞는 것은 모든 지적 사고의 특징입니다. 그것은 자신이 일관성을 유지하기 위해 자신의 주제의 측면을 심도있게 연구하고자하는 것이며, 항상 하나의 측면만으로 자신을 차지하고 있다는 것을 알고 있습니다. 우리는 프로그램이 정확해야한다는 것을 알고 …

2
예외의 세분성
나는 같은 그들은 일반적으로 예외를 선호하는 몇 친구들과 나 사이의 논쟁으로 실행했습니다 ClientErrorException와 ServerErrorException내가 일을 더 구체적인을 선호하는 반면, 예외의 필드와 세부 사항. 예를 들어 다음과 같은 몇 가지 예외가있을 수 있습니다. BadRequestException AuthenticationFailureException ProductNotFoundException 이들 각각은 API에서 반환 된 오류 코드를 기반으로 작성되었습니다. 예외의 장점에 따라 이것은 Java에 관용적 …

7
수업을 너무 세분화하고 있습니까? 단일 책임 원칙을 어떻게 적용해야합니까?
세 가지 기본 단계를 포함하는 많은 코드를 작성합니다. 어딘가에서 데이터를 가져옵니다. 그 데이터를 변환하십시오. 그 데이터를 어딘가에 두십시오. 나는 일반적으로 각각의 디자인 패턴에서 영감을 얻은 세 가지 유형의 클래스를 사용합니다. 공장-일부 리소스에서 개체를 작성합니다. 중재자-공장을 사용하고 변형을 수행 한 다음 지휘관을 사용하십시오. 지휘관-그 데이터를 다른 곳에 두십시오. 제 수업은 매우 …

2
이것이 C ++의 "pImpl"기반 클래스 계층에 대한 좋은 접근 방법입니까?
인터페이스와 구현을 분리하려는 클래스 계층이 있습니다. 내 솔루션은 인터페이스에 대한 핸들 클래스 계층 구조와 구현을위한 비공개 클래스 계층 구조라는 두 가지 계층 구조를 갖는 것입니다. 기본 핸들 클래스에는 파생 핸들 클래스가 파생 유형의 포인터로 캐스트하는 구현에 대한 포인터가 있습니다 (함수 참조 getPimpl()). 다음은 파생 클래스가 두 개인 기본 클래스에 대한 …
9 design  c++  c++11 

3
인터페이스가 구체적인 클래스에 의존해도 괜찮습니까?
사용자 정의 오류 처리기를 위해 Java로 인터페이스를 만들고 있습니다. 인수 오류 객체를 전달하고 싶지만 Exception클래스의 자식이어야 합니다. 인터페이스에서 정의 된 클래스 이름을 사용해도 괜찮습니까? 구현에 의존하지 않는다는 점에서 인터페이스가 적지 않습니까? 나는 이런 식으로하려고합니다. public class CustomException { /* ... Implementation ... */ } public interface Interface { void onError(CustomException …

1
코드 디자인 : 임의 함수 위임
PPCG에서 우리는 서로 다른 코드 봇을 움켜 쥐는 King of the Hill 과제를 자주 겪습니다 . 우리는 이러한 과제를 단일 언어로 제한하는 것을 좋아하지 않으므로 표준 I / O를 통해 플랫폼 간 통신을 수행합니다. 저의 목표는 도전 과제 작성자가 이러한 과제를보다 쉽게 ​​작성하는 데 사용할 수있는 프레임 워크를 작성하는 것입니다. …

2
데이터 지향 인터페이스 프로그래밍
코드베이스의 일부는 다음과 같은 스타일로 작성되었습니다. // IScheduledTask.cs public interface IScheduledTask { string TaskName { get; set; } int TaskPriority { get; set; } List<IScheduledTask> Subtasks { get; set; } // ... several more properties in this vein } // ScheduledTaskImpl.cs public class ScheduledTaskImpl : IScheduledTask { public string TaskName …

2
인터페이스 분리 원리 : 인터페이스가 상당히 겹치는 경우 어떻게해야합니까?
에서 피어슨 새로운 국제 버전 : 애자일 소프트웨어 개발, 원칙, 패턴, 및 사례 : 때로는 다른 클라이언트 그룹이 호출 한 메소드가 겹칠 수 있습니다. 오버랩이 작 으면 그룹의 인터페이스가 분리되어 있어야합니다. 공통 기능은 모든 겹치는 인터페이스에 선언해야합니다. 서버 클래스는 각 인터페이스에서 공통 기능을 상속하지만 한 번만 구현합니다. Bob 아저씨, 약간의 …

2
코드 구성 방식을 계획하기 위해 UML 다이어그램을 사용하는 것이 부적절한 이유는 무엇입니까?
따라서 다이어그램은 때때로 부적절 할 수 있습니다. 언제 부적절한가요? 코드없이 코드를 작성하여 유효성을 검증 한 후 따르려고합니다. 아이디어를 탐색하기 위해 다이어그램을 그리는 데 아무런 문제가 없습니다. 민첩한 소프트웨어 개발 : 원칙, 패턴 및 실습 -Robert C. Martin 그가 정확히 무엇을 의미합니까? UML은 "다이빙" 하기 전에 코드를 구성하는 방법을 계획하도록 설계되지 …

5
추상화에 따라 중요한 단점이 있습니까?
SAP (Stable Abstractions Principle)에서이 위키를 읽고있었습니다 . SAP는 패키지가 안정적 일수록 더 추상적이어야한다고 말합니다. 이것은 패키지가 덜 안정적이고 (변경 될 가능성이 높으면) 더 구체적이어야 함을 의미합니다. 내가 실제로 이해하지 못하는 것은 이것이 사실이어야하는 이유입니다. 확실하게 안정성에 관계없이 모든 경우에 추상화에 의존하고 구체적인 구현을 숨겨야합니까?

3
CRUD API : 업데이트 할 필드를 어떻게 지정합니까?
어떤 종류의 데이터베이스에 유지되는 일종의 데이터 구조가 있다고 가정 해 봅시다. 간단히하기 위해이 데이터 구조를 호출 해 봅시다 Person. 이제 CRUD API를 설계해야하는데,이를 통해 다른 응용 프로그램에서을 만들고 읽고 업데이트하고 삭제할 수 Person있습니다. 간단하게하기 위해이 API는 어떤 종류의 웹 서비스를 통해 액세스한다고 가정합니다. CRUD의 C, R 및 D 부분의 경우 …

1
C ++ 직렬화 디자인 검토
C ++ 응용 프로그램을 작성 중입니다. 대부분의 응용 프로그램 은 필요한 데이터 인용을 읽고 쓸 수 있으며 예외는 아닙니다. 데이터 모델 및 직렬화 논리에 대한 높은 수준의 디자인을 만들었습니다. 이 질문은 다음과 같은 특정 목표를 염두에두고 디자인 을 검토 하도록 요청합니다 . 원시 이진, XML, JSON 등 임의의 형식으로 데이터 …
9 design  c++  c++11 

2
전체 모듈 사용 또는 공개 메소드의 인수 만 검증해야합니까?
공개 메소드의 인수를 검증하는 것이 권장된다고 들었습니다. null을 기대하지 않으면 null을 검사해야합니까? 메소드가 매개 변수의 유효성을 검증해야합니까? MSDN-CA1062 : 공용 메서드의 인수 유효성 검사 (.NET 배경은 있지만 질문은 C #에 국한되지 않음) 동기 부여는 이해할 수 있습니다. 모듈이 잘못된 방식으로 사용될 경우 예측할 수없는 동작 대신 즉시 예외를 처리하려고합니다. 나를 …

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