문제

내가 일하는 방식에 민첩한 생각을 점차 흡수함에 따라 Yagni ( "당신은 그것을 필요로하지 않을 것입니다")는 점점 더 중요해 보입니다. 잘못된 우선 순위를 필터링하고 무엇을 결정하는 데 가장 효과적인 규칙 중 하나 인 것 같습니다. ~ 아니다 다음에 작업합니다.

그러나 Yagni는 여기에서 간신히 속삭이는 개념 인 것 같습니다. 나는 의무적 인 검색을 실행했으며, 하나의 질문 제목에만 나타난 다음 보조 역할에 나타납니다.

왜 이런거야? 나는 그 중요성을 과대 평가하고 있습니까?

부인 성명. 응답을 선점하기 위해 나는 이의를 제기 할 것이라고 확신합니다. Yagni가 빠르고 더 큰 것과 반대입니다. 필요한 부품을 올바르게 얻는 데 소중한 시간과 노력을 집중하도록 권장합니다.

다음은 다음과 같은 지속적인 질문이 있습니다.

내 단위 테스트는 사용자 요구 사항 또는 프레임 워크 구조에 따라 선택됩니까?

프레임 워크에서 벗어나기 때문에 단위 테스트를 설치하고 테스트하고 유지 관리하고 있습니까?

내 프레임 워크에 의해 생성 된 코드의 어느 부분이 보지 못했습니다 (그러나 Yagni에도 불구하고 언젠가는 나를 물릴 수 있습니까?)?

사용자의 문제보다는 내 도구를 사용하는 데 얼마나 많은 시간을 소비하고 있습니까?

쌍 프로그래밍 할 때 관찰자의 역할 가치는 종종 "yagni"에 있습니다.

CRUD 도구를 사용하십니까? _RU_ 도구 또는 C__D 도구로 사용하도록 허용하거나 (1 ~ 2 개의 단위 테스트) 4 개 코드 (4 개의 단위 테스트)를 만들 수 있습니까?

도움이 되었습니까?

해결책

TDD는 Yagni를 어떤 식 으로든 사용했습니다. TDD를 올바르게 수행하는 경우, 즉 필요한 기능을 초래하는 테스트 만 작성 한 다음 가장 간단한 코드를 개발하여 테스트를 통과 한 다음 기본적으로 YAGNI 원칙을 따르고 있습니다. 내 경험상, TDD 상자 밖으로 나와 테스트 전에 코드 작성, 실제로 필요없는 것들에 대한 테스트 또는 yagni를 위반하는 테스트를 통과 할 수있는 가장 간단한 방법보다 더 큰 코드를 작성하기 시작할 때만 있습니다. .

내 경험상 후자는 TDD를 수행 할 때 가장 일반적인 가짜 PA입니다. 앞으로 나아가서 다음 테스트를 통과하기 위해 코드를 작성하기 시작합니다. 이로 인해 종종 테스트해야 할 사항의 요구 사항보다는 내 코드를 기반으로 선입견을 갖음으로써 나머지 테스트를 손상시킵니다.

ymmv.

다른 팁

Yagni와 KISS (간단하고 바보)는 본질적으로 같은 원칙입니다. 불행히도, 나는 "yagni"를 볼 수있는만큼 자주 언급 된 것을 본다.

광야의 내 부분에서 프로젝트 지연과 실패의 가장 흔한 원인은 불필요한 구성 요소의 실행이 좋지 않으므로 기본적인 감정에 동의합니다.

변화의 자유는 Yagni를 이끌어냅니다. 폭포 프로젝트에서 진언은 제어 범위입니다. 범위는 고객과 계약을 체결하여 제어됩니다. 결과적으로, 고객은 계약에 서명 한 후에는 범위 변경이 어려울 것이라는 것을 알면서 범위 문서에서 생각할 수있는 모든 것입니다. 결과적으로, 당신은 가치가있는 기능 세트가 아닌 세탁물 목록이있는 응용 프로그램으로 끝납니다.

민첩한 프로젝트를 통해 제품 소유자는 우선 순위가 좋은 제품 백 로그를 구축합니다. 개발 팀은 우선 순위, 즉 값을 기반으로 기능을 구축합니다. 결과적으로 가장 중요한 것들이 먼저 구축됩니다. 사용자가 소중한 기능이있는 응용 프로그램으로 끝납니다. 중요하지 않은 것들이 목록에서 벗어나거나 끝나지 않습니다. 그것은 yagni입니다.

Yagni는 관행이 아니지만 우선 순위가 결정된 백 로그 목록의 결과입니다. 비즈니스 파트너는 제품 백 로그를 반복에서 반복으로 변경하고 조정할 수 있다는 점을 감안할 때 비즈니스에 제공 한 유연성을 평가합니다. Yagni가 과정 후반에도 변화를 쉽게 받아 들일 때 얻을 수있는 이점이라고 설명하는 것으로 충분합니다.

내가 찾은 문제는 사람들이 yagni 아래에서 DI 컨테이너를 사용하여 공장을 쓰는 경향이 있다는 것입니다. 나는 거기에 JB King에 동의합니다. 많은 사람들에게 나는 Yagni와 함께 일한 사람들이 코너를 자르거나 조잡한 코드를 작성하는 라이센스 인 것 같습니다.

예를 들어, 여러 모델/제조업체의 핀 패드를 추상화하기 위해 Pinpad API를 작성하고있었습니다. 전반적인 구조가 없다면 단위 테스트조차 쓸 수 없습니다. 나는 TDD의 노련한 소송이 아닐 수도 있습니다. 나는 내가 한 일이 Yagni인지 아닌지에 대한 의견이 다를 것이라고 확신합니다.

나는 yagni의 형태 인 또는 적어도 ydniy의 조기 최적화를 참조하는 것에 대한 많은 게시물을 보았습니다 (아직 필요하지 않습니다).

나는 Yagni가 실제로 빠르고 더 큰 것과 반대되는 것으로 보지 않습니다. 누군가가 쓴 소프트웨어와 같은 계획이없고 더 이상 필요한 일을하고 있습니다. 적어도 내 마음에 물어볼 질문이 많지 않기 때문에 거의 오지 않을 수 있습니다. "자신을 반복하지 마십시오"와 "간단하고 어리석은"규칙과 유사하게 공통적이지만 반드시 101 가지 방법으로 해부 및 분석되지는 않습니다. 약간의 연습을 한 후 곧 얻을 수있을 정도로 간단합니다. 어떤 것들이 무대 뒤에서 발전하고 돌아 서서 보면 그들을 진술하는 또 다른 방법 일 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top