Модераторы: THandle, bems

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна идея, Нужно сделать и быстро но нет идеи 
:(
    Опции темы
k0rvin
Дата 11.3.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



Цитата(bems @ 11.3.2010,  20:37)
k0rvin, нет, нельзя. Собственно поскольку оказалось что with работает правильно, то значит его проблема в другой плоскости. Имхо проблемы и нет вовсе, но нужно раскрыть причину его упоминания здесь. Сейчас нарою ссылку.

я имел в виду, что можно закрыть вопрос конкретно по моей претензии, не более =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
bems
Дата 11.3.2010, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



Ну да, у кого бы я еще мог это видеть smile
Вот цитатка
Цитата(CodeMonkey)
Скажите, вот если вы в класс добавляете метод, которого нет ни у него, ни у его предков, вы ведь не ожидаете ничего плохого, верно?

А проблема тут в том, что with смешивает в одну кучу методы текущего класса и класса в with.

Написали вы:

with TSomeClass.Create do
try
...
Show;
...
finally
Free;
end;

Подразумевая, Show - это метод формы. А автор класса TSomeClass потом решил, что было бы неплохо добавить возможность скрытия своих объектов, без удаления. И ввёл Show, Hide и Visible.
Вполне, казалось бы, безобидные изменения, верно? Да вот только теперь ваш код не работает, и попробуйте найти ошибку!




--------------------
Обижено школьников: 8
PM MAIL   Вверх
k0rvin
Дата 11.3.2010, 20:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



[QUOTE=profesiachuvak,5.3.2010,  18:14]
Цитата(CodeMonkey @  5.3.2010,  11:06 Найти цитируемый пост)

Фор-ла такая :   ЛАПША = GOTO <=> GOTO = ЛАПША. Проводить доказательство?

вообще не совсем корректная формула, лапша = (в том числе и goto)

например некоторые товарищи утверждают, что с помощью продолжений (continuations) можно довольно легко написать гораздо более запутанный код, чем тот, что может позволить использование goto =)


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
bems
Дата 11.3.2010, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



Цитата(k0rvin @  11.3.2010,  20:45 Найти цитируемый пост)
вообще не совсем корректная формула, лапша = (в том числе и goto)
Но в то же время и goto = (и лапша тоже) smile



--------------------
Обижено школьников: 8
PM MAIL   Вверх
k0rvin
Дата 11.3.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



Цитата(bems @ 11.3.2010,  20:43)
Ну да, у кого бы я еще мог это видеть smile
Вот цитатка
Цитата(CodeMonkey)
Скажите, вот если вы в класс добавляете метод, которого нет ни у него, ни у его предков, вы ведь не ожидаете ничего плохого, верно?

А проблема тут в том, что with смешивает в одну кучу методы текущего класса и класса в with.

Написали вы:

with TSomeClass.Create do
try
...
Show;
...
finally
Free;
end;

Подразумевая, Show - это метод формы. А автор класса TSomeClass потом решил, что было бы неплохо добавить возможность скрытия своих объектов, без удаления. И ввёл Show, Hide и Visible.
Вполне, казалось бы, безобидные изменения, верно? Да вот только теперь ваш код не работает, и попробуйте найти ошибку!

мда, действительно неприятность. видимо стоит отказаться от использования with и юзать "переменные-псевдонимы"

Добавлено @ 20:59
хотя по большому счёту проблема здесь не в with, а в кривых руках автора TSomeClass, который меняет интерфейс класса.
нужно было вначале писать интерфейс и в будущем не отступать от него, в крайнем же случае, если без изменения интерфейса никак -- создавать новый класс

Это сообщение отредактировал(а) k0rvin - 11.3.2010, 21:00


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
bems
Дата 12.3.2010, 03:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



Ну прям и интерфейс не дополнить


--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 12.3.2010, 10:49 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Ну, вообще-то при разработке класса (class) не менять интерфейс - это перебор. Классы живут и развиваются очень динамично (рефакторинг и т.п.). А вот при разработке интерфейсов (interface) это - обязательное правило. Как только вы закончили разработку, интерфейс более не меняется. Иначе будут происходить страшные вещи.

У with не было бы вообще никаких проблем, если бы он требовал использования алиасов. А так - это бомба с часовым механизмом, которая может взорваться при совершенно безобидных действиях.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
k0rvin
Дата 12.3.2010, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



Цитата(CodeMonkey @ 12.3.2010,  10:49)
Ну, вообще-то при разработке класса (class) не менять интерфейс - это перебор. Классы живут и развиваются очень динамично (рефакторинг и т.п.).

1) а не нужно классы разрабатывать, нужно разрабатывать интерфейсы (и/или интерфейсы (interface), а классы нужно реализовывать согласно интерфейсам/интерфейсам

2) в паскале/делфи классы не живут и не развиваются, а являются статичными объектами (объектами не в смысле экземплярами классов, а в более общем смысле =))


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
CodeMonkey
Дата 14.3.2010, 00:47 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



user posted image
Neal Stephenson thinks it's cute to name his labels 'dengo'.

Это сообщение отредактировал(а) CodeMonkey - 16.3.2010, 09:30


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 14.3.2010, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



"Alt" attribute, mothefucker! Do you use it!?

Добавлено через 2 минуты и 13 секунд
Цитата(k0rvin @  12.3.2010,  19:03 Найти цитируемый пост)
в паскале/делфи классы не живут и не развиваются, а являются статичными объектами
Статичными во время выполнения. по ходу жизненного цикла проекта они развиваются еще как.

Добавлено через 5 минут и 37 секунд
Цитата(CodeMonkey @  12.3.2010,  10:49 Найти цитируемый пост)
А так - это бомба с часовым механизмом, которая может взорваться при совершенно безобидных действиях.
Как я люблю эту категоричность smile
С умом нужно, и эти случаи будут не частыми.


Это сообщение отредактировал(а) bems - 14.3.2010, 17:26


--------------------
Обижено школьников: 8
PM MAIL   Вверх
CodeMonkey
Дата 15.3.2010, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1839
Регистрация: 24.6.2008
Где: Россия, Тверь

Репутация: 4
Всего: 89



Цитата(bems @  14.3.2010,  17:25 Найти цитируемый пост)
С умом нужно, и эти случаи будут не частыми.

Да, такое случается не часто. Проблема в том, что вы не можете это контролировать. В случае с goto - вы всегда можете предотвратить его плохой эффект. В случае с with - нет.
Вы установили новую версию компонента и теперь ваша программа с кучей with странно себя ведёт.
Удачи вам отладить это.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
bems
Дата 15.3.2010, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 2
Всего: 88



CodeMonkey, а то что было в alt хоть внизу подпиши.


--------------------
Обижено школьников: 8
PM MAIL   Вверх
k0rvin
Дата 16.3.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



Цитата(bems @ 14.3.2010,  17:25)
Цитата(k0rvin @  12.3.2010,  19:03 Найти цитируемый пост)
в паскале/делфи классы не живут и не развиваются, а являются статичными объектами
Статичными во время выполнения. по ходу жизненного цикла проекта они развиваются еще как.

они должны это делать только на стадии проектирования, никак не на стадии реализации. конечно это идеальный случай, а практика далека от идеала. поэтому я пожалуй соглашусь с обезьянкой, with с обязательным использованием алиасов -- оптимальное решение.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Akella
Дата 17.3.2010, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 7
Всего: 329



Цитата(k0rvin @  16.3.2010,  18:22 Найти цитируемый пост)
with с обязательным использованием алиасов -- оптимальное решение. 

А зачем тогда with?
Ведь назначение with - это упрощение кода?
PM MAIL   Вверх
k0rvin
Дата 17.3.2010, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 0
Всего: 5



Цитата(Akella @ 17.3.2010,  11:19)
Цитата(k0rvin @  16.3.2010,  18:22 Найти цитируемый пост)
with с обязательным использованием алиасов -- оптимальное решение. 

А зачем тогда with?
Ведь назначение with - это упрощение кода?

Код

with SomeObject as o do begin
  o.Method1;
  o.Method2;
  ...
end;

всяко проще, чем без него


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Страницы: (8) Все « Первая ... 4 5 [6] 7 8 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle

Добро пожаловать в форум группы "Delphi".

В разделе разрешается:

  • Флудить (в приемлемых величинах)
  • Обсуждать модерирование данного раздела (но не его модератора)
  • Добавлять свои правила если они не противоречат существующим
  • Делать наезды на пешеходов***

Строго запрещено:

  • Размещать рекламу
  • Совершать оскорбления личностей
  • Материться
  • *** Пешеходами не являются (ко)модераторы, админы, участники клуба.

Если Вам понравилась атмосфера форума, заходите к нам чаще! Люблю, целую, вечно Ваш, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Форум группы: delphi | Следующая тема »


 




[ Время генерации скрипта: 0.1068 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.