Size: a a a

2020 March 06

VA

Viktor Akselrod in Delphi & Lazarus
Геннадий Малинин
Никогда у меня отладчик не "путал" значения. Это абсурд.
Тем более, что я больше с with работаю, т.к. вы его не используете.
🙂 ок
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Alexander Ivanov
А если произойдут проблемы с памятью и Create возвратит nil - привет AV.
Так и без проверки каждого отдельно тоже
источник

VA

Viktor Akselrod in Delphi & Lazarus
Alexander Ivanov
А если произойдут проблемы с памятью и Create возвратит nil - привет AV.
там сборник антипримеров, если уж быть откровенным
источник

GB

George Bakhtadze in Delphi & Lazarus
Геннадий Малинин
А какие проблемы с отладкой?
Читаемость кстати тоже в порядке. Но, дело вкуса
проблемы конкретного отладчика это, конечно, его проблемы, но твой пример как раз о том, как не надо использовать with :)
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
George Bakhtadze
проблемы конкретного отладчика это, конечно, его проблемы, но твой пример как раз о том, как не надо использовать with :)
Да аргументируйте же
источник

GB

George Bakhtadze in Delphi & Lazarus
Геннадий Малинин
Да аргументируйте же
аргументы привели уже - засорение неймспейса одинаковыми именами, как следствие трудность при чтении понимать без помощи IDE к какому конкретно идентификатору идет обращение. Опасность при изменении чего-либо в неймспейсе, являющемся аргументом with, получить трудноуловимый баг
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
George Bakhtadze
аргументы привели уже - засорение неймспейса одинаковыми именами, как следствие трудность при чтении понимать без помощи IDE к какому конкретно идентификатору идет обращение. Опасность при изменении чего-либо в неймспейсе, являющемся аргументом with, получить трудноуловимый баг
Если придерживаться правил, диктующихся здравым смыслом, то проблем не будет.
Например:  я не использую методы из вышестоящего with, всегда только текущего.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
"как следствие трудность при чтении понимать без помощи IDE к какому конкретно идентификатору идет обращение" - отпадает
источник

GB

George Bakhtadze in Delphi & Lazarus
Геннадий Малинин
Если придерживаться правил, диктующихся здравым смыслом, то проблем не будет.
Например:  я не использую методы из вышестоящего with, всегда только текущего.
слишком легко ошибиться. в подсказках-то идентификаторы из всех уровней (ну, должны быть ;) )
источник

VA

Viktor Akselrod in Delphi & Lazarus
Геннадий Малинин
"как следствие трудность при чтении понимать без помощи IDE к какому конкретно идентификатору идет обращение" - отпадает
одно дело, когда ты придумал себе правила и живешь по ним (и не факт, что через месяц ты не придумаешь уже по другому), а другое - общепринятые практики, выработанные профессионалами годами
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Обычно, я делаю так
Пример:
with SomeObject do
...
Если нужно что-то посмотреть
with SomeObject.<тут подсказки> do
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
George Bakhtadze
слишком легко ошибиться. в подсказках-то идентификаторы из всех уровней (ну, должны быть ;) )
Я никогда не использую подсказки внутри with, если точно не знаю название метода
источник

GB

George Bakhtadze in Delphi & Lazarus
Геннадий Малинин
Я никогда не использую подсказки внутри with, если точно не знаю название метода
т.е. с твоим кодом можно только тебе работать? не зная всего сонма правил будет сложно :)
источник

ГМ

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

VA

Viktor Akselrod in Delphi & Lazarus
Геннадий Малинин
Ну чего их придумывать. Использовать многоуровневый with и внутри with обращаться к методам внешнго - это так себе идя.
нет проблем, продолжай.
у меня больше нет аргументов 🙂
источник

GB

George Bakhtadze in Delphi & Lazarus
Геннадий Малинин
Ну чего их придумывать. Использовать многоуровневый with и внутри with обращаться к методам внешнго - это так себе идя.
плюс никогда не использовать то, что подсказывает IDE внутри with. сложновыполнимое правило, если подумать
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
George Bakhtadze
плюс никогда не использовать то, что подсказывает IDE внутри with. сложновыполнимое правило, если подумать
Ну ты же должен убедиться, что метод принадлежит именно тому объекту, к которому ты хочешь обратиться.
Такая же проблема существует и без with. В каждом методе формы.
Т.к. по умолчанию ты обращаешься к форме. А если with Label1 do
То Caption уже не формы. Ну ты понял
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Стоит отменить, что я использую многоуровневые with только при подобных построениях.
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Я не злоупотребляю with
источник

ГМ

Геннадий Малинин in Delphi & Lazarus
Ещё например, использую with при конструировании запросов
источник