Вложенный интерфейс Android для хранения констант - PullRequest
3 голосов
/ 19 ноября 2011

Итак, я посмотрел на приложение ввода-вывода Google, iosched, и заметил, что они реализуют константы через вложенный интерфейс. Например, в своем классе ScheduleDatabase они имеют:

public class ScheduleDatabase extends SQLiteOpenHelper {
    interface Tables {
        String BLOCKS = "blocks"
        String TRACKS = "tracks"
    }
}

Но я читал в Интернете, что это плохая практика Java - создавать интерфейс для хранения только констант. Но, как вы можете видеть в классе ScheduleDatabase , в некотором смысле имеет смысл, почему они выбрали именно этот подход. Так что мне было интересно, если это тоже плохая практика?

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

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

Я не могу точно сказать, хорош этот шаблон или плох.Если у вас есть только несколько констант, то я бы определенно сказал, что не используйте их, но если у вас есть набор констант, которые вы можете логически объединить в группы, вы можете рассмотреть это.Конечно, мне удобнее использовать версию этого шаблона с вложенным интерфейсом по сравнению с обычной версией интерфейса.

0 голосов
/ 19 ноября 2011

Вы можете прочитать что-нибудь о Java с некоторым интересом - не все это инженерно

...