Использует Java перечислений для хранения пути к каталогам хорошая практика


Я работаю над Android-приложение, но это в основном равнина 'Оле Ява.

Цель состоит в том, чтобы делать правильные вещи и не повторяться.

public enum Datafile {
    ACTIVITIES() {
        @Override public String filepath() {
            return "activities.yaml";
        }
    }, 
    OPEN_LOOPS() {
        @Override public String filepath() {
            return "open_loops.yaml";
        }
    };

    public abstract String filepath();
}

Позже, когда я хочу отредактировать файл я попробуйте этот

File file = getDataFile(Datafile.OPEN_LOOPS);

Который вызывает это...

private File getDataFile(Datafile datafile) {
    File file = null;

    String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
    file = new File(baseDir + "/" + datafile.filepath());

    return file;
}

Очки за лучшее имя для enum и хороший совет относительно того, кто несет ответственность за способ getFileData (в настоящее время этот код в действии) действительно лежит (новый класс).



1041
6
задан 2 октября 2011 в 05:10 Источник Поделиться
Комментарии
3 ответа

Если это действительно статика, то да, enum-это, вероятно, просто отлично. Однако, это не очень гибкий. Что делать, если ваш путь изменится? Изменить перечисление, компиляции и распространять? Youch!

Или, вы можете использовать XML-файл в качестве конфигурационного. Изменить? Изменить его в XML-файл, и распространять. Меньше передачи файлов, среди других преимуществ.

5
ответ дан 3 октября 2011 в 10:10 Источник Поделиться

Перечисление-это хороший способ сделать это, на мой взгляд, если это действительно статический.

Может я предлагаю вам сделать:

public enum Datafile {
ACTIVITIES("activities.yaml"),
OPEN_LOOPS("open_loops.yaml");

private String filepath;

private Datafile(String filepath) {
this.filepath = filepath;
}

public String getFilepath() {
return filepath;
}

Это немного более читабельным, чем методы переопределены в каждом объявлении, особенно с длинными перечислениями.

Если значения пути к каталогам могут меняться время от времени. Я предлагаю использовать файл свойств. Они могут быть перегружены без перекомпиляции пакета, смысл не-разработчикам удалось сохранить их. Это полезно в некоторых сетапах команд.

Редактировать:
Для свойства, я предлагаю вам прочитать свойств Java учебник: http://download.oracle.com/javase/tutorial/essential/environment/properties.html. Есть также множество уже хорошо написаны учебники о них, и я никогда не мог надеяться на их качество. Кроме того, никогда не работал на Android, я не знаю, если Google предоставил что-то, что является более удобным для пользователя.

Для небольших приложений, я пошел бы для перечисления лично, так как они очень просты в управлении и, как правило, делают работу очень хорошо.

14
ответ дан 2 октября 2011 в 06:10 Источник Поделиться

Я выстрелил себе в несколько раз ногой, когда я жестко закодированные имена файлов и т. д.

Сейчас я ставлю такие "статические" данные, как правило, в файлах свойств. Таким образом, он может легко быть введен, например с помощью Guice.

5
ответ дан 4 октября 2011 в 01:10 Источник Поделиться