powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Текстовые значения в коде
18 сообщений из 18, страница 1 из 1
Текстовые значения в коде
    #39836210
Molasar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!

Есть код, в котором много текстовых значений:

- kUrl = "activeMQ.url" - используется как ключ в Map структуре messageServiceConfig, которая содержит в себе данные из файла properties key=value
- exConnectionStarted = "Connection has already started" - описание для Exception
Причем некоторые текстовые значения используются в других классах.

Куда эти тексты лучше запихнуть красиво, чтобы избавиться от текста в коде вообще?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
public class SingleMessageService {
    
    ...
    private final String kUrl = "activeMQ.url";
    private final String kUsername = "activeMQ.username";
    private final String kPassword = "activeMQ.password";
    private final String kQueue = "activeMQ.queue";
    private final String kMode = "activeMQ.mode";

    ...
    private final String exConnectionStarted = "Connection has already started";
    private final String exConnect = "Failed connect Message Service provider";
    private final String exProducer = "Failed create Producer";
    private final String exNoMode = "Mode is absent";
    private final String exNoQueue = "Queue name is absent";
    private final String exStarted = "Message Service is not connected";
    private final String exClose = "Failed disconnect Message Service provider";
    private final String exSend = "Failed send message";
    private final String exProducerIsNull = "Producer is null";

    ...
    public void connect(MessageServiceConfig messageServiceConfig) {
        if (connection == null) {
            if (messageServiceConfig.getProperties()
                    .containsKey(kUrl)) {
                connectionFactory = new ActiveMQConnectionFactory(
                        (String) messageServiceConfig.getProperties()
                                .get(kUsername),
                        (String) messageServiceConfig.getProperties()
                                .get(kPassword),
                        (String) messageServiceConfig.getProperties()
                                .get(kUrl));
            } else {
                throw new MessageServiceException(exUrlAbsent);
            }
        ...
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836242
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MolasarКуда эти тексты лучше запихнутьв проекте папку Globals. Туда пакет Globals и статик класс.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836265
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Красивость - это не совсем инженерный термин. Обычно преследуются следующие цели.
Выделить все настройки связанные с локализацией в отдельные конфиги (*properties,*yaml, *xml, *json)
Сделать приложение конфигурируемым. Тоесть для того чтобы поменять url или логин не надо
было привлекать разработчика и пересобирать проект.

И прочее.

Какая цель у вас - непонятно.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836276
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MolasarexConnectionStarted = "Connection has already started" - описание для Exceptionпочему нет класса ExceptonMy?
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836285
vas0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для ошибок можно что то такое сделать:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public enum Errors {
    NO_MODE,
    NO_QUEUE,

    INVALID_PRODUCER,

    START_FAILED,
    SEND_FAILED;

    public String getLocalizedMessage() {
        MessageSource messageSource = MessageSourceHolder.getMessageSource();
        return messageSource.getMessage("your.package.Errors." + name());
    }

}

далее создаешь файл с описанием ошибок errors.properties:
Код: java
1.
2.
3.
your.package.Errors.NO_MODE=Queue name is absent
your.package.Errors.NO_QUEUE=Mode is absent
...

из плюсов, сообщения всех твоих ошибки будут локализованы, и у каждой ошибки будет описание, особенно если ты API предоставляешь кому то еще. Из минусов (MessageSource/ApplicationContext) нужно где то сохранить, чтобы он был доступен через static метод.

авторkUrl = "activeMQ.url" - используется как ключ в Map структуре messageServiceConfig, которая содержит в себе данные из файла properties key=value
как по мне так это лишняя Map (если это не SpringBoot), сделал бы просто:
Код: java
1.
2.
3.
4.
SingleMessageService {
    @Value("${activeMQ.url}")
    private String url;
}
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836301
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подобные вещи обычно вытаскивают в конфиги. и вместо фактического значения вставляют ссылочное на этот конфиг откуда оно и подгребается. если речь о бэке. и если по-нормальному. по фронту как там у них принятно хз. наверное так же.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836302
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ну вот чел написал проперти файлы. собссно да. это оно и есть. нас двое ))
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836311
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTподобные вещи обычно вытаскивают в конфиги.в файлы конфиги вытаскивают для админов.
Часть можно и в коде. Или константы отменили?
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836321
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем размазывать по коду ровным шпателем?
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836325
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTзачем размазывать по коду ровным шпателем?
У логирования есть уровни.
У ошибок есть уровни
У переменных ес уровни
У констант есть уровни для размещения.
(не надо константы для кода выносить в конфиги)
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836393
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTа ну вот чел написал проперти файлы. собссно да. это оно и есть. нас двое ))
Я тоже "за"!
Уже трое.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836409
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соглашусь с петром.

Есть три типа информации:
1) Конфигурационные параметры - их кладем в properties, они меняются девопсами по необходимости на нужном энвайрнменте
2) Локализационные данные - сообщения об ошибках, UI-лейблы и т.д - кладутся в папку messages - каждому языку по файлу
3) Константы имплементации val regex = "\\w" - их либо держать в классе, где используются, либо заводить Constants.java, на этот счет я иду немного в разрез с общепринятым мнением - и храню в файлах где используются
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836421
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там явно пункт два из твоего списка
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836425
chpasha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтам явно пункт два из твоего списка
имхо там частично 1) и частично вообще муть - по сути сообщения об ошибках в логе, которые не факт что нужно локализовать и не факт, что нужно выделять в отдельные константы, ибо если в одном месте логгер напишет "Failed create Producer", а в другом "Failed to create Producer" то небо на землю не упадет. Конечно отдельный вопрос с какого одинаковые ошибки в разных местах генерятся и не нужно ли такие места в отдельный код выделить, но допустим.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836443
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTтам явно пункт два из твоего списка
Это?
Код: java
1.
private final String kUrl = "activeMQ.url";


Не смеши.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836445
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC SharpandreykaTтам явно пункт два из твоего списка
Это?
Код: java
1.
private final String kUrl = "activeMQ.url";


Не смеши.
это вообще чистый конфиг и ему место в пропертях. то что он так оформил вместо анноташки. ну хз может так задумано. может ему нельзя.
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836452
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaTчистый конфигкто и когда конфигурирует?
...
Рейтинг: 0 / 0
Текстовые значения в коде
    #39836456
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут - какое-то переусложнение? Что это? Конфигурация конфигураций?
Код: java
1.
2.
3.
4.
5.
    private final String kUrl = "activeMQ.url";
    private final String kUsername = "activeMQ.username";
    private final String kPassword = "activeMQ.password";
    private final String kQueue = "activeMQ.queue";
    private final String kMode = "activeMQ.mode";
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Текстовые значения в коде
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]