짧은 대답 : 예, 문자열은 일련의 텍스트 문자를 저장하고 액세스하는 것 이외의 작업에 이상적이지 않으며 추상화의 기본 비트가 문자열 인 경우에도 변수를 상수 또는 상수로 참조하면 이점이 있습니다 .
긴 대답 : 대부분의 언어는 문제의 영역에 더 가까운 유형을 제공하며 그렇지 않은 경우에도 (등 등) left다른 엔티티로 정의 할 수있는 방법이있을 수 있습니다 right. 사용하여 문자열로 바꾸는 "left"것은 단순히 언어와 오류 확인과 같은 IDE의 유용한 기능을 상실한 것입니다. 당신이 사용해야하더라도
left = "left";
또는 이와 동등한 것으로 코드에서 문자열을 참조 할 때 문자열을 사용하는 것이 좋습니다. 예를 들어
if (player.direction == Left)
컴파일 타임 오류 (최고의 경우, Java 등)로 감지되거나 비트가 잘못된 IDE (최악의 경우, 기본 등)로 플래그가 지정됩니다.
또한 left참조 가능한 엔티티 라는 개념을 사용하면 방향 유형으로 가기로 결정한 방향을 수용하는 데 도움이됩니다. 을 사용 "left"하면 방향이으로 커밋됩니다 String. 유형에 대한 더 나은 추상화를 찾거나 작성하는 경우의 모든 인스턴스를 변경하는 전체 코드 본문을 탐색해야합니다 "left". 유형이 정교하면 상수 또는 변수를 변경할 필요가 없습니다.
실제로 원하는 유형은 도메인에 따라 다릅니다. 귀하의 코드는 무엇을 할 계획 left입니까? 아마도 왼쪽을 향하거나 앞으로 움직이는 텍스처 또는 스프라이트의 x 축을 대칭 시키려고 할 것입니다. 그렇다면 객체가 미러되지 않은 결과를 가져 left와서 해당 동작을 반영하는 속성 또는 메서드로 객체 를 만들 수 right있습니다. 스프라이트 또는 텍스처를 나타내는 객체에서 해당 논리를 수행 할 수 있습니다.이 경우 위에서 언급 한 이유 "left"대신 다시 사용하면 문제가 발생합니다 left.
Java에서는 (아직 모르는 다른 언어), enumJava에서는 유한 한 인스턴스 집합에 enum유용 하기 때문에 좋은 대안 final class입니다. 필요한 경우 비헤이비어를 정의 할 수 있으며 파일 외부에서을 선언하는 번거 로움없이 개방형 클래스로 전환 할 수 enum있지만 많은 언어 enum가 프리미티브 유형으로 보거나 특수 구문을 사용해야합니다. 이로 인해 enum비즈니스에 관여하지 않는 코드로 인해 후드가 유출되어 나중에 수정해야 할 수도 있습니다. enum옵션을 고려하기 전에 언어의 개념을 이해해야합니다 .