소프트웨어 공학

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

7
수동 메모리 관리보다 가비지 수집 시연
가비지 수집 이 (이론적으로) 수동 메모리 관리보다 빠를 수 있는 많은 곳에서 읽었습니다 (허리, 심지어 직접 작성했습니다 ). 그러나, 보여주는 것보다 말하는 것이 쉽지 않습니다. 실제로이 효과가 실제로 나타나는 코드는 본 적이 없습니다. 이 성능 이점을 보여주는 코드를 가진 사람이 있습니까?

3
옵션 / 아마도 좋은 아이디어로 간주되고 확인 된 예외가 아닌 이유는 무엇입니까?
스칼라와 같은 일부 프로그래밍 언어에는 Option유형 개념 (이라고도 함 Maybe)이 있으며 값을 포함하거나 포함하지 않을 수 있습니다. 내가 읽은 것에서 그들은이 문제를 다루는 우수한 방법으로 널리 간주됩니다 null. 왜냐하면 프로그래머는 런타임 중에 단순히 폭발하지 않고 값이 없을 수있는 경우를 프로그래머가 명시 적으로 강요하기 때문입니다. 반면에 Java의 Checked Exceptions는 나쁜 생각으로 …
23 exceptions 

3
추상 구문 트리에 대한 방문자 패턴 구현
학습 목적으로 프로그래밍 언어를 작성하는 중입니다. 나는 이미 내 언어의 하위 집합에 대한 렉서와 재귀 강하 파서를 썼다 (나는 현재 + - * /괄호 와 같은 수학 표현을 지원한다 ). 파서는 나에게 추상 구문 트리를 다시 건네주고, 여기 Evaluate에서 표현식의 결과를 얻기 위해 메소드를 호출한다 . 모든 것이 잘 작동합니다. …

12
객체 지향 디자인
다음이 있다고 가정하십시오. +--------+ +------+ | Animal | | Food | +-+------+ +----+-+ ^ ^ | | | | +------+ +-------+ | Deer | | Grass | +------+ +-------+ Deer에서 상속 Animal및 Grass상속합니다 Food. 여태까지는 그런대로 잘됐다. Animal물건을 먹을 수 Food있습니다. 이제 조금 섞어 봅시다. Lion에서 상속되는 a 를 추가 …


2
동일한 기능을하는 다른 기능 서명을 제공하는 것이 좋습니다?
다음은 세 가지 값으로 구성된 C ++ 클래스입니다. class Foo{ //Constructor Foo(std::string, int, char); private: std::string foo; char bar; int baz; }; 모든 매개 변수 유형이 다릅니다. 순서가 중요하지 않도록 생성자를 오버로드 할 수 있습니다. class Foo{ //Constructors Foo(std::string, char, int); Foo(std::string, int, char); Foo(char, int, std::string); Foo(char, std::string, int); …

7
너무 복잡한 방법을 피하십시오-Cyclomatic Complexity
Cyclomatic Complexity를 줄이기 위해이 방법을 사용하는 방법을 모르겠습니다. Sonar는 13을보고하고 10은 예상됩니다. 나는이 방법을 그대로 두는 데 아무런 해가 없다고 확신하지만 Sonar의 규칙을 준수하는 방법에 대해 나에게 도전하고 있습니다. 모든 생각은 크게 감사하겠습니다. public static long parseTimeValue(String sValue) { if (sValue == null) { return 0; } try { long …


2
C #은 네이티브 C ++ 컴파일러와 병합됩니까? [닫은]
현재로서는이 질문이 Q & A 형식에 적합하지 않습니다. 답변, 사실, 참고 자료 또는 전문 지식을 통해 답변이 뒷받침 될 것으로 예상되지만이 질문은 토론, 논쟁, 여론 조사 또는 광범위한 토론을 요구할 것입니다. 이 질문을 개선하고 다시 열 수 있다고 생각 되면 도움말 센터 를 방문하여 안내를 받으십시오 . 휴일 칠년 전에 …
23 c#  c++ 

5
"세터가없는"세상에서 단위 테스트
저는 DDD 전문가라고 생각하지 않지만 솔루션 아키텍트는 가능한 한 모범 사례를 적용하려고합니다. 나는 DDD에서 no (공개) 세터 "스타일"의 장단점에 대해 많은 논의가 있고 나는 논쟁의 양쪽을 볼 수있다. 제 문제는 모든 기술, 지식 및 경험이 풍부한 팀에서 일한다는 것입니다. 즉, 모든 개발자가 "올바른"방식으로 일을한다고 믿을 수 없습니다. 예를 들어, 도메인 …

1
Haskell 프로덕션 코드에서 seq는 얼마나 자주 사용됩니까?
Haskell에서 작은 도구를 작성 한 경험이 있으며 특히 interact표준 입력을 처리하고 표준 출력으로 파이프하는 필터를 작성하는 데 매우 직관적 입니다. 최근에 평소보다 약 10 배 큰 파일에 이러한 필터를 사용하려고 시도했는데 Stack space overflow오류가 발생했습니다. 약간의 독서를 한 후에 (예를 들어 here 와 here ) 스택 공간을 절약하기위한 두 가지 …

3
벤더 잠금을 피하기위한 점검 목록?
벤더 잠금을 피하기 위해 업계에서 승인 된 규칙 세트가 있습니까? 내 말은 이해하기 쉽고 쉽게 확인할 수있는 관리자 나 다른 의사 결정자에게 보여줄 수있는 것입니다. 객관적이고 측정 가능한 방식으로 벤더의 침입을 감지하고 방지하는 데 도움이되는 보편적으로 허용되는 규칙 세트, 점검 목록 또는 조건 세트가 있습니까? 프로젝트 초기 단계에서 공급 업체가 …

3
"필요한 경우 X 수행"방법 이름 지정
X를 수행해야하는지 확인하고 필요한 경우 X를 수행하는 메소드의 이름을 지정하는 좋은 방법은 무엇입니까? 예를 들어, 새로운 사용자가 로그인 한 경우 사용자 목록을 업데이트하는 메소드의 이름을 지정하는 방법은 무엇입니까? UpdateListIfNeeded너무 길어 보이지만 단순함 UpdateList은 매번 비싸고 불필요한 작업이 수행 될 수 있음을 의미합니다. EnsureListUpdated변형입니다. C #에는 X가 가능한지 확인 하고 수행 …

5
안전한 비밀번호 기록을 구현하는 방법
보안상의 이유로 비밀번호를 일반 텍스트로 저장해서는 안됩니다. 해시를 저장해야하며 레인보우 테이블 공격을 피하기 위해 해시를 신중하게 생성해야합니다. 그러나 일반적으로 마지막 n 개의 비밀번호 를 저장하고 다른 비밀번호간에 최소한의 복잡성과 최소한의 변경을 적용해야합니다 (Password_1, Password_2, ..., Password_ n 과 같은 순서를 사용하지 못하도록 ). 이것은 일반 텍스트 암호로 사소한 것이지만 해시 …

3
성능 향상을 위해 멀티 스레딩이 선호되는 이유는 무엇입니까?
이 질문은 Software Engineering Stack Exchange에서 답변을 얻을 수 있기 때문에 Stack Overflow에서 마이그레이션 되었습니다. 6 년 전에 이주했습니다 . 질문이 있는데, 프로그래머가 왜 동시성과 멀티 스레드 프로그램을 좋아하는 것 같습니다. 나는 여기에 두 가지 주요 접근법을 고려하고 있습니다 : 기본적으로 신호를 기반으로하는 비동기 방식 또는 새로운 C # 5.0과 …

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