소프트웨어 공학

시스템 개발 수명주기 내에서 작업하는 전문가, 학자 및 학생을위한 Q & A

2
이 프로그래밍 기술은 무엇입니까?
인터뷰에서 페어 프로그래밍을하는 동안이 프로그래밍 기술을 발견했으며 Google에서 이름을 찾을 수 없었습니다. 아이디어는 먼저 변수를 사용하는 표현식을 작성한 다음 나중에 변수를 계산하는 코드를 작성한다는 것입니다. 예제 코드를 사용하려면 다음을 수행하십시오. private bool ValidPolicyNumber(string policyNumber) { var hasExpectedPrefix = policyNumber.Substring(0,5) == "POLIC"; var followedBy7Digits = Regex.IsMatch(policyNumber.Substring(6,7), "^[0-9]{7}$"); var hasLengthOf12 = policyNumber.Length …

1
자바 기본 메소드 사용법
수십 년 동안이 인터페이스가 있다고 경우있었습니다 만 유일한 방법 서명을 지정 (만). 우리는 이것이 "일을하는 올바른 방법"이라고 들었습니다. 그런 다음 Java 8이 나와서 말했습니다. 음, 이제 기본 방법을 정의 할 수 있습니다. 잘 지내요. 숙련 된 Java 개발자와 최근에 개발 한 (최근 몇 년간) 개발자들에 의해 이것이 어떻게 소화되고 있는지 …

8
“상속보다 작곡 선호”-서명 변경을 방어해야하는 유일한 이유는 무엇입니까?
이 페이지 는 다음과 같은 주장으로 상속에 대한 구성을 옹호합니다 (내 말로 표현). 서브 클래스에서 재정의되지 않은 수퍼 클래스의 메소드 서명 변경으로 인해 상속을 사용할 때 여러 곳에서 추가 변경이 발생합니다. 그러나 컴포지션을 사용할 때 필요한 추가 변경은 단일 위치에만 있습니다 : 서브 클래스. 이것이 실제로 상속보다 구성을 선호하는 유일한 …

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

4
아무것도 반환하지 않는 순수한 메소드에 대한 테스트를 어떻게 작성해야합니까?
가치 검증을 다루는 많은 클래스가 있습니다. 예를 들어, RangeValidator클래스는 값이 지정된 범위 내에 있는지 확인합니다. 모든 유효성 검사기 클래스에는 값 is_valid(value)을 반환 True하거나 False값에 따라 달라지며 ensure_valid(value)지정된 값을 확인하고 값이 유효한 경우 아무 것도 수행하지 않거나 값이 미리 정의 된 규칙과 일치하지 않으면 특정 예외가 발생합니다. 현재이 방법과 관련된 두 …

2
상대적으로 예상되는 작업 시간을 일정에 통합하는 빌드 시스템이 있습니까?
내 질문에 대한 작은 그림이 있습니다. AD라는 4 개의 독립적 인 작업으로 구성된 빌드 작업을 가정합니다. D는 AC보다 총 시간이 오래 걸립니다. 상대 작업 시간을 통합 할 수없는 빌드 시스템은 다음과 같은 작업을 예약 할 수 있습니다. --------------------------------------- CPU1: A | C | --------------------------------------- CPU2: B | D | --------------------------------------- …

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

1
MVP와 클린 아키텍처의 차이점
이 질문은 내 생각을 추가하기위한 자명 한 내용입니다. 제가 읽은 한 Clean arch의 프리젠 테이션 레이어는 MVP의 MV에서와 같은 책임을집니다. 어떻게 다른 패턴 대신에 하나의 패턴을 선택하기로 결정 했습니까?
13 architecture  mvp 

4
단일 책임을 가진 큰 클래스
2500 라인 Character클래스가 있습니다. 게임에서 캐릭터의 내부 상태를 추적합니다. 해당 상태를로드하고 유지합니다. ~ 30 개의 들어오는 명령을 처리합니다 (보통 =는 명령을 전달 Game하지만 일부 읽기 전용 명령은 즉시 응답합니다). Game취한 조치 및 타인의 관련 조치와 관련하여 ~ 80 개의 전화를받습니다 . Character캐릭터의 상태를 관리하고 들어오는 명령과 게임을 중재하는 것은 하나의 …

5
"정적 인터페이스"가 좋은 습관입니까?
최근에 인터페이스에 정적 메소드를 갖는 옵션이 있음을 알았습니다. 정적 인터페이스 필드와 마찬가지로 흥미로운 동작이 있습니다. 상속되지 않습니다. 구현할 실제 인터페이스에서 유용하다는 확신이 없습니다. 그러나 프로그래머는 유틸리티 클래스와 같이 정적 요소를위한 엔벨로프 인 인터페이스를 작성할 수 있습니다. 간단한 예는 전역 상수를위한 봉투입니다. 클래스와 비교할 때 누락 된 보일러 플레이트를 쉽게 알아볼 …
13 java  java8 


1
TDD 방법론을 하향식으로 적용 할 수 있습니까?
방법론 인 TDD가 다음과 같은 경우를 어떻게 처리하는지 잘 모르겠습니다. 파이썬에서 mergesort 알고리즘을 구현하고 싶다고 가정 해보십시오. 나는 글로 시작 assert mergesort([]) === [] 테스트는 실패 NameError : 이름 'mergesort'가 정의되지 않았습니다 그런 다음 추가 def mergesort(a): return [] 그리고 나의 시험은 통과한다. 다음으로 추가 assert mergesort[5] == 5 내 …
13 tdd 

3
다중 저장소 환경의 패키지 및 버전 전략
우리는 자체 팀 리포지토리를 관리하는 여러 팀이있는 작은 회사입니다. 이것은 웹 플랫폼이며 각 팀의 아티팩트는 매일 밤 테스트를 위해 배포됩니다. 버전 관리 및 패키징 관련 프로세스를 공식화하려고합니다. 모든 팀에는 일상적인 개발을 수행하는 마스터 지점이 있습니다. 각 팀의 품질 보증 담당자는 팀 변경 사항의 결과물을 요리사가 모든 구성 요소를 결합한 테스트 …

4
현대 C를 작성하는 방법에 대해 일반적으로 인정되는 지침이 있습니까?
저는 강력한 Java / Groovy 배경을 가지고 있으며 관리 소프트웨어를 위해 상당히 큰 C 코드 기반을 유지 관리하는 팀에 배정되었습니다. 데이터베이스에서 얼룩을 처리하거나 PDF 및 Excel로 보고서를 생성하는 것과 같은 일부 문제점은 Java 웹 서비스로 외부화되었습니다. 그러나 Java 개발자로서 코드의 일부 측면에서 약간 혼란 스럽습니다. 장황하다 (특히 '예외'를 ​​다룰 때) …
13 c  maintenance 

4
주니어 개발자가 코드 검토에 참여하도록 권장하는 방법은 무엇입니까?
저는 현재 아래에 3 명의 주니어가있는 선임 개발자로 일하고 있으며 코드 검토 프로세스를 도입하여 코드 품질을 관리하는 데 도움이되었습니다. 나는 우리 모두가 서로의 작업을 검토하는 것이 매우 유익하다고 생각하지만 프로세스 약 5 주 후에 도구 (BitBucket)에 의견을 남길 수있는 유일한 사람입니다. 나는 직장에서 문화적 문제가 일부 있다고 생각하고, 그들의 의견이 …

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