3

소스 코드의 제품 및 기능 이름 변경과 관련하여 좋은 전략은 무엇입니까? 여기에 내가 나 자신을 찾을 상황이다 또 다시 (당신의 대부분이 관련 될 수있다?) ...소스 코드에서 기능 및 제품 이름을 변경하는 방법은 무엇입니까?

  1. 제품 이름이 "DaBomb"
  2. 주요 특징은 "찾아서", "등불"과 같이 시작합니다 "깃발".
  3. , "등대"와 "마크 먼"시간이 지날
  4. , 제품 이름 변경을 "DaChronic"
  5. ...
  6. 을 시간 전달하고 기능 이름은 "붐"으로 변경됩니다 .. .
  7. 어쩌구, 저쩌구 ... 반복하고

그리고 지금 우리가 사용되지 않는 대부분의 디렉토리 트리와 소스 파일, 주위에 뿌려 50 다른 이름있는 대형 코드베이스를 이상. 참전 용사들만 각 이름이 의미하는 것, 전체적인 병력학 기록 등을 기억합니다.

이 혼란에 대한 해결책은 무엇입니까?

명확화 : 나는 고객이 보는 디렉토리 이름, 소스 파일, 클래스, 변수 등을 의미하지는 않습니다. 개발자가 변화하는 제품 및 기능 이름이 어디에 엮여 있는지를 알 수 있습니다.

답변

6

"고객이 보는 이름을 의미하지는 않습니다. 개발자가 볼 수있는 디렉토리, 소스 파일, 클래스, 변수 등의 이름을 의미합니다." 성가신 문제.

코드 기반의 각 항목에 대해 항상 하나의 이름 만 사용하는 정책을 사용했을 때 내가 한 팀은 최선을 다했습니다. 나중에 이름이 변경되면 코드에서 이전 이름을 유지하거나 기존 이름의 모든 인스턴스를 새 이름으로 마이그레이션합니다. 중요한 것은 이전 이름의 모든 인스턴스가 마이그레이션되지 않는 한 코드에서 새 이름을 사용하지 않는 것입니다. 그런 식으로 머리 속에있는 두 가지 이름, 즉 코드에 사용 된 "이전 이름"과 다른 사람들이 사용하는 이름 만 지켜야합니다.

우리는 "브랜드 이름"이 변경 될 가능성이 높다는 것을 알고 나면 시작시 매우 일반적인/설명적인 이름을 선택하기도합니다.

0

어떻게 현지화를 처리합니까? 같은 것; 같은 방법.

+0

명확히하기 위해 고객이 보는 이름이 아니라 개발자가 볼 수있는 디렉토리, 소스 파일, 클래스, 변수 등의 이름을 의미합니다. – noctonura

+0

아, 그 경우에, 당신은 그것으로 살고 있습니다. 제 생각에 그것은 꽤 표준적인 방법이라고 생각합니다. –

4

다른 형식의 리팩토링보다 나은 명명 규칙을 사용하는 것이 좋습니다. 분기 만들기, 이름 변경 수행, 유닛/통합 테스트 실행, 커밋, 병합, 반복. 프로젝트의 일관성을 유지하기 위해서는 프로세스 제어가 중요합니다.

0

내부 및 외부 이름을 사용합니다.

public static final String EXPLODER = "Boom"; 

과 같이 정적 변수 정의처럼 간단 할 수 있습니다. 코드에는 항상 EXPLODER에 대한 참조가 사용됩니다. 경로 이름과 동일합니다 - 서로 다른 장소에서 해당 경로를 하드 코딩하는 것은 어쨌든 계속됩니다. 어떤 사람들은 내부 소스 (JS 소스 또는 ini 파일 등)를 통해 파기를 시작하면 Exploder를 발견하면 누가 신경을 쓰겠습니까?

4

혼란에 대한 해결책은 처음에는 그것을 만들지 않는 것입니다. 코드 경로의 이름이 지정되면이를 바꿀만한 이유가 거의 없으며 은 결코과 같이 새 이름을 사용하는 것이 좋습니다. "Exploder"가 "Boom"이되면, 당신은 두 가지 선택을 할 수 있습니다 : Exploder만을 독점적으로 사용하고 Boom을 아무데도 언급하지 마십시오. 또는 Exploder의 모든 인스턴스를 Boom으로 변경 한 다음 Boom 만 계속 사용하고 Exploder를 다시 언급하지 마십시오.

동일한 코드베이스에서 폭발과 붐을 모두 사용하는 경우 오류가 발생합니다.

또한 사용자가 볼 수있는 이름에 대해 이야기하는 것이 아니라는 점을 분명히 알았지 만, 코드가하는 일과 관련이 있고 마케팅이 원하는 것과 완전히 독립적 인 내부 이름으로 작업을 시작하면 제품/기능을 호출하는 경우 문제가 될 가능성이 훨씬 적습니다. 이미 Exploder를 TNT로 내부적으로 언급하고 있다면 Exploder가 Boom으로 변경되면 어떤 차이가 있습니까?