소프트웨어 공학

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

3
언어에서 블록의 명시 적 마커보다 들여 쓰기를 선호해야하는 이유는 무엇입니까?
저는 Haskell을 배우고 있으며 자동 들여 쓰기 도구를 찾고있었습니다. 나는 많이 보지 않았고 Haskell (파이썬에서와 같이)에서 들여 쓰기가 블록을 의미한다는 것을 알았습니다. 결과적으로 C 계열의 다른 언어와 마찬가지로 {} (중괄호) 또는 begin end키워드 와 같은 명시 적 마커를 사용하는 자동 서식 도구를 만드는 것은 불가능하다고 생각합니다 . 가독성을 위해 들여 …


1
최대 다중도 3을 사용하여 원점에서 가장자리와 꼭지점을 생성하는 알고리즘
나는 우주가 극도로 커질 수있는 (기본적으로 무한히 커지는) 웹 사이트를위한 2D 게임을 만들고 있습니다. 처음에 우주는 원점 (0, 0)과 같은 거리에있는 별 6 개로 구성됩니다. 내 임무는 서로 연결되는 "경로"(가장자리)가있는 더 많은 별을 생성하는 것입니다. 이러한 제한을 충족하는 알고리즘을 어떻게 디자인 할 수 있습니까? 별은 무작위로 바깥쪽으로 생성됩니다. (예를 들어, …

2
우선 순위가 동일한 두 개의 이항 연산자가있는 언어, 왼쪽 연관 및 오른쪽 연관
이 이항 연산자 가진 프로그래밍 (또는 스크립트) 언어 (또는 도메인 특정 언어)이 있습니까 opl과 opr의 같은 과 우선 순위를 opl왼쪽으로 연관 되 고 opr마우스 오른쪽 연관되는가? (이러한 예제를 찾을 수는 없지만 이상한 경우를 처리 할 수있는 일반적인 파서를 코딩하려고합니다.) x opl y opr z 또는 x opr y opl z …

1
부울 속성이 많은 열거 형
현재 웹 응용 프로그램을 개발 중이며 사용자에게 반환 될 페이지를 기반으로 일부 서버 논리를 조정 해야하는 경우가 있습니다. 각 페이지에는 4 글자 페이지 코드가 제공되며이 페이지 코드는 현재 클래스에 정적 문자열로 나열됩니다. public class PageCodes { public static final String FOFP = "FOFP"; public static final String FOMS = "FOMS"; …
11 java  design  enum 

1
레거시 요구 사항을 BDD로 마이그레이션
Q : 요구 사항 데이터베이스에서 15 년 이상의 레거시 소프트웨어 요구 사항을 유지하면서 대기업을 Cucumber로 이전하는 가장 좋은 방법은 무엇입니까? 현재 고려중인 사항 : 1) 모든 것을 마이그레이션 단점 : 우리는 무제한 시간 / 예산이 없으며 생존을 위해 앞으로 나아가 야하며 모든 것을 막을 수는 없으며 레거시 요구 사항 및 …
11 bdd  cucumber 

3
DDD에서 저장소가 엔티티 또는 도메인 오브젝트를 노출해야합니까?
내가 이해했듯이 DDD에서는 집계 루트와 함께 저장소 패턴을 사용하는 것이 적절합니다. 내 질문은 데이터를 엔티티 또는 도메인 객체 / DTO로 반환해야합니까? 어쩌면 일부 코드는 내 질문을 더 설명 할 것입니다. 실재 public class Customer { public Guid Id { get; set; } public string FirstName { get; set; } public …

3
속성과 메소드를 항상 확인하지 않고 자바 스크립트에서 오리 타이핑을 어떻게 사용합니까?
나는 자바 스크립트가 오리 타이핑을 사용한다는 것을 알고 처음에는 이것이 C #과 같은 강력한 유형의 언어에 비해 다형성을 쉽게 만들 것이라고 생각했습니다. 그러나 이제 인수를 취하는 내 함수에는 다음과 같은 것들이 있습니다. if(myObj.hasSomeProperty()) 또는 if(myObj.hasSomeMethod()) 또는 if(isNumber(myParam)) 기타 이것은 나에게 정말 추한 것입니다. 나는 C # 배경에서 왔으며 정의 된 …

5
UI에 진행 상황을보고하기위한 최상의 전략-콜백은 어떻게 발생합니까?
때때로 사용자는 실행하는 데 시간이 걸리는 확장 된 기술 작업을 시작합니다. 이 경우 일반적으로 현재 진행중인 작업에 대한 정보와 함께 진행률 표시 줄을 표시하는 것이 좋습니다. UI와 논리 계층을 밀접하게 연결하지 않으려면 일반적으로 일종의 프록시를 통해 통신하는 것이 가장 좋습니다. 즉, 백엔드는 자체 UI 요소를 조작하거나 중개 계층과 직접 상호 …

4
루비 : if variable vs if variable.nil?
나는 루비를 처음 접했고 모든 객체가 nil과 false 이외의 것이 사실이라는 것을 알았을 때 놀랐습니다. 0도 마찬가지입니다. 언어의 속성에 대한 좋은 점은 다음과 같이 쓸 수 있다는 것입니다. if !variable # do stuff when variable is nil end 더 노련한 루비 개발자 인 동료들은 .nil 대신 이것을 선택해야한다고 주장합니까? 이렇게 …


3
연결된 목록에는 항상 꼬리 포인터가 있어야합니까?
내 이해 ... 장점 : 끝에 삽입하는 것은 O (N) 대신 O (1)입니다. 목록이 이중 연결 목록 인 경우 끝에서 제거하는 것도 O (N) 대신 O (1)입니다. 불리: 사소한 양의 추가 메모리 ( 4-8 바이트)를 차지 합니다 . 구현자는 꼬리를 추적해야합니다. 이러한 장단점을 살펴보면 연결 목록이 꼬리 포인터를 사용하지 않는 …

2
모범 사례에서 건조 원칙?
가능한 한 열심히 프로그래밍에서 DRY 원칙을 따르려고합니다. 최근에는 OOP에서 디자인 패턴을 배우고 있었고 꽤 많은 것을 반복했습니다. 지속성을 처리하기 위해 팩토리 및 게이트웨이 패턴과 함께 리포지토리 패턴을 만들었습니다. 내 응용 프로그램에서 데이터베이스를 사용하고 있지만 원하는 경우 게이트웨이를 교체하고 다른 종류의 지속성으로 전환 할 수 있기 때문에 중요하지 않습니다. 내가 스스로 …

7
인터페이스 디자인에서 제네릭을 사용하는 경우
미래에 타사가 구현할 인터페이스가 있으며 기본 구현을 직접 제공합니다. 예제를 보여주기 위해 커플 만 사용할 것입니다. 현재는 다음과 같이 정의됩니다 안건: public interface Item { String getId(); String getName(); } 품목 스택 : public interface ItemStackFactory { ItemStack createItemStack(Item item, int quantity); } ItemStackContainer : public interface ItemStackContainer { default …
11 java  generics 

3
Foreach 루프 및 변수 초기화
이 두 버전의 코드간에 차이점이 있습니까? foreach (var thing in things) { int i = thing.number; // code using 'i' // pay no attention to the uselessness of 'i' } int i; foreach (var thing in things) { i = thing.number; // code using 'i' } 아니면 컴파일러가 신경 쓰지 …
11 c#  performance  memory 

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