소프트웨어 공학

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

3
후크는 언제 올바른 디자인 선택입니까?
ActiveRecord 콜백 사용이 만연하고 비좁은 대형 Rails 앱에서 작업했습니다. 레코드를 저장하면 종종 예기치 않은 부작용이 발생하여 시스템에 대해 추론하기가 어려웠습니다. 동시에, 후크가 상속의 일부로 잘 사용되는 후크를 보았습니다 (예 : 템플릿 메소드를 사용하는 서브 클래스가 서브 클래스가 부모의 내부에 대해 알 필요없이 특수 행동을 추가 할 수 있도록 허용 함). …
10 hooks 

2
Mono Project는 MIT에서 LGPL 라이브러리를 어떻게 재 라이센스 할 수 있었습니까?
Mono 프로젝트는 LGPL 라이브러리를 가지고있었습니다. 실제로 mbundle당신이 그것을 실행할 때 여전히 말한다 LGPL Mono 런타임을 정적으로 연결하는 것은 동적으로 연결하는 것보다 더 많은 라이센스 제한이 있습니다. 라이센스에 대한 자세한 내용 은 http://www.mono-project.com/Licensing 을 참조 하십시오 . 2016 년 3 월 기준으로 MIT에 따라 재 라이센스를 받았습니다. 프로젝트가 오래되어 많은 외부 …

3
클래스 생성자에 데이터 (행동 대)를 주입한다는 것은 무슨 의미이며, 왜 나쁜 습관으로 간주됩니까?
Remo Jansen의 "Learning TypeScript"책을 읽고 있습니다. 한 섹션에서 저자는 Model클래스 를 만드는 방법을 포함하여 매우 간단한 개념 증명 MVC 프레임 워크를 만드는 방법을 설명 하고 다음과 같이 말합니다. 사용하는 웹 서비스의 URL이 모델에 제공되어야합니다. 사용할 서비스의 URL을 설정하기 위해 ModelSettings라는 클래스 데코레이터를 사용할 것입니다. 우리는 생성자를 통해 서비스 URL을 주입 …

2
다른 클래스로 암시 적으로 변환하는 유일한 목적을 가진 클래스를 만드는 것은 좋지 않습니까?
Circle객체 를 생성 할 수있는 라이브러리를 사용하는 상황을 상상해보십시오. 여기 에서 원의 반경과 중심을 지정하여 객체를 정의 할 수 있습니다. 그러나 어떤 이유로 든 필수 flavour매개 변수 도 필요합니다 . 이제 Circle내 앱에서 실제로 사용해야한다고 가정 해 봅시다 .하지만 내 앱의 목적을 위해 Flavours.Cardboard매번 맛을 설정할 수 있습니다 . 이 …

4
Java : setter 순서가 중요하지 않은 단계 작성기를 구현하는 방법은 무엇입니까?
편집 : 이 질문은 이론적 문제를 설명하고 싶습니다. 필수 매개 변수에 생성자 인수를 사용하거나 API가 잘못 사용되면 런타임 예외가 발생할 수 있음을 알고 있습니다. 그러나 생성자 인수 또는 런타임 검사가 필요 없는 솔루션을 찾고 있습니다. 다음 Car과 같은 인터페이스 가 있다고 상상해보십시오 . public interface Car { public Engine getEngine(); …

3
회의 시간과 개발 시간 절약 사이에 관련 요소가 있습니까?
저는 프로젝트를 진행하고 있으며 정기적으로 (보통 매주) 비공식 회의를 통해 프로젝트의 상태와 프로젝트의 GUI에 대해 논의합니다. 나는 유일한 개발자이고 다른 4-5 사람들은 IT가 아닌 배경을 가지고 있습니다. 이 회의는 평소보다 훨씬 오래 걸렸지 만 어느 시점에서 동료 중 한 명이 프로그램의 일부 필드와 작성 방법에 대해 물었습니다. 나는 대답을하고 토론에서 …

3
"make"의 증분 빌드가 해싱 알고리즘을 사용하지 않는 이유는 무엇입니까?
나는 초보자이며 make언제 사용 해야하는지 궁금합니다 make clean. 한 동료는 증분 빌드가 make파일 타임 스탬프를 기반으로 한다고 말했습니다 . 따라서 VCS에서 이전 버전의 파일을 체크 아웃하면 "오래된"타임 스탬프가 표시되고 "이 파일을 다시 컴파일 할 필요가 없습니다"로 표시됩니다. 그런 다음 해당 파일은 다음 빌드에 포함되지 않습니다. 같은 동료에 따르면 사용하는 이유가 …
10 builds  make 

1
Mercurial에서 풀 요청을 심각하게 구현할 수없는 이유는 무엇입니까?
일주일 전, 나는 LFNW 에 있었고 래리 헤이스팅스와 대화를 나눈 후 다음과 같이 말했습니다. Git에는 Mercurial에는없는 풀 요청 워크 플로우를 가능하게하는 것이 있습니다. 이것이 BitBucket의 Pull Request가 좋지 않은 이유입니다. (문의를 위해, 우리는 파일-버그-그럼-첨부-패치 워크 플로우와 반대로, PR 워크 플로우 때문에 파이썬이 Mercurial에서 Git로 이동하고 있다는 사실을 논의하고있었습니다.) 그는 여기서 …

2
비즈니스 로직을 서비스 계층으로 이동하지 않고 도메인 개체 속성에 대한 고유 한 제약 조건을 확인하는 우아한 방법이 있습니까?
나는 지금까지 약 8 년 동안 도메인 중심 디자인을 적용 해 왔으며이 모든 세월이 지난 후에도 여전히 나를 괴롭힌 한 가지가 있습니다. 그것은 도메인 객체에 대한 데이터 스토리지의 고유 레코드를 확인하는 것입니다. 2013 년 9 월 Martin Fowler는 가능한 경우 모든 도메인 객체에 적용해야하는 TellDon'tAsk 원칙을 언급했으며 ,이 메시지는 작업이 …

4
내가 작성한 모든 클래스가 인터페이스를 준수해야합니까?
저는 Typescript로 게임을 작성하고 있으며 " 인터페이스 기반 프로그래밍 " 이라는 아이디어를 고수하기로 결정했습니다 . 여기서는 인터페이스 대신 구현, 객체의 인터페이스를 기반으로 코드를 작성합니다. 나는 많은 수의 인터페이스와 인터페이스를 구현 한 클래스를 작성하고 한 걸음 물러서서 클래스가 단순하여 구현을 변경할 필요가 없을 정도로 간단하다는 것을 깨달았습니다. 수업은 ( Phaser.Sprite탱크처럼 행동하기 …

3
느슨하게 결합 된 코드에 인터페이스 사용
배경 특정 유형의 하드웨어 장치의 사용에 의존하는 프로젝트가 있지만 필요한 작업을 수행하는 한 누가 하드웨어 장치를 만드는지는 중요하지 않습니다. 그렇게 말하면, 같은 일을하도록되어있는 두 장치조차도 같은 제조업체가 만들지 않으면 차이가있을 것입니다. 따라서 인터페이스를 사용하여 응용 프로그램을 관련된 특정 제조업체 / 모델 과 분리 하고 대신 인터페이스가 최상위 기능을 다루도록 하려고 …

3
대칭에서 고유 한 nxnxn 입방 격자의 모든 m 점 세트를 생성하는 알고리즘
상당히 계산적으로 복잡한 알고리즘을 구현 중이며 불필요한 작업을 수행하지 않도록 노력하고 싶습니다. nxnxn 입방 격자가 있습니다. 예를 들어 n = 2 인 경우 (0,0,0), (0,1,0), (1,0,0), (1,1,0), (0, 1,1), (0,0,1), (1,0,1), (1,1,1). 이 격자에서 나는 다음과 같은 모든 m 포인트 세트를 재귀 적으로 생성 할 것입니다. solve(set_of_points) { if set_of_points.size …

3
안전하지 않은 코드가 실수로 사용되지 않도록하십시오
함수 f()는 프로그램을 실행하는 컴퓨터 eval()에서 만들고 저장 한 데이터와 함께 사용합니다 (또는 위험한 것) local_file. import local_file def f(str_to_eval): # code.... # .... eval(str_to_eval) # .... # .... return None a = f(local_file.some_str) f() 내가 제공 한 문자열이 내 자신이기 때문에 실행하는 것이 안전합니다. 그러나 안전하지 않은 (예 : …

3
책임을 분담 할 때 단일 책임을 관리하는 방법은 무엇입니까?
나는 기본 두 개의 클래스를 가지고 Operation와 Trigger. 각각에는 특정 유형의 작업 또는 트리거를 전문으로하는 여러 하위 클래스가 있습니다. A는 Trigger특정을 트리거 할 수 있습니다 Operation. 동안 Operation특정에 의해 트리거 될 수 있습니다 Trigger. 주어진 Operation것을 주어진 Trigger(또는 그 반대로) 매핑하는 코드를 작성해야 하지만 어디에 넣을 지 잘 모르겠습니다. 이 …

3
def를 사용하여 변수를 재정의 할 수 있다면 어떻게 불변으로 간주됩니까?
Clojure를 배우려고 노력하면 Clojure가 불변 데이터에 관한 모든 방법을 지속적으로 알 수는 없습니다. 그러나 def오른쪽 을 사용하여 변수를 쉽게 재정의 할 수 있습니까? Clojure 개발자가 이것을 피할 수는 있지만 모든 언어의 변수를 동일하게 변경하는 것을 피할 수 있습니다. 누군가가 이것이 어떻게 다른지 설명해 줄 수 있습니다. 왜냐하면 내가 읽고있는 튜토리얼과 …
10 clojure 

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