소프트웨어 공학

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

9
라이브러리 폴더보다 패키지 관리자를 선호하는 이유는 무엇입니까?
정적 라이브러리 폴더와 패키지 관리자의 장단점을 생각할 때 라이브러리 폴더가 더 나은 방법이라고 생각합니다. 라이브러리 폴더로 볼 수있는 장점 : 패키지를 관리하기 위해 외부 도구가 필요하지 않습니다. 인터넷 연결이 필요하지 않습니다. 빠른 빌드 (패키지 확인 안 함) 더 간단한 환경 (지식이 필요하지 않음). 패키지 관리자와 함께하는 장점 : 복잡한 종속성 …

7
왜 많은 프로젝트가 "git merge"보다 "git rebase"를 선호합니까?
DVCS를 사용하면 얻을 수있는 장점 중 하나는 편집 커밋 병합 워크 플로 ( CVCS에서 종종 시행하는 편집 병합 커밋 보다)입니다. 병합과 관계없이 각각의 고유 한 변경 사항을 리포지토리에 기록 할 수 있으므로 DAG 가 프로젝트의 실제 가계도를 정확하게 반영합니다. 왜 많은 웹 사이트 가 "병합 커밋을 피하고 싶다"고 말하는가? 프리 …

7
서비스 계층을 만드는 것이 얼마나 중요합니까?
3 개 계층 (DAL, BL, UI)으로 앱을 구축하기 시작했습니다. 주로 CRM, 일부 판매 보고서 및 인벤토리를 처리합니다. 동료가 서비스 계층 패턴으로 전환해야한다고 개발자가 경험을 바탕으로 서비스 패턴을 도입했으며 대부분의 애플리케이션을 설계하는 더 좋은 방법이라고 말했습니다. 그는 미래에 그런 식으로 애플리케이션을 유지하는 것이 훨씬 쉬울 것이라고 말했다. 개인적으로, 나는 그것이 단지 …

10
C가 파스칼보다 우세한 이유는 무엇입니까? [닫은]
1980 년대와 1990 년대에 Pascal과 C는 생산 언어와 거의 비슷하다는 것을 이해합니다. 볼랜드가 델파이를 소홀히해서 만 파스칼을 멸종 시켰는가 ? 또는 불운이나 파스칼에 본질적으로 잘못된 것과 같은 것이 더 있었습니까 (부흥에 대한 희망이 있습니까?). 나는 좋아하고 싫어하는 것보다는 백업 할 수있는 역사적 사실과 관찰에 관심이 있습니다.

7
의도 한 동작을 수행하기 전에 함수가 null 검사를 수행해야하는 경우 이것이 나쁜 설계입니까?
그래서 이것이 좋은 코드 디자인인지 나쁜 코드인지 모릅니다. 그래서 더 잘 물어볼 것이라고 생각했습니다. 클래스를 사용하여 데이터 처리를 수행하는 메소드를 자주 작성하며, 사전에 널 참조 나 기타 오류가 발생하지 않도록 메소드를 많이 점검합니다. 매우 기본적인 예를 들면 다음과 같습니다. // fields and properties private Entity _someEntity; public Entity SomeEntity => …
67 c#  design  validation 

16
TDD가 도움이되지 않을 때 코드에서 논리적 실수를 피하는 방법은 무엇입니까?
나는 최근에 사람에게 친숙한 방식으로 사건이 얼마나 오래된지를 나타내는 작은 코드를 작성하고있었습니다. 예를 들어 이벤트가“3 주 전”또는“한 달 전”또는“어제”에 발생했음을 나타낼 수 있습니다. 요구 사항은 비교적 명확했으며 테스트 중심 개발의 경우에는 완벽했습니다. 테스트를 하나씩 작성하고 각 테스트를 통과하는 코드를 구현했으며 모든 것이 완벽하게 작동하는 것처럼 보였습니다. 프로덕션에 버그가 나타날 때까지. …

10
다운 캐스팅을 올바르게 사용하는 것은 무엇입니까?
다운 캐스팅은 기본 클래스 (또는 인터페이스)에서 서브 클래스 또는 리프 클래스로 캐스트하는 것을 의미합니다. 다운 캐스트의 예로는 System.Object다른 유형 으로 캐스트 할 수 있습니다 . 다운 캐스팅은 인기가없고 코드 냄새 일 수 있습니다. 객체 지향 교리는 예를 들어 다운 캐스팅 대신 가상 또는 추상 메서드를 정의하고 호출하는 것을 선호합니다. 다운 …

10
최신 웹 응용 프로그램 프레임 워크는 파일 시스템에서 URL 경로를 분리하기 위해 어떻게 그리고 왜 발전 했습니까?
약 10 년 전에 비해 파일 시스템에서 URL 경로를 분리하는 라우팅 스타일을 사용하는 프레임 워크로의 전환에 주목했습니다. 이는 일반적으로 전면 컨트롤러 패턴의 도움으로 수행됩니다. 즉, 이전에는 URL 경로가 파일 시스템에 직접 매핑되어 디스크의 정확한 파일과 폴더를 반영하므로 오늘날 실제 URL 경로는 구성을 통해 특정 클래스로 보내지도록 프로그램되어 더 이상 파일을 …

10
"if"및 "while"과 함께 사용되는 언어에서 표현식에 괄호가 필요한 이유는 무엇입니까?
에서 사용할 때 C, Java 및 C와 같은 언어 ++ 모두는 전체 표현식 주위에 괄호가 필요 if, while또는 switch. if (true) { // Do something } 반대로 if true { // Do something } 괄호가 중복되어 있기 때문에 이것은 이상하게 보입니다. 이 예에서는 true자체적으로 단일 표현식입니다. 괄호는 내가 아는 방식으로 …

9
프로그램 최적화의 90/10 규칙의 의미는 무엇입니까?
Wikipedia에 따르면, 프로그램 최적화의 90/10 규칙에 따르면 "프로그램 실행 시간의 90 %가 코드의 10 %를 실행하는 데 소비됩니다"라고되어 있습니다 (두 번째 단락 참조 ). 나는 이것을 정말로 이해하지 못한다. 이것이 정확히 무엇을 의미합니까? 실행 시간의 90 %를 코드의 10 % 만 실행하는 데 어떻게 사용할 수 있습니까? 그러면 코드의 다른 …

7
프로그램을 개발 중에서 릴리스로 어떻게 전환합니까?
어떤 시점에서 프로그램이 개발 중입니다. 기능이 항상 추가 또는 제거 또는 변경되고 있습니다. 모든 버전은 프로토 타입 일뿐입니다. 그래서 그 시점에서 슈퍼 클린 코드를 작성하는 데 많은 시간을 소비하지 않습니다. 물론 코드 표준을 특정 표준에 맞추려고하지만 시간은 항상 문제입니다. 그런 다음 프로그램이 완료되고 의사 결정자 (들)가 "그게 다"라고 말하는 시점이됩니다. …

8
프로그램 수명 기간 동안 메모리를 사용해야하는 경우 프로그램 종료 직전에 메모리를 해제해야합니까?
많은 책과 튜토리얼에서 메모리 관리 관행이 스트레스를 받고 그것을 사용한 후에 메모리를 확보하지 않으면 신비 롭고 끔찍한 일이 일어날 것이라고 느꼈습니다. 나는 다른 시스템에 대해 말할 수는 없지만 (나에게 비슷한 관행을 채택한다고 가정하는 것이 합리적이지만) 적어도 Windows에서는 커널이 기본적으로 사용하는 대부분의 리소스 (홀수 소수 제외)를 정리하도록 보장됩니다 프로그램 종료 후 …


10
중요하지 않은 오타를 해결하기 위해 커밋하는 것이 가치가 있습니까?
코드에서 중요하지 않은 오타를 발견하면 (예 : print (error) 문에서 잘못된 아포스트로피) 해당 오류를 해결하기 위해 노력할 가치가 있습니까? 아니면 단순히 혼자 두어야합니까? 특히, 나는 중요하지 않은 오타를 해결하는 가치와 커밋 로그의 합산을 측정하는 것이 궁금합니다. 나는 그들을 해결하기 위해 기울고 있습니다. 내가 현혹되고 있습니까?

9
어느 시점에서 언어를 "배웠다"고 말할 수 있습니까?
몇 년 동안 프로그래밍을하면서 루비에서 C ++에 이르기까지 모든 것을 가지고 놀았습니다. 기본 구문 (루비)을 배우는 것부터 언어로 능력을 확장 한 몇 가지 주요 (나를 위해) 프로젝트를 완료하는 것까지 모든 것을 해냈습니다. 이러한 다양성 (그리고 진정한 언어를 배우는 것이 결코 멈추지 않는다는 사실)을 감안할 때, 언제 언어를 알고 있거나 배운 …

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