2012-03-22 4 views
0

나는 안드로이드를 처음 접했다. & 자바 프로그래밍이지만 .NET에서 수년 동안 프로그래밍 해왔다. 우리는 최근에 안드로이드 응용 프로그램을 개발했으며 이제 고객을 위해 준비 될 최종 단계에 있습니다 (market/google play btw를 통하지 않음). 어쨌든 코드를 정리하는 동안. 나는 우리가 많은 수의 문자열을 사용하는 것을 알아 챘다. 가능한 한이 문자열을 줄이고 싶다. 몇 가지 기사를 읽었으며 최종 사용자가 볼 수있는 제안을했습니다. strings.xml에 넣어 두었습니다 (더 나은 현지화를 위해 그 의미가 무엇인지 확실하지는 않지만).하지만 SQLite 테이블 이름도 사용합니다. 열 이름 등을 포함하고 있으며 (개발자와 내가) 쉽게 액세스 할 수있는 클래스 (또는 클래스 세트)를 구성하는 가장 좋은 방법을 알고 싶습니다. 나는 그것을 구성하기 시작했지만 가 더 나은 방법 (등 디자인, 성능 문제,)자바 - 상수 클래스 디자인

public class Constants { 

    static enum SQLiteTableNames { Issues, Activities } 

    static class SQLiteTables { 
     static class Issues {   
      static class ColumnNames { 
       static String ID = "_id"; 
       static String DateReceived = "DateReceived"; 
      } 
     } 

     static class IssueActivites {   
      static class ColumnNames { 
       static String ID = "_id"; 
       static String IssueID = "IssueID"; 
       static String ActivityDate = "ActivityDate"; 
       static String ActivityType = "ActivityType"; 
       static String FullName = "FullName"; 
       static String Notes = "Notes"; 
      } 
     } 
    } 
} 

이것은 우리가과 같이 열 이름을 참조 할 수있을 경우에 일부 의견을 원하는 방법

입니다 :

Constants.SQLiteTables.IssueActivites.ColumnNames.ActivityDate; 

정체되는 대신 속성에 최종 정적을 사용해야합니까?

+0

상수 (Constants)라고 불리는 수업을 보았을 때 나는 겁에 질렸다. – Robin

+0

다른 이름에 대한 제안 사항이 있으십니까? – Robert

답변

6

상수는 static final이어야합니다. 값을 컴파일 할 때 성능상의 이점이 있습니다. 또한 좋은 스타일이기도합니다.

그건 그렇고, 규칙은 ALL_CAPS에 상수 이름을 넣는 것입니다.

+0

또한 클래스 인터페이스를 만들 것입니다. 누군가이 클래스를 인스턴스화 할 수 없게 만듭니다. –

+1

아마도 상수를 public static final string으로 만들고 인스턴스화를 방지하기 위해 상수 클래스 private의 생성자를 만들어야합니다. – ChadNC

+0

@ChrisWhite 누군가 구현할 수는 없습니다. 따라서 JDK의 '수학'과 같은 정적 멤버 만 갖는 클래스에는 종종 개인 생성자가있는 이유가 있습니다. – Taymon