나는 내 프로젝트 중 하나에서 이것을 보았고 작업 한 후에 그러한 사용법에 대해 대답하려고 노력할 것입니다.
코드 가독성
우선, 코드 가독성이 중요하며이 관행은 그에 반한다는 점을 고려하십시오. 누군가 코드를 읽고 함수가 있다고 가정 해 봅시다 doSomething(Employee e)
. Employee
다른 패키지에 10 개의 서로 다른 클래스가 있기 때문에 먼저 입력 선언을 사용하여 입력 내용이 무엇인지 확인해야 하므로 더 이상 읽을 수 없습니다 .
그러나 이것은 높은 수준의 견해이며 우리는 종종 임의의 이름 충돌로 보이며, 그 의미는 나머지 코드와 패키지에 포함되어 있기 때문에 아무도 신경 쓰지 않거나 찾을 수 없습니다. 당신이 볼 경우 즉, 로컬 때문에 물론, 문제가없는 Employee
내에서 hr
우리가 직원의 HR보기에 대해 얘기하고 있음을 알 필요가 패키지로 제공된다.
이 패키지를 떠나 자마자 문제가 발생합니다. 다른 모듈 / 패키지 / 등에서 작업하고 직원과 함께 작업해야하는 경우, 해당 유형을 완전히 검증하지 않으면 이미 가독성이 떨어집니다. 또한 10 개의 다른 Employee
클래스를 사용하면 IDE의 자동 완성이 더 이상 작동하지 않으며 직원 유형에서 수동으로 선택해야합니다.
코드 복제
이러한 각 클래스는 서로 관련되어 있기 때문에 중복이 많이 발생하여 코드가 저하 될 수 있습니다. 대부분의 경우 직원의 이름 또는 식별 번호와 같은 클래스가 있으며 각 클래스는 구현해야합니다. 각 클래스가 고유 한 관점을 추가하더라도 기본 직원 데이터를 공유하지 않으면 쓸모 없지만 비용이 많이 드는 엄청난 양의 코드가 생깁니다.
코드 복잡성
무엇을 물어볼 수 있을까요? 결국, 각 클래스는 원하는만큼 간단하게 유지할 수 있습니다. 실제로 문제가되는 것은 변경 사항을 전파하는 방법입니다. 기능이 풍부한 소프트웨어를 사용하면 직원 데이터를 변경할 수 있으며이를 모든 곳에 반영하려고합니다. 한 여성이 방금 결혼했고 이름을 X
에서Y
그것 때문에. 여기저기서이 작업을 수행 할 수있을만큼 어려운 일이지만,이 독특한 수업이 모두있을 때는 더욱 어려워집니다. 다른 디자인 선택에 따라 이는 각 클래스가 자체 리스너 종류를 구현해야하거나 변경 사항을 통지해야한다는 것을 의미 할 수 있습니다. 기본적으로 처리해야하는 클래스 수에 적용되는 요소로 변환됩니다. . 물론 더 많은 코드 복제와 더 적은 코드 가독성 .. 이와 같은 요소는 복잡성 분석에서 무시할 수 있지만 코드베이스의 크기에 적용될 때 반드시 성가시다.
코드 커뮤니케이션
디자인 선택과 관련된 위의 코드 복잡성 문제 외에도 높은 수준의 디자인 선명도를 낮추고 도메인 전문가와의 의사 소통 능력을 상실합니다. 아키텍처, 디자인 또는 요구 사항에 대해 이야기 할 때 더 이상 간단한 말을 자유롭게 할 수 없습니다 given an employee, you can do ...
. 개발자는 더 이상 employee
그 시점에서 실제로 무엇을 의미 하는지 알 수 없습니다 . 도메인 전문가는 물론 그것을 알 것입니다. 우리 모두가 할. 일종의. 그러나 소프트웨어 측면에서 더 이상 의사 소통하기가 쉽지 않습니다.
문제를 제거하는 방법
이 사실을인지하고 후에 경우 팀이 그것을 해결하기 위해 문제가 충분히 큰 것을 동의한다, 당신이 그것을 다루는 방법에서 작업해야합니다. 일반적으로 관리자에게 전체 팀에게 일주일을 주도록 요청할 수 없으므로 쓰레기를 버릴 수 있습니다. 따라서 본질적으로 이러한 클래스를 한 번에 하나씩 부분적으로 제거 할 수있는 방법을 찾아야합니다. 이것에 대한 가장 중요한 부분은 팀 전체와 함께 Employee
실제로 무엇인지 결정하는 것입니다. 마십시오 없는 한 신 직원에 개별 속성을 모두 통합 할 수 있습니다. 핵심 직원에 대해 더 많이 생각하고 가장 중요한 것은 해당 Employee
수업이 상주 할 장소를 결정하는 것입니다.
코드 검토를 수행하는 경우 문제가 더 이상 더 이상 커지지 않도록하는 것이 특히 쉽습니다. 즉, 다른 사용자를 Employee
다시 추가하려는 경우 모든 사람이 자신의 궤도에 멈춰야 합니다. 또한 새로운 하위 시스템이 합의 된 내용을 준수 Employee
하고 이전 버전에 액세스 할 수 없도록주의하십시오.
프로그래밍 언어에 따라 @Deprecated
팀이 변경해야 할 작업을 즉시 실현할 수 있도록 팀을 돕기 위해 결국 제거 될 클래스를 표시 할 수도 있습니다 .
오래된 직원 클래스를 제거하는 방법에 대해 각 개별 사례마다 가장 잘 제거되는 방법을 결정하거나 일반적인 패턴에 동의 할 수 있습니다. 클래스 이름을 붙여 실제 직원을 감싸거나 패턴 (장식 자 또는 어댑터가 떠오름)을 사용하거나 또는 또는
간단히 말해 :이 "연습"은 기술적으로는 건전하지만 길가에서 더 이상 발생하지 않는 숨겨진 비용으로 가득 차 있습니다. 문제를 즉시 제거 할 수는 없지만 해로운 영향을 즉시 포함시킬 수 있습니다.