2012-03-22 3 views
0

Я новичок в Android & Java-программирование, но программирование в .NET на протяжении многих лет. Недавно мы разработали приложение для Android, и теперь он находится в завершающей стадии, чтобы подготовиться к клиенту (не через рынок/google play btw). Во всяком случае, очищая код. Я заметил, что мы используем TON строк, и я хотел бы сократить это, если это возможно. Я прочитал несколько статей и принял предложение о том, что все, что может видеть конечный пользователь, я помещал его в strings.xml (для лучшей локализации, не слишком уверенно, что они подразумевают под этим), но мы также используем имена таблиц SQLite, имена столбцов и т. д., и я хотел бы знать, как лучше всего построить класс (или набор классов), который позволяет нам (моим разработчикам и мне) легко обращаться к ним.Java - Constance class design

Это, как я начал строить его, но хотел некоторые мнения относительно того, есть ли лучший способ (дизайн, проблемы с производительностью, и т.д.)

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

Я съеживаюсь, когда вижу класс под названием Константы. – Robin

+0

Предложения для другого имени? – Robert

ответ

6

Константы должны быть static final. Это имеет преимущество в производительности, поскольку оно позволяет скомпилировать значение. Это также просто хороший стиль.

Кстати, соглашение заключается в том, чтобы ставить постоянные имена в ALL_CAPS.

+0

Я бы также сделал интерфейсы классов - для кого-то не имеет смысла создавать экземпляры этих классов –

+1

Вероятно, вы должны сделать константу открытой статической конечной строкой и сделать конструктор для private class private, чтобы предотвратить создание экземпляра. – ChadNC

+0

@ChrisWhite Для кого-то не имеет смысла реализовывать их. Следовательно, причина, почему классы, которые имеют только статические члены, такие как 'Math' в JDK, часто имеют частные конструкторы. – Taymon