소프트웨어 공학

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

5
Java / C #에서 RAII를 구현할 수없는 이유는 무엇입니까?
질문 : Java / C #에서 RAII를 구현할 수없는 이유는 무엇입니까? 설명 : 가비지 수집기가 결정적이지 않다는 것을 알고 있습니다. 따라서 현재 언어 기능을 사용하면 범위 종료시 객체의 Dispose () 메서드를 자동으로 호출 할 수 없습니다. 그러나 그러한 결정적 기능을 추가 할 수 있습니까? 내 이해 : RAII 구현은 두 …

1
언제 문서 대 관계형 대 그래프 데이터베이스를 사용해야합니까? [닫은]
토론을 위해 FourSquare 시나리오를 고려해 봅시다. 대본 엔티티 : 사용자 장소 관계 : 체크인 : 사용자 <-> 장소, 다 대다 친구 : 사용자 <-> 사용자, 다 대다 데이터베이스 디자인 이것들은 대부분 오류가있을 것입니다, 지적하십시오. RDBMS 테이블 : 사용자 장소 체크인 (접합) 친구 (정션) 장점 : CAP : 일관성, 가용성 단점 …

6
비즈니스 클래스 이름을 어떤 언어로 지정해야합니까?
이 질문으로 모범 사례를 요청하고 있습니다. 이것은 고객 회사가 엄격하게 자국인 인 경우 영어 이외의 모국어 인 경우에만 문제가됩니다. 고객이 주로 도메인 고유 (예 : 독일어) 식을 많이 사용하고 일부 도메인 고유 이름 지정과 혼합 한 경우 코드 주석의 언어, 클래스 / 방법 / 변수 이름은 영어입니다. 모든 도메인 특정 …
29 naming 

4
버그를 수정할 때 항상 단위 테스트 버그를해야합니까?
버그를 수정할 때 주어진 버그로 실패한 테스트를 먼저 작성하고 테스트가 통과 할 때까지 코드를 수정하는 것이 좋습니다. 이것은 TDD 관행을 따르고 모범 사례로 생각되지만 실제로 구현에 가까운 암호 테스트를 생성하는 경향이 있음을 알았습니다. 예를 들어, 직업이 전송되고 특정 상태에 도달하여 중단되고 재 시도 될 때 문제가 발생했습니다. 이 버그를 재현하기 …
29 testing  tdd 

11
기본 클래스와 동일한 파일에서 인터페이스를 선언하는 것이 좋습니다.
교환 가능하고 테스트 가능하려면 일반적으로 논리가있는 서비스에는 인터페이스가 있어야합니다. 예 : public class FooService: IFooService { ... } 디자인 측면에서 나는 이것에 동의하지만,이 접근법으로 나를 귀찮게하는 것 중 하나는 하나의 서비스에 대해 두 가지 (클래스와 인터페이스)를 선언해야하며 우리 팀에서는 일반적으로 두 개의 파일 (하나 클래스와 인터페이스의 경우). IDE (VS2010)에서 "Go …

8
CI 도구로 프로세스를 실행하는 것이 합리적입니까?
우리 회사에는 여러 시스템에서 서로 다른 크론 작업에 대한 소동이 있었고 수동으로 프로세스를 시작하여 수년간의 편리한 개발과 그로 인한 소홀의 결과로 비즈니스 기능을 유지했습니다. 언젠가는 분명한 이유로보다 중앙 집중화 된 솔루션을 마련해야합니다. 우리가 생각하고있는 한 가지 생각은 Continuous Integration 소프트웨어 (Jenkins)를 사용하여 이러한 프로세스를 실행하는 것입니다. 이는 논리적으로 보입니다. 내 …

3
모나드를 보는 다른 방법
하스켈을 배우는 동안 모나드가 무엇인지, 하스켈에서 모나드가 중요한 이유를 설명하려는 많은 튜토리얼에 직면했습니다. 그들 각각은 비유를 사용했기 때문에 의미를 이해하기가 더 쉬울 것입니다. 하루가 끝나면 모나드가 무엇인지에 대한 3 가지 견해로 끝납니다. 보기 1 : 모나드를 레이블로 때로는 모나드가 특정 유형의 레이블이라고 생각합니다. 예를 들어 다음과 같은 유형의 함수가 있습니다. …

3
오픈 소스 프로젝트를“인계”하는 방법은 무엇입니까?
관심이 있고 정기적으로 사용하는 오픈 소스 프로젝트가 있습니다. Apache License 2.0에 따라 라이센스가 부여되었으며 기본적으로 더 이상 활동이 없습니다. Google 코드에서 호스팅되며 개발을 계속하고 싶습니다. 저는 오픈 소스 프로세스를 처음 접했고 이에 대해 적절한 방법을 찾으려고 노력하고 있습니다. 그냥 체크 아웃하고 github에 푸시하여 공개적으로 개발을 계속할 수 있습니까? 먼저 프로젝트 …

9
인터페이스 이름 지정 : 접두사 'Can-'vs 접미사 '-Able'
인터페이스의 접미사로 '-able'을 사용하는 것이 일반적입니다. 직렬화 가능 인쇄 가능 열거 가능 음주 가능 회전 가능 나는 'Can-'가 더 설명하기 쉽기 때문에 더 좋을 것이라고 생각했습니다. 그렇습니다. 더 장황하고 인터페이스 이름에 노이즈를 추가합니다. 특히 수동 동사를 사용할 수 있습니다. 예를 들어 1 은 사격 가능함은 물체가 사격 할 수 있거나 …
29 api  interfaces 

10
By-Design“버그”는 나쁜 표시입니까?
사용자가 의도 한 것에 대한 버그 보고서를 제출하면 나쁜 징조입니까? 그것은 일반적으로 응용 프로그램이 혼란 스럽거나 명확하지 않다는 것을 의미합니까, 아니면 특별히 언급하지 않는 한 일회성 사용자 실수로 분필로 처리해야합니까? (실제로 그러한 보고서는 없습니다. 이것은 의도적으로 "버그"가 존재하는지 여부에 대한 순전히 가상의 질문입니다.
29 bug  users 

7
직장에서 개인 코드를 사용하는 것이 윤리적인가?
나는 개발 속도를 높이기 위해 개인적으로 (작업 이외의) 개발 한 코드 중 일부를 사용하는 것이 유리한 직장에서 보조 프로젝트를 진행하고 있습니다. 내 부수 프로젝트는 고급 사용자가 여러 다른 플랫폼 ( DB2 , Oracle, SQL Server 및 MySQL )의 데이터베이스에 대해 쿼리를 실행할 수 있도록 C ++ GUI 응용 프로그램을 개발 …

6
단위 테스트 예상 결과를 하드 코딩해야합니까?
단위 테스트의 예상 결과가 하드 코딩되어야합니까, 아니면 초기화 된 변수에 의존 할 수 있습니까? 하드 코딩되거나 계산 된 결과가 단위 테스트에서 오류가 발생할 위험을 증가 시킵니까? 고려하지 않은 다른 요소가 있습니까? 예를 들어,이 두 가지 중 더 안정적인 형식은 무엇입니까? [TestMethod] public void GetPath_Hardcoded() { MyClass target = new MyClass("fields", …
29 c#  unit-testing 

3
Entity Framework Code First는 생산에서 의미가없고 쓸모가 없으며 생산을위한 훌륭한 EF 전략은 무엇입니까?
최근에 Entity Framework 4.1 Code First를 사용하여 프로그래밍을 해왔으며 개발을 좋아하지만 최종 계획과 급변하는 기능 목록만으로도 애플리케이션 요구 사항에 맞게 클래스 / 데이터베이스를 지속적으로 수정하고 있습니다. 개발 중에는 라이브 데이터가 없으며 전체 데이터베이스를 쉽게 삭제할 수 있으므로 라이브 상태 일 때 새 스키마를 사용하여 다시 만들 수 있습니다. 이는 매우 …

14
리치 코드 형식이 더 일반적이지 않은 이유는 무엇입니까?
저는 Code Complete를 읽고 레이아웃과 스타일에 관한 장에서 코드 편집기가 일종의 서식있는 텍스트 형식을 사용할 것이라고 예측했습니다. 이는 다음과 같은 코드 대신에 Procedure ResolveCollisions { Performs a posteriori collision resolution through spatial partitioning algoritm } ( CurrentMap : SpriteContext, PotentialColliders: SpriteList ) var Collider : Sprite, Collidee : Sprite, Collision …

4
단위 테스트 초보자를위한 단위 테스트 모범 사례
최근에는 더 큰 프로젝트 나 작은 도구를 사용하는 사람들을 위해 작은 구성 요소 만 작성했습니다. 나는 단위 테스트를 작성 한 적이 없으며 항상 작성 방법을 배우고 실제로 프로그램을 실행하고 실제 테스트하는 것보다 훨씬 오래 걸리는 것처럼 보입니다. 완성하기까지 몇 개월이 걸리는 상당히 큰 규모의 프로젝트를 시작하려고합니다. 요소를 작성할 때 (항상처럼) …

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