Собираем все константы в один класс андроид - PullRequest
0 голосов
/ 29 июня 2018

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

Ответы [ 5 ]

0 голосов
/ 02 марта 2019

Постоянный класс здесь

 public class Constants {
        /**
         * Object key prams when pass the json object from server.
         */
        public static final String KEY_EMAIL = "email";
        public static final String KEY_PASSWORD = "password";
        public static final String KEY_DEVICE_TOKEN = "device_token";
        public static final String KEY_DEVICE_TYPE = "device_type";
        public static final String KEY_NAME = "name";
        public static final String KEY_COUNTRY_CODE = "country_code";
        public static final String KEY_PHONE_CODE = "phone-code";
        public static final String KEY_GENDER = "gender";
        public static final String KEY_DATE_OF_BIRTH = "date_of_birth";
        public static final String KEY_USER_ID = "user_id";
        public static final String KEY_LIMIT = "limit";
        public static final String KEY_DRIVER_ID = "driver_id";
        public static final String KEY_LONGTITUDE = "logitude";
        public static final String KEY_LATTITUDE = "lattitude";
        public static final String KEY_RATING = "rating";
        public static final String KEY_DETAILS = "details";
        public static final String KEY_ACCESS_TOKEN= "access_token";
        /**
         * Fragments name
         */
        public static final String FRAG_ETA = "ETA";
        public static final String FRAG_ACCOUNT_FRAGMENT = "ACCOUNT_FRAGMENT";
        public static final String FRAG_SETTING_FRAGMENT = "SETTING_FRAGMENT";
        public static final String FRAG_MAP_FRAGMENT = "MAP_FRAGMENT";
        public static final String FRAG_FEEDBACK = "FEEDBACK";
        public static final String FRAG_RATE_FRAGMENT = "RATE_FRAGMENT";

        public static final String USA_CODE = "+1";

        public static final String DISTANCE_SEARCH = "DISTANCE_SEARCH";


    }
0 голосов
/ 29 июня 2018

Подход, который я использую, таков:

Для любых констант, совместно используемых в системе (например, URL-адрес конечной точки REST), я помещу их в качестве окончательных переменных в отдельный класс констант.

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

0 голосов
/ 29 июня 2018

Теперь вы можете использовать аннотации вместо констант:

import android.support.annotation.IntDef;

import java.lang.annotation.Retention;

import static java.lang.annotation.RetentionPolicy.SOURCE;



@IntDef({
        TypeBodyItem.BODY_TYPE_UNKNOWN,
        TypeBodyItem.BODY_TYPE_HTML,
        TypeBodyItem.BODY_TYPE_ARTICLE,
        TypeBodyItem.BODY_TYPE_MEDIA,
})

@Retention(SOURCE)
public @interface TypeBodyItem {
    int BODY_TYPE_UNKNOWN = 0;
    int BODY_TYPE_HTML = 10;
    int BODY_TYPE_ARTICLE = 20;
    int BODY_TYPE_MEDIA = 30;
}

Статья и документация о аннотациях.

0 голосов
/ 29 июня 2018

Для этого и нужны перечисления.

https://docs.oracle.com/javase/tutorial/java/javaOO/enum.html

Например: вы хотите сослаться на тип в определенной категории. Перечисление будет категорией, состоящей из множества типов.

Тогда всякий раз, когда вы хотите их использовать, это просто: category.typeN.

Это хорошо, потому что, если имя типа изменится. Рефакторинг его в перечислении, и он изменит все «константы»

0 голосов
/ 29 июня 2018

Является ли это «правильным путем» или нет, это в основном дело вкуса. Здесь нет правильного или неправильного.

Что касается того, как их использовать - просто создайте класс с серией public static final полей:

public class Constants {
    public static final String FIRST_NAME = "Tarik";
    public static final String LAST_NAME = "Hodzic";
}

И тогда другие классы могут просто использовать их:

public class SomeClass {
    public String getFullName() {
        return Constants.FIRST_NAME + " " + Constabts.LAST_NAME;
    }
}
...