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