2009-11-27 4 views
1

우리는 임의의 구두점을 포함하는 임의의 문자열을 사용하여 많은 어휘 처리를합니다. 나는 마술 문자/문자열 또는 기호 상수를 사용할 지에 관해서 나눠진다.구두점 처리시 마술 문자열이나 상수를 사용합니까?

예제는 대부분 Java 임에도 불구하고 언어 독립적 인 것으로 읽어야합니다.

문장이 의미 적 역할을하고 상수로 확인되어야한다 명확한 사례가 있습니다

File.separator하지 "/" 또는 "\\"; // OS에 의존적 인 것처럼 생각할 필요가 없습니다.

및 나는 XML_PREFIX_SEPARATOR = ":"을 작성합니다.

그러나 예를 들어 ""의 모든 예를 빈 문자열``로 바꿔야한다고 가정 해 봅시다. 내가 쓸 수 있습니다 :

:

s = s.replaceAll("\"\"", ""); 

또는

s = s.replaceAll(S_QUOT+S_QUOT, S_EMPTY); 

마법 문자열/문자 찬성

(나는 S_FOO (문자열)와 C_FOO (문자)와 같은 모든 일반적인 문장 부호 정의)

  1. 더 짧습니다.
  2. )
  3. 명명 된 상수는 '\''C_APOS)

상수

  1. 그것은 오타를 만들기 위해 더 어려워 찬성 (익숙하지 않을 수 있습니다 (예를 들어, S_APOS+S_APOS + C_QUOT"''" + '"')를 대조
  2. 그것은 문제 정규식이되어야한다 탈출 제거합니다 "\\s+" 또는 "\s+" 또는 "\\\\s+"?
  3. 그것은 구두점에 대한 코드를 검색하기 쉽게

(이에 제한이 - 나는 정규 표현식에에게 정규식 구문은 모든 프로그래밍의 대부분의인지 기능 장애 부분 중 하나입니다 경우에도이 방법을 쓸 것이라고 나는 생각한다.

답변

1

정의가 시간이 지남에 따라 또는 설치 사이에서 변경 될 수있는 경우,이 파일을 구성 파일에 저장하고 상황에 따라 정보를 시작할 때 또는 필요에 따라 선택하는 경향이 있습니다. . 그런 다음 읽기 전용 인터페이스로 정적 클래스를 제공하고 정보를 시스템에 표시하기 위해 속성에 대한 이름을 지우십시오.

사용법은 다음과 같이 수 :

s = s.replaceAll(CharConfig.Quotation + CharConfig.Quotation, CharConfig.EmtpyString); 
+0

생각하지 않는 다양한 에지의 경우 더 나은 처리를 얻을 수 있습니다 나는 가끔씩이 레벨의 뻔뻔 스러움을 옹호하는데 혼자가 아니라는 것을 알고있다. –

+0

나는 긴 이름을 사물에 사용하기 위해 함께 일하는 팀으로 알려진 경향이있다 ... –

1

를 일반 문자열 처리, 나는 특수 기호를 사용하지 않을 것입니다. 공간은 항상 공간이 될 것이며, 읽기만하면 더 자연 스럽습니다 (그리고 쓰십시오!) :

s.replace("String", " "); 

보다 :

s.replace("String", S_SPACE); 
가 쉽게 공백 구별 할 수 없기 때문에 내가, 예를 들어, 탭을 표현하기 위해 "\의 t"와 같은 것을 사용하는 특별한주의를 취할 것

끈. XML_PREFIX_SEPARATOR 또는 FILE_SEPARATOR 같은 것들에 관해서는

, 당신은 아마 당신이 당신을 위해 일을 할 수있는 라이브러리를 사용해야하기 때문에, 그런 상수를 처리하지 않아도됩니다. 예를 들어, 손으로 쓰지 않아야합니다 (dir + FILE_SEPARATOR + filename). 전화 번호는 file_system_library.join(dir, filename) (또는 현재 사용하고있는 것과 동등한 것)입니다.

이 방법, 당신은 단지 상수 같은 것들에 대한 답이없는거야, 당신은 실제로 당신은 아마 내가 기쁘게 생각 지금 대해

+0

나는 도서관에 대해 완전히 동의한다. 나는 그것들을 사용하고 그것들을 쓴다. 그러나 프리 머 티브에 액세스해야 할 경우가 있습니다 –

+0

@ peter.murray.rust : 예, 라이브러리를 작성할 때와 같이 원시 타입이 필요한 경우가 많습니다. 그러나 저는 사람들이 프리미티브에 대해 물어 보았을 때 많은 대답을했습니다. 대답은 더 높은 수준의 추상화이므로 다른 옵션으로 제공하고 싶습니다. –