소프트웨어 공학

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

19
상대방이 지나치게 복잡한 솔루션을 만들 때 코드 검토에서 무엇을 말합니까? [닫은]
다른 날에는 팀의 누군가가 작성한 코드를 검토했습니다. 이 솔루션은 완벽하게 작동하지 않았으며 설계가 복잡해졌습니다. 불필요한 정보를 저장하고 불필요한 기능을 구축했으며 기본적으로 코드에는 금도금과 같은 불필요한 복잡성이 많았으며 존재하지 않는 문제를 해결하려고 시도했습니다. 이 상황에서 나는 "왜 이런 식으로 되었습니까?"라고 묻습니다. 대답은 다른 사람이 그렇게하는 것처럼 느꼈다는 것입니다. 그런 다음 이러한 …

8
메소드 체인을 사용할 때 객체를 재사용하거나 생성합니까?
다음과 같은 메소드 체인을 사용할 때 : var car = new Car().OfBrand(Brand.Ford).OfModel(12345).PaintedIn(Color.Silver).Create(); 두 가지 접근 방식이있을 수 있습니다. 다음과 같이 동일한 객체를 재사용하십시오. public Car PaintedIn(Color color) { this.Color = color; return this; } 다음 Car과 같이 모든 단계에서 새 유형의 객체를 만듭니다 . public Car PaintedIn(Color color) { var …

11
MVC의 'C'가 정말로 필요한가요?
Model-View-Controller 패턴에서 모델과 뷰의 역할을 이해하지만 컨트롤러가 왜 필요한지 이해하기가 어렵습니다. MVC 방식을 사용하여 체스 프로그램을 작성한다고 가정 해 봅시다. 게임 상태는 모델이어야하고 GUI는보기 여야합니다. 이 경우 컨트롤러는 정확히 무엇입니까? 타일을 클릭 할 때 호출되는 모든 기능을 가진 별도의 클래스입니까? 뷰 자체에서 모델의 모든 로직을 수행하는 것이 어떻습니까?

11
주요 리팩토링을 수행 할 때 TDD를 수행하는 사람들이 작업 손실을 처리하는 방법
잠시 동안 나는 코드에 대한 단위 테스트 작성을 배우려고 노력했다. 처음에는 실패한 테스트를 먼저 작성할 때까지 코드를 작성하지 않는 진정한 TDD를 시작했습니다. 그러나 최근에 많은 코드와 관련된 해결하기 어려운 문제가있었습니다. 테스트를 작성하고 코드를 작성하는 데 몇 주를 소비 한 후, 전체 접근 방식이 작동하지 않는다는 불행한 결론에 이르렀고 2 주 …
37 tdd  refactoring 

2
Git과 Mercurial의 인기에 대한 경험적 증거
2012 년입니다! Mercurial과 Git은 여전히 ​​강합니다. 나는 두 가지의 상충 관계를 이해한다. 또한 모든 사람이 어느 쪽이든 선호한다고 생각합니다. 괜찮아. 두 가지 사용 수준에 대한 정보를 찾고 있습니다. 예를 들어 stackoverflow.com 에서 Git을 검색 하면 12000 개의 조회수가 발생하고 Mercurial 은 3000을 얻습니다. Google 트렌드 는 Git의 경우 1.9 : …
37 git  mercurial 

7
모든 DB 테이블에 생성 날짜 및 마지막 업데이트 날짜 필드를 포함하여 표준화하는 것이 합리적입니까?
상사는 현재 팀에 일부 개발 표준을 적용하려고 시도하고 있기 때문에 어제 회의에서 그녀가 자라기 전까지는 잘 진행되고있는 표준에 대해 논의했습니다. 모든 DB 테이블에는 트리거에 의해 업데이트 된 CreatedDate 및 LastUpdatedDate 열이 있습니다. 이 시점에서 우리 팀은 의견 편견에 시달렸습니다. 우리 중 절반은 모든 테이블에서이 작업을 수행하는 것이 이익이 거의없는 많은 …

6
"매퍼"가 유효한 디자인 패턴입니까 아니면 "공장"패턴의 변형입니까?
내가 볼 수있는 일반적인 패턴은 일종의 "원시"데이터 소스 (예 : ADO.NET 또는 )를 인수로 사용 하여 필드를 매핑하는 Mapper패턴 ( DataMapper전적으로 다른 것과 혼동하지 말 것)으로 알려진 패턴 입니다. 비즈니스 / 도메인 개체의 속성 예:DataReaderDataSet class PersonMapper { public Person Map(DataSet ds) { Person p = new Person(); p.FirstName = …

16
많은 프로그래밍 언어를 배우는 것이 상처가됩니까?
9 학년 때 BASIC에서 프로그래밍 경력을 시작했습니다. 나는 더하기, 빼기 및 인쇄하는 간단한 프로그램을 작성하여 약간의 기본을 배웠습니다. 그런 다음 대학에 가서 컴퓨터 정보 및 시스템 공학을 전공했습니다. 첫해에 나는 C를 배웠고 그것을 잘 다룰 수있었습니다. 다음으로 2 년째에 C ++을 배웠습니다. 방금 OOP에 대한 지식을 가르쳐주었습니다. 이제 PHP와 함께하고 …
37 php  c++  c  basic 

8
Java에서`this` 키워드를 사용할 때 허용되는 스타일은 무엇입니까?
나는 파이썬이나 자바 스크립트 (그리고 객체 지향이 아닌 다른 언어)와 같은 언어에서 왔으며 Java에 대한 실무 지식을 향상시키기 위해 노력하고 있습니다. 항상 this현재 인스턴스 속성 앞에 추가하는 것은 나쁜 습관으로 간주 됩니까? 글쓰기가 더 자연 스럽습니다 ... private String foo; public void printFoo() { System.out.println(this.foo); } ... ...보다 ... private …

7
더 큰 소프트웨어 프로젝트에 필요한 시간을 예측하기 어렵다고 설명하는 방법은 무엇입니까?
저는 주니어 개발자이며 더 큰 소프트웨어 프로젝트를 완료하는 데 걸리는 시간을 추정하기가 어렵습니다. 일반적으로 아키텍처를 구성하는 방법을 알고 있지만 수행해야 할 세부 사항과 해결해야 할 문제를 파악하기가 어렵습니다. 따라서 더 큰 프로젝트를 완료하는 데 걸리는 시간을 예측하기가 어렵습니다. 해결해야 할 문제와 해결하는 데 걸리는 시간을 모르기 때문입니다. 소프트웨어 개발자 가 …

9
TDD에서 아기의 발자국은 어떻습니까?
오늘 우리는 TDD를 훈련하고 있었고 다음과 같은 오해를 발견했습니다. 이 작업은 입력 "1,2"에 대한 숫자의 합계를 3으로 반환하는 것입니다. numbers = input.Split(','); return int.Parse(numbers[0]) + int.Parse(numbers[1]); //task said we have two numbers and input is correct 그러나 다른 사람들은 다른 방법으로 그것을 선호했습니다. 먼저 입력 "1,2"에 대해 다음 코드를 추가했습니다. …
37 testing  tdd 

17
수면이 부족한 경우 실제로 고품질 코드를 생성 할 수 있습니까? [닫은]
나는 프로그래머가 잠을 자지 않고 커피와 레드 불을 마시지 않고 이틀 동안 코딩하는 것에 대해 들었습니다 . 또한 The Social Network 와 같은 영화 에서 Mark Zuckerberg 가 36 시간 동안 프로그래밍을 하고 있음을 보여줍니다 . 또한 Facebook, Google, foursquare 등과 같은 회사 에서는 24 시간 이상 수면없이 코딩 할 …

11
추상 클래스 / 메소드가 더 이상 사용되지 않습니까?
나는 많은 추상 클래스 / 메소드를 만들었습니다. 그런 다음 인터페이스를 사용하기 시작했습니다. 인터페이스가 추상 클래스를 더 이상 사용하지 않는지 확실하지 않습니다. 완전히 추상적 인 수업이 필요하십니까? 대신 인터페이스를 작성하십시오. 구현이 추상 클래스가 필요하십니까? 인터페이스를 만들고 클래스를 만듭니다. 클래스를 상속하고 인터페이스를 구현하십시오. 또 다른 이점은 일부 클래스는 부모 클래스가 필요하지 않지만 …

9
코딩시 분석을 통해 마비를 어떻게 극복합니까?
새 프로젝트를 시작할 때 종종 구현 세부 사항에 대해 즉시 생각하기 시작합니다. "DataBaseHandler를 어디에 두어야합니까? 어떻게 사용해야합니까? 이것을 사용하려는 클래스가 일부 Abstract 슈퍼 클래스에서 확장되어야합니까? 인터페이스를 사용해야합니까? 클래스가 포함 된 추상화 수준은 무엇입니까? 요청을 보내고 데이터를 파싱하는 방법? " 확장 성과 재사용 성을 위해 코딩하기를 원하기 때문에 오랫동안 실속합니다. 그러나 …

12
동료 프로그래머는 최악의 프로그래밍 방법을 사용했습니다.
말이 이상한 것 같지만 직장 동료 프로그래머가 의도적으로 몇 가지 나쁜 프로그래밍 방법을 의도적으로 사용했습니다! 설명하겠습니다. 먼저 그가 똑똑한 사람이라고 말하고 대부분은 이해할 수없는 코드를 작성합니다. Java로 작성된 웹 응용 프로그램 프로젝트에 라이센스를 구현하라는 요청을 받았습니다. Java이기 때문에 실제로 원한다면 항아리를 열고 내부에 작성된 클래스와 메소드의 이름을 읽을 수 있습니다. …

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