Size: a a a

2021 January 21

z

zamtmn in Delphi & Lazarus
Viktor Akselrod
может это не народ странный? 🙂
А если я у классов буду конструкторы init называть?
источник

VA

Viktor Akselrod in Delphi & Lazarus
zamtmn
А если я у классов буду конструкторы init называть?
никто тебе не может помешать
только есть общепринятая практика и init туда никак не вписывается
источник

z

zamtmn in Delphi & Lazarus
Viktor Akselrod
никто тебе не может помешать
только есть общепринятая практика и init туда никак не вписывается
да, потому что принято воттак https://t.me/Delphi_Lazarus/151636
источник

VA

Viktor Akselrod in Delphi & Lazarus
если мы говорим о практике в стандартных исходниках делфи, то это не совсем так.
именование Init практически не используется в отличии от повсеместного Create начиная с базового TObject и выше
в тоже время вызов Create одинаково и создает экземпляр и (пере)инициализирует данные класса в зависимости от того, как он был вызван (у класса или инстанса)
хотя вариант с переинициализацией инстанса через Create лично я не использую, т.к. это не самая очевидная вещь, кмк
источник

D

Darlok(Artem) in Delphi & Lazarus
Viktor Akselrod
если мы говорим о практике в стандартных исходниках делфи, то это не совсем так.
именование Init практически не используется в отличии от повсеместного Create начиная с базового TObject и выше
в тоже время вызов Create одинаково и создает экземпляр и (пере)инициализирует данные класса в зависимости от того, как он был вызван (у класса или инстанса)
хотя вариант с переинициализацией инстанса через Create лично я не использую, т.к. это не самая очевидная вещь, кмк
Я бы даже дополнил что иногда это плохая практика, вызывать конструктор у существующего объекта, т.к. можно успешно перекрыть внутренние ранее созданные объекты тем самым сделав, как минимум, утечку или вообще непредвиденные ошибки из-за нарушенной ссылочности. По хорошему в конструкторе создаются критически важные объекты("Я тебя породил. я тебя и убью" (с) Тарас Бульба) и инициализируются поля в дефолтные значения ('', 0, false, и т.д.), а вот дальнейшее заполнение чем-то другим должно ложиться на плечи того кто создаёт этот объект. Сам по себе Create подразумевает что будет проведена предварительная подготовка создаваемого экземпляра, а потому Init следом за Create выглядит не нужным. Может я чего-то не понимаю, но весь дискус с самого утра выглядит так: "мне не нравится слово Create и я хочу использовать свои костыли что бы другие не поняли что тут происходит и ненавидели меня ещё больше".
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
Я бы даже дополнил что иногда это плохая практика, вызывать конструктор у существующего объекта, т.к. можно успешно перекрыть внутренние ранее созданные объекты тем самым сделав, как минимум, утечку или вообще непредвиденные ошибки из-за нарушенной ссылочности. По хорошему в конструкторе создаются критически важные объекты("Я тебя породил. я тебя и убью" (с) Тарас Бульба) и инициализируются поля в дефолтные значения ('', 0, false, и т.д.), а вот дальнейшее заполнение чем-то другим должно ложиться на плечи того кто создаёт этот объект. Сам по себе Create подразумевает что будет проведена предварительная подготовка создаваемого экземпляра, а потому Init следом за Create выглядит не нужным. Может я чего-то не понимаю, но весь дискус с самого утра выглядит так: "мне не нравится слово Create и я хочу использовать свои костыли что бы другие не поняли что тут происходит и ненавидели меня ещё больше".
да, ты чтото непонимаешь
»Я бы даже дополнил что иногда это плохая практика
плохая, но иногда по другому не сделать
источник

z

zamtmn in Delphi & Lazarus
Viktor Akselrod
если мы говорим о практике в стандартных исходниках делфи, то это не совсем так.
именование Init практически не используется в отличии от повсеместного Create начиная с базового TObject и выше
в тоже время вызов Create одинаково и создает экземпляр и (пере)инициализирует данные класса в зависимости от того, как он был вызван (у класса или инстанса)
хотя вариант с переинициализацией инстанса через Create лично я не использую, т.к. это не самая очевидная вещь, кмк
в рекорде такое поведение Create не воссоздать, поэтому мух от котлет надо отделить
источник

D

Darlok(Artem) in Delphi & Lazarus
zamtmn
да, ты чтото непонимаешь
»Я бы даже дополнил что иногда это плохая практика
плохая, но иногда по другому не сделать
🤣 "плохая, но иногда по другому не сделать". Боже-боже. Если приходится прибегать к таким действиям значит проблема изначально в не понимании принципов работы класса/компонента. Может в таком случае стоит немного пойти назад и посмотреть как с этим работают другие, а не городить свой забор?
источник

D

Darlok(Artem) in Delphi & Lazarus
zamtmn
в рекорде такое поведение Create не воссоздать, поэтому мух от котлет надо отделить
Вики не согласна
источник

D

Darlok(Artem) in Delphi & Lazarus
источник

ED

Ed Doc in Delphi & Lazarus
zamtmn
А если я у классов буду конструкторы init называть?
Не забудь переименовать все деструкторы у таких конструкторов в Done 😊
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
🤣 "плохая, но иногда по другому не сделать". Боже-боже. Если приходится прибегать к таким действиям значит проблема изначально в не понимании принципов работы класса/компонента. Может в таком случае стоит немного пойти назад и посмотреть как с этим работают другие, а не городить свой забор?
Такие действия иногда bydesign и совсем не от непонимания
источник

ED

Ed Doc in Delphi & Lazarus
Darlok(Artem)
Я бы даже дополнил что иногда это плохая практика, вызывать конструктор у существующего объекта, т.к. можно успешно перекрыть внутренние ранее созданные объекты тем самым сделав, как минимум, утечку или вообще непредвиденные ошибки из-за нарушенной ссылочности. По хорошему в конструкторе создаются критически важные объекты("Я тебя породил. я тебя и убью" (с) Тарас Бульба) и инициализируются поля в дефолтные значения ('', 0, false, и т.д.), а вот дальнейшее заполнение чем-то другим должно ложиться на плечи того кто создаёт этот объект. Сам по себе Create подразумевает что будет проведена предварительная подготовка создаваемого экземпляра, а потому Init следом за Create выглядит не нужным. Может я чего-то не понимаю, но весь дискус с самого утра выглядит так: "мне не нравится слово Create и я хочу использовать свои костыли что бы другие не поняли что тут происходит и ненавидели меня ещё больше".
Вот категорически согласен 😊
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
Вики не согласна
ну и гдже тут и создание и пересоздание?
источник

D

Darlok(Artem) in Delphi & Lazarus
zamtmn
ну и гдже тут и создание и пересоздание?
источник

z

zamtmn in Delphi & Lazarus
ок. "пересоздание" ты подчеркнул желтым. подчеркни красным "создание"
источник

D

Darlok(Artem) in Delphi & Lazarus
Мне кажется всё сводится к тому что происходят попытки "натянуть сову на глобус", т.е. в рекорде воспроизвести возможности класса. Create, Destroy и т.д. Но при этом не нести ответственности  за сам объект. Типо "ну вот я его создал, поработал, а дальше пусть он сам умрёт". Поправьте меня если я не прав
источник

z

zamtmn in Delphi & Lazarus
Darlok(Artem)
Мне кажется всё сводится к тому что происходят попытки "натянуть сову на глобус", т.е. в рекорде воспроизвести возможности класса. Create, Destroy и т.д. Но при этом не нести ответственности  за сам объект. Типо "ну вот я его создал, поработал, а дальше пусть он сам умрёт". Поправьте меня если я не прав
поправляю. ты неправ
источник

z

zamtmn in Delphi & Lazarus
TDummyAdvRec=record
 constructor Init();
 class function Construct():TDummyAdvRec;static;
end;
тут 2 метода. первыйц присваивает значение существующей сущьности. второй возвращает новую инициализированную сущьность. пожалуйста на своем скрине обведи подобное их желтым и красным
источник

HG

Hemul GM in Delphi & Lazarus
источник