powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Код в конструкторе
72 сообщений из 72, показаны все 3 страниц
Код в конструкторе
    #40009842
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как правильно реализовать класс, который должен выполнить определенные предварительные действия?

Абстрактный пример:
Допустим, нужно создать класс, которые будет получать через параметр конструктора имя файла. При его создании парсить этот файл и сохранять строки в мапу. После чего пользователь, методом getLine() сможет дергать эти строки.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
public class Reader{

   privete final Map<Integer, String> sentences;

   // Конструктор
   public Reader(Path file){
   }

   public String getLine(int index){
      return sentences.get(index);
   }
}



1). Писать код в конструкторе - это же плохо?
2). Т.е. что делать если нужно провести определенную инициализацию класса (но не простое присвоение значений полям, а определенная логика)?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009845
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,
Общие правила.
- инициализировать лучше в конструкторе если это не обращение к внешним ресурсам, внешним ИС, либам и не будет райзе 99,9%
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009846
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,
Так как файл - внешний ресурс, то нужно сделать доп метод напр. open() или init()
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009847
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
Как правильно реализовать класс, который должен выполнить определенные предварительные действия?

1). Писать код в конструкторе - это же плохо?
2). Т.е. что делать если нужно провести определенную инициализацию класса (но не простое присвоение значений полям, а определенная логика)?


1) Ну почему плохо?!
Кто запрещает?

Ну если не хотите писать тело в конструкторе, напишите в отдельной функции.
Которую потом вызовите в конструкторе.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009850
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp, т.е. будет выглядеть так:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
public class Reader{

   privete final Map<Integer, String> sentences;

   // Конструктор
   public Reader(Path file){
      open(file);
   }

   public String getLine(int index){
      return sentences.get(index);
   }

   private void open(Path file){
       // some logic;
   }
}


?

Если это не является bad practise, то ок. Вообщем то это и был основной вопрос.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009856
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,
Не так. Нельзя открывать или обращатся в конструкторе
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009873
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

Не так. Нельзя открывать или обращатся в конструкторе

mad_nazgul
1) Ну почему плохо?!
Кто запрещает?


сами авторы Java о таком запрещении почему-то не знают.

https://docs.oracle.com/javase/7/docs/api/java/io/FileInputStream.html#FileInputStream(java.io.File)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009874
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen

Если это не является bad practise, то ок. Вообщем то это и был основной вопрос.


beauty is in the eye of the beholder
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009989
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Правильнее всего сделать статический метод инициализатор, который возвращает option, ну в джаве в принципе можно и исключение кинуть.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Class Builder (

Public static Builder makeBuilder(path)(
 //Init resource
 New Builder()
)





)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40009995
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid Kudryavtsev,

так, то - боги
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010002
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл ник,
Щаз мы его фабрикой классов или паттерном Строитель добьем)))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010006
Sergunka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen
2). Т.е. что делать если нужно провести определенную инициализацию класса (но не простое присвоение значений полям, а определенная логика)?


Обычно для этой цели создают метод init с кодом возврата или ексепшином в зависимости от того чего там написано.
Это сложившиеся практика еще с прошлого века.

Вот вполне обоснованные дискуссии по этому поводу

https://softwareengineering.stackexchange.com/questions/334970/are-init-methods-a-code-smell

https://gamedev.stackexchange.com/questions/48446/why-should-i-use-separate-initialization-and-clean-up-methods-instead-of-putting

Основное правило это целесобразность таокого подхода в каждом конкретном случае. В общем случае это просто подозрительный код или неудачный дизайн.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010025
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

да на самом деле та же проблема, что и в плюсах, и в шарпе - отсутствие поддержки виртуальных методов в конструкторе
как говорится: проблема в языке by design - приходится вот так костылять с помощью init-методов

натягивают целесообразность такого подхода возможностью оптимизации на уровне компиляции
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010033
graycode
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreen
Абстрактный пример:
Допустим, нужно создать класс, которые будет получать через параметр конструктора имя файла. При его создании парсить этот файл и сохранять строки в мапу. После чего пользователь, методом getLine() сможет дергать эти строки.

Можно при вызове getLine() проверять есть ли экземпляр мапы и если нет, считывать и парсить файл (вызов соответствующего метода). Можно написать класс Reader с парсингом файла в конструкторе и сделать к нему виртуальную проксю LazyReader, которая при инициализации записывает имя файла в приватную переменную, также имеет приватное поле Reader, при вызове getLine() проверяет есть ли экземпляр Reader если нет то создает его и вызывает getLine() у экземпляра Reader.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010070
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
graycode,

авторМожно написать класс Reader с парсингом файла в конструкторе и сделать к нему виртуальную проксю LazyReader, которая при инициализации записывает имя файла в приватную переменную, также имеет приватное поле Reader, при вызове getLine() проверяет есть ли экземпляр Reader если нет то создает его и вызывает getLine() у экземпляра Reader.
Круто)))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010074
Фотография SQL2008
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выскажу свою точку зрения.
Конечно код в конструкторе писать можно, но есть одно большое НО.
Конструктор это процедура создания объекта и получается, что в случае ошибок выполнения кода сам объект не будет создан.
Мне думается правильно вначале создать объект, пусть практически пустой, а потом уже выполнять некоторые действия с ним.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010077
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SQL2008
Выскажу свою точку зрения.
Конечно код в конструкторе писать можно, но есть одно большое НО.
Конструктор это процедура создания объекта и получается, что в случае ошибок выполнения кода сам объект не будет создан.
Мне думается правильно вначале создать объект, пусть практически пустой, а потом уже выполнять некоторые действия с ним.
и какой вам смысл от объекта который не может на данный момент сделать что надо? :-)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010080
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
SQL2008
Выскажу свою точку зрения.
Конечно код в конструкторе писать можно, но есть одно большое НО.
Конструктор это процедура создания объекта и получается, что в случае ошибок выполнения кода сам объект не будет создан.
Мне думается правильно вначале создать объект, пусть практически пустой, а потом уже выполнять некоторые действия с ним.
и какой вам смысл от объекта который не может на данный момент сделать что надо? :-)


Fast Fail однако!

<:o)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010089
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Объекта и не будет. Будет инициализация переменной в памяти.
А потом можно рожать полноценный 1000 способов.
У меня в коде противопоказания только на исключение и зависание.
Ну и раздельно удобно переинициализацию делать
ob.init(file1)
ob.init(file2)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010091
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кажется тут речь о том что вроде как, в спрингбинах и не только спринг в конструктор код не засунуть кроме this.whateverField=whateverField
и юзать можно-нужно типа постконструкт или как он там.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010104
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Объекта и не будет. Будет инициализация переменной в памяти.
А потом можно рожать полноценный 1000 способов.
У меня в коде противопоказания только на исключение и зависание.
Ну и раздельно удобно переинициализацию делать
ob.init(file1)
ob.init(file2)
ну как не будет, память выделена, валидная ссылка на него есть
да и если "потом рожать" чем это отличается от "создать"?

я понимаю что при таком подходе, например в плюсах, можно на этапе копиляции создать объект
в java то какой профит?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010105
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT,
Да
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010107
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Дак и разговор про универсальный совет под все ЯП.
Универсальный - объект без райзе и гарантированно создаваемый. Это назначение конструктора.
В java тоже есть заморочки чтобы следовать этому правилу. Не прогер тут создает объект.))))
Тут new давно не пишут
))))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010108
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT
кажется тут речь о том что вроде как, в спрингбинах и не только спринг в конструктор код не засунуть кроме this.whateverField=whateverField
и юзать можно-нужно типа постконструкт или как он там.
вынужденое потокание архитектурному решению спринга понятно, но в чём смысл категорично распространять его на всё?


PetroNotC Sharp
...
Ну и раздельно удобно переинициализацию делать
ob.init(file1)
ob.init(file2)

что мешает сделать и так, и так?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010109
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
что мешает сделать и так, и так?
?
...
Рейтинг: 0 / 0
Код в конструкторе
    #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
Код в конструкторе
    #40010699
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Не понял тебя.
Есть mainForm при рождении делался коннект из настроек.
При смене бд просто перегружаем приложение.
Это юз кейс самый простейший.
Вот заказчик не захотел перегружать.
Тебе это не понравилось?
Твои проблемы. Тут прогеры а не заказчики.
У меня половина таких было. Хотят плюг анд плей))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010733
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
kealon(Ruslan),
Не понял тебя.
Есть mainForm при рождении делался коннект из настроек.
При смене бд просто перегружаем приложение.
Это юз кейс самый простейший.
Вот заказчик не захотел перегружать.
Тебе это не понравилось?
Твои проблемы. Тут прогеры а не заказчики.
У меня половина таких было. Хотят плюг анд плей))
желание заказчиков вполне законно и логично

пересоздать соединение же нужно, а не форму
так ведь?

главное в этой фразе пересоздать, т.е. камень предкновения в данном случае соединение, а не форма
т.е. логически, соединение - не часть формы, а внешний объект, который должна быть возможность заменить
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010759
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Ну допустим, что что меняет?
Объект рожается в конструкторе формы и Всегда создан. То есть нигде в 6000 строк кода нет проверки на null.
Теперь представь что его на кнопку надо в нуль на время сделать. Что будет?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010763
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Теперь представь что его на кнопку надо в нуль на время сделать.
Подчёркнуто мною и риторический вопрос: переделать "кнопку", конечно же, не предлагать?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010764
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Предложи решение по рефакторингу в двух словах.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010766
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Процитирую себя, любимого: "переделать кнопку".
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010769
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Процитирую себя, любимого: "переделать кнопку".
хороший пример словесной эквилибристики).
А мы тут о своём, программистком.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010770
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Basil A. Sidorov
Процитирую себя, любимого: "переделать кнопку".
хороший пример словесной эквилибристики).
А мы тут о своём, программистком.
я частенько видел такое поведение: "вместо того, что бы сделать нормально, наслаивают очередной хак", просто тупо потому что ситуативно так выглядит проще.

и человек так устроен, что подсознательно всегда ищет оправдание плохому поступку везде, где только можно, но не в своих действиях
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010774
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
В каких своих действиях если ты не показал образец Твоих действий. А зрители сами судят какой метод рефакторинга лучше.
Дак какие твой дейчтвия на это ТЗ?
Нам очень интересно.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010776
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan),
Как заменить в поле объект по композиции?
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010785
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
А мы тут о своём, программистком
... на уровне средневековой схоластики.
Нет, веке в шестнадцатом - было бы круто, не спорю.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010802
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Не интересно. Далеко от темы.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010803
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы плавно переходим к тому, что на ИТ специальностях так же нужно ввести обязательные занятия по теологии?


...
Рейтинг: 0 / 0
Код в конструкторе
    #40010828
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Схоластика слабо связана с теологией.
В средние века образованными, в основном, были монахи (не все монахи, разумеется) и упражнения в схоластике были, ясен пень, теологическими.
В сути же своей схоластика - рассуждения на произвольные темы. На темы, не имеющие разумного смысла - в том числе.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010831
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть мысль что рефакторинг - это человеческая категория.
Ну то бишь, процессору пофиг, рефакторен код или нет. Работающему
приложению и ОС - тоже пофиг.

И судить о пользе и вреде рефакторинга могут только одухотворённые и чувственные человеки.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010839
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
исходя из "личностного опыта веры" рефакторинга )))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010852
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Ну можно назвать Это по другому))).
"Приборка кода" подходит?))))
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010877
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эстетика кода. Украшение.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010889
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Эстетика кода. Украшение.
ну не только.
Рефакторинг вызвал новый функционал по ЧТЗ - Горячий переконнект.
Выбросил конструктор и поставил метод init
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010914
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это было вообще похоже на task или user story.
И будет ли там рефакторинг или нет это уже второй вопрос.
Я-бы сказал так что рефакторинг не должен менять major flow.
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010915
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это было вообще похоже на task или user story.
И будет ли там рефакторинг или нет это уже второй вопрос.
Я-бы сказал так что рефакторинг не должен менять major flow.
ты все переведи на русский и получим рефакторинг)
...
Рейтинг: 0 / 0
Код в конструкторе
    #40010917
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что если компьютер перевести как вычислитель - это добавит ясности?
...
Рейтинг: 0 / 0
72 сообщений из 72, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Код в конструкторе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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