소프트웨어 공학

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

8
Make를 직접 사용하고 있습니까? [닫은]
그래서 makefile을 직접 만드는 방법과 2015 년에 어리석은 일에 대해 많은 의견 / 게시물 / 등을 보았습니다. CMake와 같은 도구를 알고 있으며 실제로 CMake를 자주 사용합니다. 문제는 CMake가 단지 당신을 위해 Makefile을 만들고 스스로 만드는 일을 없애는 것입니다. 물론 다른 많은 훌륭한 기능을 추가하지만 결국에는 Makefile이 추가됩니다. 그래서 내 질문은, …
31 c++  c  builds  make  cmake 

5
주석은 일반적으로 어떻게 파싱됩니까?
주석은 일반적으로 프로그래밍 언어 및 마크 업에서 어떻게 처리됩니까? 일부 사용자 정의 마크 업 언어에 대한 파서를 작성하고 있으며 가장 놀랄만 한 원칙 을 따르고 싶습니다 . 따라서 일반적인 규칙을 결정하려고합니다. 예를 들어, 토큰에 포함 된 주석이 토큰과 '간섭'해야합니까? 일반적으로 다음과 같습니다. Sys/* comment */tem.out.println() 유효한? 또한 언어가 줄 바꿈에 …
31 parsing  comments 

9
빌더 패턴을 구현할 때 빌더 클래스가 필요한 이유는 무엇입니까?
빌더 패턴 (주로 Java)의 많은 구현을 보았습니다. 그들 모두는 엔티티 클래스 (클래스라고합시다 Person)와 빌더 클래스를 가지고 PersonBuilder있습니다. 빌더는 다양한 필드를 "스택" new Person하고 인수가 전달 된 a 를 리턴합니다 . 모든 빌더 메소드를 Person클래스 자체 에 넣는 대신 명시 적으로 빌더 클래스가 필요한 이유는 무엇 입니까? 예를 들면 다음과 같습니다. …

3
코드 들여 쓰기의 기원
누가 코드 들여 쓰기를 도입했는지, 언제 어디서 도입했는지 알아 내고 싶습니다. 코드 이해에는 매우 중요하지만 보편적 인 것은 아닙니다. 대부분의 포트란 코드와 기본 코드는 들여 쓰기가되지 않았으며 코볼에서도 마찬가지입니다. 나는 줄 바꿈 된 연속 텍스트로 작성된 오래된 Lisp 코드조차 보았을 것입니다. 구문 분석을 위해 머리에 대괄호를 세어 이해해야합니다. 그렇다면 이러한 …

6
64 비트 Windows에서 32 비트 소프트웨어를 테스트해야합니까?
소프트웨어 개발 팀에서 소프트웨어 개발자로 일하고 있습니다. 나는 지금 같은 프로젝트에서 3 년 동안 일해 왔습니다. 이 소프트웨어는 .NET 4의 32 비트 데스크톱 기반 C # 응용 프로그램입니다. Windows 7의 대상 플랫폼 (작년까지 Windows XP를 지원해야했습니다). 이 소프트웨어는 사용자 정의 드라이버가 작성된 다양한 사용자 정의 하드웨어와 통신합니다. 하드웨어 제조 및 …

6
도달 할 수없는 코드에서 새로운 RuntimeExceptions을 던지는 것이 나쁜 스타일입니까?
숙련 된 개발자가 얼마 전에 작성한 응용 프로그램을 유지 관리하도록 배정되었습니다. 이 코드를 보았습니다. public Configuration retrieveUserMailConfiguration(Long id) throws MailException { try { return translate(mailManagementService.retrieveUserMailConfiguration(id)); } catch (Exception e) { rethrow(e); } throw new RuntimeException("cannot reach here"); } 던지는 RuntimeException("cannot reach here")것이 정당 한지 궁금합니다 . 이 코드 조각이 더 …

3
오류 처리 고려 사항
문제 : 오랜 시간이 지난 지금, 나는 그 exceptions메커니즘이 실제로 해결되어야한다고 생각하지 않기 때문에 메커니즘 에 대해 걱정하고 있습니다. CLAIM :이 주제와 관련하여 오랫동안 논란이 있었으며 대부분은 exceptions오류 코드 를 비교하고 반환하는 데 어려움을 겪고 있습니다. 이것은 분명히 여기의 주제가 아닙니다. 오류를 정의하려고하면 Bjarne Stroustrup & Herb Sutter의 CppCoreGuidelines에 동의합니다. …


10
어떤 물리량도 오버플로나 언더 플로없이 64 비트 정수로 나타낼 수 있다고 가정하는 것이 합리적입니까?
JDK의 원래 이진 검색 알고리즘은 32 비트 정수를 사용했으며 다음과 같은 경우 오버플로 버그가 발생했습니다 (low + high) > INT_MAX( http://googleresearch.blogspot.com/2006/06/extra-extra-read-all-about-it-nearly.html ) . (부호있는) 64 비트 정수를 사용하여 동일한 이진 검색 알고리즘을 다시 작성하면 low + high실제로 10 ^ 18 바이트의 메모리를 갖는 것이 불가능하기 때문에 INT64_MAX를 초과하지 않는다고 가정 …

7
비즈니스 로직이 시야에 들어오지 않을 수 있습니까?
지난 3 년간 여러 웹 응용 프로그램 프로젝트를 위해 개인적으로나 직장에서 개발했으며 적어도 일부 비즈니스 논리가 응용 프로그램의 뷰 계층에서 끝나지 않는지 알아낼 수 없습니다 . 대부분의 경우, "사용자가 옵션 x를 선택했다면 응용 프로그램은 y에 대한 정보를 제공 할 수 있어야합니다. 그렇지 않은 경우 정보 z를 제공해야합니다"와 같은 문제가 발생합니다. …

4
웹 애플리케이션에서 경쟁 조건을 방지하는 방법은 무엇입니까?
Alice와 Bob이 모두 제품 목록을 편집하는 전자 상거래 사이트를 생각해보십시오. Alice는 설명을 개선하고 Bob은 가격을 업데이트합니다. Acme Wonder Widget을 동시에 편집하기 시작합니다. 밥은 먼저 마무리하고 새로운 가격으로 제품을 저장합니다. Alice는 설명을 업데이트하는 데 시간이 조금 더 걸리며 완료되면 새 설명과 함께 제품을 저장합니다. 불행히도, 그녀는 의도하지 않은 이전 가격으로 가격을 …

9
프로그래머가 아닌 사람에게 MVC를 설명 [닫기]
프로그래머가 아닌 사람에게 MVC를 설명해야합니다. 즉, 진행 보고서의 맥락에서 다른 부서의 관리자에게. 내가하는 일 중 하나는 코드베이스를 MVC 분리로 리팩터링하는 것입니다. 그들이 요청할 수도있는 MVC 분리는 무엇입니까? 그들이 물어볼 필요가있는 이유는 무엇입니까? 다음과 같이 상당히 기술적 인 답변을 읽은 후에 실제로 MVC 란 무엇입니까? 나는 프로그래머가 아닌 사람들과 대화 할 …
31 mvc 

9
"왜"를 대답으로 얻지 않고 프로그래머에게 질문하는 방법
우리는 모두이 경험을했습니다. 당신은 당신이 질문에 대한 답을 알고있는 누군가에게 가서 그 사람에게 질문을하고 전형적인 응답으로 대답합니다 : "왜?" 왜 알아야하는지 설명하고 문제 해결을 시도합니다. 대화를 원래의 질문으로 되돌리고 그 답을 얻으려면 시간, 팔의 비틀기 및 인내가 필요합니다. 프로그래머가 왜 이렇게 하는가? 왜 프로그래머가 상급자가되면서 행동이 더 나빠지 는가? 원래 …

10
프로그램에서 서명을 숨기려면 어떻게해야합니까? [닫은]
우리는 대학 프로그래밍 과정을 가지고 있으며 동료 학생들은 Facebook 그룹에서 프로그래밍 질문을합니다. 나는 TA에 의해 검토되고 누군가가 같은 프로그램을 가지고 있는지와 그들이 어디에서 왔는지 질문하기 시작할 수 있기 때문에 모든 과제를 공유하는 것이 조금 주저합니다. 특히 과제 중 하나에 대해 멋진 것이면 특히 그렇습니다 에서. 그럼에도 불구하고 때로는 다른 사람들을 …
31 copyright 

6
프로그래밍 언어가 변수 및 함수의 그림자 / 숨기기를 허용하는 이유는 무엇입니까?
가장 많이 사용되는 프로그래밍 언어 (예 : C ++, Java, Python 등)는 변수 또는 함수 를 숨기 거나 그림자 라는 개념을 가지고 있습니다. 숨기거나 그림자가 생기면 버그를 찾기가 어려웠으며 언어의 이러한 기능을 사용해야하는 경우를 본 적이 없습니다. 나에게 숨기와 그림자를 허용하지 않는 것이 나을 것 같습니다. 이 개념을 잘 사용하는 …

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