powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Код в конструкторе
25 сообщений из 72, страница 2 из 3
Код в конструкторе
    #40010110
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan)
что мешает сделать и так, и так?
?
т.е. и конструктор и метод переинициализации
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010113
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Чтобы новичОк морщил лоб что лучше при подсказке в IDE?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010117
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),

Это в плюсах 30 вариантов конструкторов))))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010118
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для корпоратива, код должен быть простой,.... и понятный, читабельный и короткий.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010122
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Создание объекта должно быть атомарным и созданный объект должен быть гарантированно готовым к использованию, поэтому забудьте про ваши пахнущие нафталином init, open и т.д, потому что их легко забыть вызвать. Поэтому единственно правильный метод создания такого объекта - внешняя функция, которая либо вернёт готовый объект либо вернёт ошибку.
2) есть 4 распространенных стратегии как возвращать ошибку. А) код возврата - ну это давно дискредитировавшая себя идея, так что идём дальше 2) uncheked exception - код становится проще, но оно может проползти через много слоев кода и вылезти там где не ждёшь. Ацтой 3) unchecked exception. Уже лучше, нельзя не обработать, но добавляет лишний код, разрабы склонны просто глушить их ну и вообще это такой неочевидный goto 4) вернуть Either<Reader, Error> который указывает что результатом функции может быть либо объект либо ошибка и прогеру надо обработать оба кейса, и при этом не ломается последовательный флоу. К сожалению в java нету хорошего either, поэтому варианты с optional и кидагием uncheked для меня выглядят наилучшими, кому как нравится

Поэтому, повторяю, проблема решается через Статик метод, который называется smart constructor и он либо кидает анчекед либо опшилнал
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010126
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
Поэтому единственно правильный метод
ох уж эти максималисты. Будучи начальниками будут за спиной стоять и не давать спокойно писать код))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010142
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Чтобы новичОк морщил лоб что лучше при подсказке в IDE?
есть такое мнение, что лучше "поморщит и спросит", а не "сделает в коде кучу шаманских взмахов"
очевидность в таком случае больше страдает, как бы всё таки странно "делать два вызова вместо одного"

PetroNotC Sharp
kealon(Ruslan),

Это в плюсах 30 вариантов конструкторов))))
не от хорошей жизни же, и как бы это сомнительный пример для подражания
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010146
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Очевидность это в конструкторе сделал инициализацию 20 обычных полей типа
class A {
int x = 12*30
....
и потом вызвал Бизнес логику отдельным методом.
initFromStream...
initFromHttp
...
А то как то узко получается делать 5 initXXX и 5 конструкторов
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010205
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

то что в Java это неудобно делать - это конечно фактор от которого приходится прыгать
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010221
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Мое имхо что это неудобно также в дельфи, шарпе и плюсах
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010307
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

в дельфи, с конструктором, это я точно могу сказать, особо проблем нет - фактически там вызов конструктора это целый комбайн, который реализует "фабрику классов". Там другие проблемы: стандартные библиотеки и интерфейсы между креслом и компьютером.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010318
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Ну дак я делал там 3 конструктора объекта. И все работало.
ob.Create(путьКсубд)
А когда шеф сказал что нужно в меню Отсоединится от Бд и присоединится к бд без перезапуска (не убивая объект) то переделал с конструктора на
ob.init(путьКсубд)
Просто это удобнее чем убивать)))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010372
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще непонятна проблема топика.

Посмотрите как OpenJDK реализует классы java.io.*
Есть там логика в конструкторах и исключения они бросают.

Может в топике надо обсудить шаблоны типа фабрика или фабричный метод?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010397
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Пошучу как kealon
..
Так то - боги))))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010402
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Ну дак я делал там 3 конструктора объекта. И все работало.
ob.Create(путьКсубд)
А когда шеф сказал что нужно в меню Отсоединится от Бд и присоединится к бд без перезапуска (не убивая объект) то переделал с конструктора на
ob.init(путьКсубд)
Просто это удобнее чем убивать)))
а кто мешал и выделить метод, и вызвать его из конструктора? :-)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010403
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Может в топике надо обсудить шаблоны типа фабрика или фабричный метод?
какой смысл такой примитив обсуждать? без поддержки языка это куча ручного кода
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010409
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Можно конечно.
Но я привык так, если на предметах в комнате скапливается пыль, то предмет не нужен.
Ну ты понял.
Если никто не использует тот конструктор (я же выше показал что неудобно) то это лишний код.
Я против универсальности и универсального класса которого имеем во всех позициях))
Ну или второй пример.
Когда файл выделяешь и нажимаешь копировать или переместить ты звдумываешься?
Вот и я нажал в IDE F6 а не F5
))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010414
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Бывают более раздражающие кейсы. Например вам надо быстро протестировать бизнес-логику в юнит-тестах
но .. бизнес-объект вы просто так не можете создать. У него нет дефолтного конструктора. Есть конструктор
с параметром который тоже хрен создашь по той-же причине.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010421
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Бывают более раздражающие кейсы. Например вам надо быстро протестировать бизнес-логику в юнит-тестах
но .. бизнес-объект вы просто так не можете создать. У него нет дефолтного конструктора. Есть конструктор
с параметром который тоже хрен создашь по той-же причине.

Если речь о Легаси - да. Новый код такого качества не должен пройти дальше пулл реквеста
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010426
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник
mayton
Бывают более раздражающие кейсы. Например вам надо быстро протестировать бизнес-логику в юнит-тестах
но .. бизнес-объект вы просто так не можете создать. У него нет дефолтного конструктора. Есть конструктор
с параметром который тоже хрен создашь по той-же причине.

Если речь о Легаси - да. Новый код такого качества не должен пройти дальше пулл реквеста

Почему?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010427
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Да. Согласен. И даже уже обсуждали это в форуме.
Это уже особенности мокания, бинов, внедрения классов и т.д.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010431
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если посмотреть на Apache Lucene - таки да. Там много объектов движка создаются не через конструкторы
а через методы фабрик. Это для ядро. Это pure-java и никто не будет их заворачивать в бины или ORM
сущности.

Тоесть как-бы идет условное разделение на обще-системные и прикладные (бизнесовые) библиотеки.
И когда я ворчал по поводу тестированя - я какраз имел в виду бизнес-код в котором программист
просто шутки ради или начитавшись умной литературы просто забрал у меня обычный конструктор.

И теперь надо задаскивать Mockito. Библиотеку которую я считаю совершенно ненужным шлаком
да и нарушающей законы инкапсуляции.

Вобщем в борьбе брони и снаряда никто не побеждает но мы увеличиваем эстимации решаемых тасок.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010432
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Опять согласен. Так как ты еще помнишь обычное программирование java. Десктоп.
Потом java в веб ушло. Тут непустой конструктор нафиг не нужно. Тут и ООП не нужен))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010546
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я в последнее время стал писать каменты в пустых конструкторах.

Код: java
1.
2.
3.
4.
5.
6.
7.
public class MaytonsFuckenEntity {

 public MaytonsFuckenEntity() {
    // Ugh... requered by ORM...
 }

}


Это чтоб шаловливый другой кодер не переделал
дефолтный в конструктор с параметром. Пускай новый создаст.

Смысл по сути такой-же как и в каментах в секции default:
Чтоб акцентировать что мы ситуацию контролируем а не просто
что-то механически вписали.

P.S. Java иногда умеет замылить глаза бойлерплейтом.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010691
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Можно конечно.
Но я привык так, если на предметах в комнате скапливается пыль, то предмет не нужен.
Ну ты понял.
Если никто не использует тот конструктор (я же выше показал что неудобно) то это лишний код.
Я против универсальности и универсального класса которого имеем во всех позициях))
Ну или второй пример.
Когда файл выделяешь и нажимаешь копировать или переместить ты звдумываешься?
Вот и я нажал в IDE F6 а не F5
))
вы высказали только сомнительное утверждение

авторА когда шеф сказал что нужно в меню Отсоединится от Бд и присоединится к бд без перезапуска (не убивая объект) то переделал с конструктора на
ob.init(путьКсубд)
Просто это удобнее чем убивать)))на основании какой метрики шеф сделал этот вывод?
почему конкретный случай стал квантором всеобщности?

с любой стороны как ни погляди, но "два вызова вместо одного" - это явно лишний код :-)
...
Рейтинг: 0 / 0
25 сообщений из 72, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Код в конструкторе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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