«design» 태그된 질문

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

7
중요한 분기없이 전략 패턴을 구현할 수 있습니까?
전략 패턴은 거대한 if ... else 구문을 피하고 기능을 쉽게 추가하거나 대체 할 수 있도록하는 데 효과적입니다. 그러나 여전히 내 의견으로는 하나의 결함이 남아 있습니다. 모든 구현에서 여전히 분기 구성이 필요한 것처럼 보입니다. 팩토리 또는 데이터 파일 일 수 있습니다. 예를 들어 주문 시스템을 사용하십시오. 공장: // All of these …

5
다면 프로젝트에서 버전 관리를 어떻게 처리합니까?
나는 그것이 광범위한 질문이라는 것을 알고 있으므로 가능한 한 구체적으로 노력할 것입니다. 이 질문은 기술적 인 질문보다 "조직적인"질문입니다. 우리는 다음과 같은 주요 구성 요소로 된다면 프로젝트를 가지고 있습니다. 핵심 비즈니스 로직 (데이터 모델)을 호스팅하는 서버 핵심 비즈니스 로직을 사용하는 고객을위한 백 오피스 핵심 비즈니스 로직도 사용하는 애플리케이션 API (REST) 응용 …

2
LinkedList를 확장하는 스택. Liskov 대체 원칙 위반?
add_first (), add_last (), add_after (), remove_first (), remove_last () 및 remove ()와 같은 함수가있는 LinkedList 클래스가 있습니다. 이제 push (), pop (), peek () 또는 top ()과 같은 기능을 제공하는 클래스 스택이 있으며 이러한 메소드를 구현하기 위해 LinkedList 클래스 메소드를 확장합니다. 이것이 Liskov 대체 원칙을 위반합니까? 예를 들어, 링크 …

3
여러 언어에서 상수를 어떻게 관리해야합니까?
여러 언어로 기능적으로 동일한 라이브러리를 지원하는 상황이 있습니다. 이들 사이에 공유해야하는 상수가 종종 있습니다 (예 : json 필드 이름 키 또는 오류 코드). 현재이 작업을 수행하는 방법은 각 언어의 상수를 정의하는 코드를 작성하는 것입니다. 문제는 유지 보수에 있습니다. 새 오류 코드를 추가하면 모든 라이브러리에서 수동으로 업데이트해야합니다. 이것은 몇 가지로는 괜찮지 …
13 design  packages 

6
객체를 발표자에게 매핑하는 깔끔한 OOP 방식
Java로 보드 게임 (예 : 체스)을 만들고 있는데 각 조각은 자체 유형 (예 Pawn: Rook등)입니다. 응용 프로그램의 GUI 부분에는 이러한 각 조각에 대한 이미지가 필요합니다. 생각하고 있기 때문에 rook.image(); UI와 비즈니스 로직의 분리를 위반하는 경우 각 조각마다 다른 발표자를 만든 다음 조각 유형을 해당 발표자에 매핑합니다. private HashMap<Class<Piece>, PiecePresenter> presenters …

8
YAGNI 원칙을 따르지 않는 스크럼 팀
SCRUM 회의에서 제품 팀은 모바일 앱에서 사용할 API의 기능에 대해 토론했습니다. 우리는 화면이 어떻게 생겼는지, 어떤 핵심 요소 ( "레이아웃")를 보여야하는지 모의했습니다. 이것과 제품 소유자와의 토론을 바탕으로 API 응답 (HAL + JSON)을위한 프로토 타입을 만들었습니다. 매우 간단하고 HAL 호환 JSON으로 모형에 있던 것을 표현할뿐이었습니다. 비즈니스 사람들이 자신의 아이디어를 자주 바꾸는 …

3
어떤 이유로 Swift의 각 델리게이트에 대해 별도의 클래스 확장을 사용 하시겠습니까?
Ray Wenderlich 튜토리얼을 진행하면서 저자가 클래스 확장을 사용하여 델리게이트 콜백을 클래스 자체에서 처리하지 않고 델리게이트 콜백을 유지하는 것으로 나타났습니다. 클래스 확장 내에서 콜백 위임 : extension LogsViewController : UIPopoverPresentationControllerDelegate { func adaptivePresentationStyleForPresentationController(controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle { ... } } 클래스 내에 포함시키는 것과는 대조적으로 : 클래스 내 콜백 …

3
특정 조건에서 프로그래머의 관심을 끄는 방법은 무엇입니까?
예를 들어 보자. exportDB 스키마에 크게 의존 하는 메서드가 있다고 가정 해 봅시다 . “무겁다”는 말은 특정 테이블에 새 열을 추가하는 경우가 많고 (매우 자주) 해당 export메소드가 변경됨 을 나타냅니다 (보통 내보내기 데이터에도 새 필드를 추가해야 함). 프로그래머는 종종이 export방법 을 변경 해야한다는 것을 확실하지 않기 때문에 방법 을 변경 …

5
한 테스트를 다른 테스트 결과에 의존하게 만드는 방법은 무엇입니까?
코드의 모든 곳 에서 다른 많은 클래스가 사용하는 일반적인 정적 메소드를 제공하는 유틸리티 클래스가 있다고 가정 해 봅시다 . 유틸리티 테스트 중 하나라도 통과하지 못하면 테스트가 실패하도록 유틸리티 소비자에 대한 단위 테스트를 어떻게 설계 하시겠습니까? 유틸리티 클래스 테스트가 모두 녹색인지 직접 확인해야합니까? 예를 들어 메시지 파서가 사용하는 메시지 스플리터 유틸리티가 …

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(/* …

4
레일 : 데메테르 혼란의 법칙
저는 Rails AntiPatterns라는 책을 읽고 있습니다. 그들은 Demeter of Demeter를 위반하지 않기 위해 위임을 사용하는 것에 대해 이야기합니다. 주요 예는 다음과 같습니다. 그들은 컨트롤러에서 이와 같은 것을 호출하는 것이 좋지 않다고 생각합니다 (그리고 나는 동의합니다) @street = @invoice.customer.address.street 제안 된 해결책은 다음을 수행하는 것입니다. class Customer has_one :address belongs_to :invoice …

5
텍스트 파일의 데이터를 구문 분석하는 것보다 데이터베이스를 사용해야하는 경우는 언제입니까?
codereview.SE 의 성장을 측정하기 위해 Python 프로그램을 만들고 있었습니다 . 내 접근 방식은 첫 페이지에 "사이트 통계"를 표시하여 하드 드라이브에 저장하는 것이 었습니다. 나는 이것을 매일 한 번씩 할 계획이다. 지금까지 통계를 가져 와서 텍스트 파일에 추가하기에 충분했습니다. 파이썬 스크립트는 github에서 볼 수 있습니다 . 내가 사용하는 형식은 다음과 같습니다 …

4
이러한 특정 테이블에 서로 게이트 키가 필요합니까?
배경 이 테이블이 있습니다 +-------------------------+ +------------------------+ |Airport | |Country | |-------------------------| |------------------------| |airport_code string (PK) | |country_code string (PK)| |address string | |name string | |name string | +------------------------+ +-------------------------+ +-------------------------+ |Currency | |-------------------------| |currency_code string (PK)| |name string | +-------------------------+ airport_code 는 IATA (International Air Transport Association) 공항 코드 …

3
Dependency Inversion Principle : 다른 사람에게“높은 수준의 정책”과“낮은 수준의 세부 사항”을 정의하는 방법은 무엇입니까?
나는 (주로 후배) 동료들에게 의존성 역전 원리를 설명하려고합니다. 소프트웨어에서 어떤 정책이 "고수준 정책"이고 어떤 정책이 "저수준 세부 사항"인지 어떻게 정의 할 수 있습니까? 예를 들어 소프트웨어가 여러 비즈니스 응용 프로그램의 워크 플로를 자동화하는 경우 워크 플로 자동화가 고급 정책이고 비즈니스 응용 프로그램이 세부 정보라고 말하는 이유는 무엇입니까?

2
클래스를 통해 모든 코드를 구조화하고 Java와 같은 클래스로 컴파일 할 때의 장단점
편집 : 내 언어는 Java와 달리 다중 상속을 허용합니다. 교육, 레크리에이션 및 잠재적으로 유용한 목적을 위해 자체 프로그래밍 언어를 디자인하고 개발하기 시작했습니다. 처음에는 Java를 기반으로하기로 결정했습니다. 이것은 모든 코드가 클래스 형식으로 작성되고 해당 코드가 VM에 의해로드되는 클래스로 컴파일됨을 의미합니다. 그러나 인터페이스 및 추상 클래스와 같은 기능은 필요하지 않기 때문에 제외했습니다. …

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