소프트웨어 공학

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

2
스쿼시 풀 요청이 git의 병합 알고리즘을 위반합니까?
현재 git 코드를 관리하기 위해 VSTS를 사용하는 회사에서 일하고 있습니다. 브랜치를 병합하는 Microsoft의 "권장"방법은 "스쿼시 병합"을 수행하는 것입니다. 즉, 해당 브랜치에 대한 모든 커밋이 모든 변경 사항을 통합하는 하나의 새로운 커밋으로 스쿼시됩니다. 문제는 한 백 로그 항목에 대해 한 분기에서 일부 변경을 수행 한 다음 즉시 다른 백 로그 항목에 …
17 git 

5
왜 단위 테스트 개인 메소드가 나쁜 습관으로 간주됩니까?
문맥: 현재 Python에서 작은 프로젝트를 진행하고 있습니다. 나는 일반적으로 문서화되어 일부 공공 방법으로 내 수업을 구성하지만, 주로 높은 수준의 개념 (클래스의 사용자가 알고 사용해야하는지), 그리고 무리를 다루는 숨겨진 의 담당 방법 (밑줄로 시작하는) 복잡하거나 낮은 수준의 처리. 코드에 대한 자신감을 갖고 나중에 수정해도 이전 동작이 중단되지 않도록 테스트가 필수적이라는 것을 …

5
MVC : 컨트롤러가 단일 책임 원칙을 위반합니까?
단일 책임 원칙에 따르면 "클래스에는 변화가 한 가지 이유가 있어야합니다". MVC 패턴에서 컨트롤러의 작업은 뷰와 모델 사이를 중재하는 것입니다. 그것은 (예를 들어 통화에보기를 허용 GUI에서 사용자가 만든 보고서 작업을보기위한 인터페이스를 제공합니다 controller.specificButtonPressed()(예를 들어)를, 그리고 그것의 데이터를 조작하기 위해 또는 그것의 작업을 호출하는 모델의 해당 메소드를 호출 할 수 있습니다 model.doSomething()) …


4
공통 필드를 기본 클래스로 이동하는시기
저는 현재 두 개의 파생 클래스를, A그리고 B모두가 공통으로 필드를 가지고 있고 그것이 기본 클래스에 올라가 여부를 결정하기 위해 노력하고 있음. 이것은 기본 클래스에서 참조하지 않고, 다른 클래스가 파생 길 아래에 어떤 시점에서, 경우에 말을 결코 C, 그건이없는 _field1"최소 특권"(또는 무언가)의 주요되지는 경우에 위반 될 다음, 였다? public abstract class …

2
포인터 인수를 사용하여 C ++ 메서드를 C 함수로 변환 할 수 있습니까?
ESP-32에서 C ++을 사용합니다. 타이머를 등록 할 때 다음을 수행해야합니다. timer_args.callback = reinterpret_cast<esp_timer_cb_t>(&SoundMixer::soundCallback); timer_args.arg = this; 여기 타이머가 호출합니다 soundCallback. 작업을 등록 할 때도 마찬가지입니다. xTaskCreate(reinterpret_cast<TaskFunction_t>(&SoundProviderTask::taskProviderCode), "SProvTask", stackSize, this, 10, &taskHandle); 따라서이 방법은 분리 된 작업에서 시작됩니다. GCC는 항상 이러한 전환에 대해 경고하지만 계획대로 작동합니다. 프로덕션 코드에서 허용됩니까? 더 좋은 …
16 c++  c  functions 

4
Javascript에서 함수의 신비를 해결할 수 없습니다
나는 자바 스크립트의 커튼 장면을 이해하려고 노력하고 있으며 내장 객체, 특히 객체 및 기능 과 객체 간의 관계 를 이해하는 데 집중 하고 있습니다. Array, String 등과 같은 모든 내장 객체가 Object에서 확장 (상 속됨)이라는 것을 읽을 때 Object는 객체가 생성되고 나머지 객체가 상속되는 첫 번째 내장 객체라고 가정했습니다. 그러나 …

1
.NET 솔루션의 디렉토리 구조
우리는 최근 계약자 방문을 통해 프로젝트 구조화 방법론에 의문을 가졌습니다. 디렉토리 구조를 구체적으로 언급하고 있습니다. 그는 Microsoft 지침 사용을 제안했습니다. Google에서 "Microsoft 지침 .NET 프로젝트 디렉토리 구조"를 사용하고 유용한 정보를 찾을 수있을 것이라고 생각했지만 실제로는 그렇지 않습니다. 그대로 우리는 다음과 같이합니다. [Company.System.Feature] |-doc |Sandcastle project |-lib |Nuget packages |-src |-Project1 …
16 c#  visual-studio 

3
병합 된 변경 사항을 즉시 커밋하지 않는 이유는 무엇입니까?
내 사무실은 버전 관리를 위해 Git과 SourceTree를 사용합니다. 내가 가입했을 때 버전 관리가 없었고 SourceTree가 내가 사용한 유일한 시스템이기 때문에 발생했습니다. 나는 어떤 방법으로도 전문가가 아니지만 동료들 중에서 가장 경험이 많으므로 모든 사람들이 Git을 올바르게 사용하고 실수를 수정하도록 가르치는 사실상의 전문가입니다. Git과 SourceTree를 거치고 프로세스의 모든 단계를 설명하는 자습서 문서를 …

3
인터페이스에서 언제 string_view를 사용해야합니까?
나는 모방 A와 디자인 된 내부 라이브러리를 사용하고 C ++ 라이브러리를 제안 하고, 언젠가 지난 몇 년 동안 나는 볼의 인터페이스를 사용하여 변경 std::string에를 string_view. 그래서 새로운 인터페이스에 맞게 코드를 정중하게 변경했습니다. 불행히도, 전달해야 할 것은 std :: string 매개 변수이며 std :: string 반환 값입니다. 그래서 내 코드는 다음과 …

6
요구 사항 또는 방법에 따라 단위 테스트 나누기
먼저, 제목에 대한 사과, 나는 그것을 설명하는 가장 쉬운 방법을 생각할 수 없었다! 단위 테스트를 작성하려는 방법이 있습니다. 메소드의 구현, 테스트 방법에 대해서만 논의하고 싶지 않기 때문에 상당히 일반적으로 사용하겠습니다. 방법은 다음과 같습니다 public void HandleItem(item a) { CreateNewItem(); UpdateStatusOnPreviousItem(); SetNextRunDate(); } 따라서이 클래스에는 하나의 공용 메소드가 있으며이 메소드는 일부 …
16 c#  unit-testing 

3
외부 API를 쿼리하는 것이 유일한 목적이지만 API가 복잡한 쿼리 구문을 사용하는 함수를 어떻게 테스트합니까?
유일한 실제 논리는 외부 API의 쿼리 구문에 있습니다. API를 쿼리하는지 여부를 테스트하고 싶지 않고 올바른 데이터가 반환되는 방식으로 쿼리하는지 테스트하고 싶습니다. 예를 들어 일부 의사 코드는 다음과 같습니다. function retrieve_related_data(id) { query = "[potentially long, syntactically complex query that uses param id to get some data]"; results = api_wrapper.query(query); return …

4
빠른 메이저 버전이 디자인이 좋지 않다는 증거가 있습니까?
몇 달 전에 주니어 프로그래머로 일을 시작했습니다. 우리가 작업하고있는 시스템은 ~ 2 년 동안 생산되었습니다. 나는 시스템과 디자인을 구걸하는 데 관여하지 않았습니다. 제가 주목 한 것은 시스템 메이저 버전은 이미 11입니다 .YZ 다른 시스템 및 라이브러리와 함께 일한 경험을 바탕으로, 메이저 버전을 빠르게 부딪히는 제품을 본 적이 있습니다. 1.XY 년 …

5
공통 라이브러리는 좋은 생각입니까?
저는 항상 "공통 라이브러리"가 좋은 생각이라고 생각했습니다. 즉, 몇 가지 다른 응용 프로그램에 필요한 공통 기능이 포함 된 라이브러리를 의미합니다. 코드 중복 / 이중화가 줄어 듭니다. 나는 최근에 이것이 실제로 나쁜 생각이고 "반 패턴 (anti-pattern)"이라고 말하기까지 한 기사 (지금 찾을 수 없음)를 읽었다. 이 접근법에는 단점이 있지만. 변경 버전 관리 …
16 design  go 

9
모범 사례와 중복 조건 검사가 있습니까?
나는 지난 3 년간 소프트웨어를 개발해 왔지만 최근에 내가 좋은 관행에 대해 무지한 것으로 깨어났다. 이로 인해 Clean Code 라는 책을 읽게 되었으므로 인생을 더 좋게 만들 수는 있지만 프로그램 작성을위한 최선의 접근법에 대한 통찰력을 얻는 데 어려움을 겪고 있습니다. 나는 파이썬 프로그램을 가지고 있는데 ... argparse required=True를 사용하여 두 …

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