![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перекрестные ссылки [D7, WinXP]
Andrushk © (2005-09-14 13:13:00)У нас на работе считается плохим стилем использовать перекрестные ссылки между модулями. Никто толком не знает что в них плохого, но глюки часто списывают на них:-)
Хотелось бы услышать мнение человека, который четко представляет проблему, есть какие-то негативные последствия использования перекрестных ссылок в модулях?
Заранее спасибо.
Суслик (2005-09-14 19:08:00) [1]Хотя почитать есно полезно
Суслик (2005-09-14 19:07:00) [2]на самом деле не совсем :)
фаулер он все-таки javист, а там несколько другие принципы организации. Например перекрестные ссылки пакетов допустимы. В дельфи нет.
Поэтому в дельфи имхо несколько другие принципы и подходы.
Игорь Шевченко (2005-09-14 19:04:00) [3]Суслик © (14.09.05 19:02) [42]
> суров...
Но справедлив.
Anatoly Podgoretsky (2005-09-14 19:03:00) [4]У вас проблемы не с перекрестными ссылками, а гораздо хуже.
И если вы не исправитель, то дальше будет еще хуже.
Суслик (2005-09-14 19:02:00) [5]суров...
Игорь Шевченко (2005-09-14 18:42:00) [6]Andrushk (14.09.05 18:32) [39]
> Конечно нет, но при таком количестве датасетов достаточно
> трудно их разделить на независимые группы
Мартин Фаулер: "Рефакторинг или улучшение существующего кода".
Читать.
До полного и окончательного просветления.
Andrushk (2005-09-14 18:38:00) [7]2 Суслик © (14.09.05 18:12) [37]
Мы кстати тоже их стали использовать.
И дата-модули разделили на: Документы, Справочники и Процедуры - три пакета.
Возможно благодаря этому ни у кого больше не возникает желания юзать из дата-модуля другие формы:-)
Andrushk (2005-09-14 18:32:00) [8]2 Игорь Шевченко © (14.09.05 18:06) [36]
Конечно нет, но при таком количестве датасетов достаточно трудно их разделить на независимые группы, кроме того нет гарантии, что при следующей "дописке" программы независимые датасеты не станут зависимыми:-)
Собсвенно говоря, когда программа была написана,она выглядела вполне прилично и логично (с точки зрения кода). А потом начались дописки и приписки, и начался бардак:-)
Но опятьтаки, это просто пример...мы сейчас поменяли принцип построения программ...просто интересно узнать почему так...
Ну и вообще на будующее, если снова придется воротить такие проекты, как лучше поступить...
Andrushk (2005-09-14 18:25:00) [9]Юрий Зотов © (14.09.05 18:05) [35]
Понятно.
А по поводу датамодуля: можно сгруппировать было, например: справочники и документы...но я объяснял почему не сделали.
Суслик (2005-09-14 18:12:00) [10]Я иногда сам использую такие ссылки. Но сейчас, особенно после внедрения runtime-пакетов, стараюсь писать так, чтобы таких ссылок вообще не было даже косвенных (А ссылается на Б, Б - на В, В на А).
Если придерживаться этого правила, то вынесение кода в runtime пакеты не представляет трудностей. Иначе беда - нужно все переделывать, т.к. runtime пакеты не могут иметь зацикленных ссылок вообще, даже под implementation.
Игорь Шевченко (2005-09-14 18:06:00) [11]Andrushk (14.09.05 18:03) [34]
> Дело в том, что датасеты связаны друг с другом (например
> на afterscroll у одного могут передаваться параметры в другой).
> ..т.е. пришлось бы делать перекрестные ссылки. Поэтому затею
> оставили.
Что, вообще все датасеты (которые не умещаются в 1280х1024) имеют ссылки друг на друга ?
Юрий Зотов (2005-09-14 18:05:00) [12]Прекрестные межмодульные ссылки - сродни goto и не более. Ничего ни плохого, ни хорошего ни в том, ни в другом само по себе не содержитcя, а весь вопрос лишь в том, злоупотреблять ими, или нет. При разумном использовании - why not? Главное - чтобы структура проекта оставалась прозрачной и допускала его безболезненную модификацию, а сами модули были читабельны (это к вопросу о датасетах в два слоя - неужели сразу нельзя было сгруппировать их по их логическому назначению и разместить на разных датамодулях?).
Andrushk (2005-09-14 18:03:00) [13]2 Игорь Шевченко © (14.09.05 17:57) [29]
Я писалал на эту тему.
Дело в том, что датасеты связаны друг с другом (например на afterscroll у одного могут передаваться параметры в другой)...т.е. пришлось бы делать перекрестные ссылки. Поэтому затею оставили.
А когда пошел глюк с отладкой, стали смотреть код, оказалось что перекрестные ссылки всеравно есть, на формы... И глюк списали именно на перекрестные ссылки.
Reindeer Moss Eater (2005-09-14 18:01:00) [14]А то, что прилада не отлаживается с перекрестными ссылками никак не связано.
С таким подходом к проектированию это неудивительно, что не отлаживается.
Reindeer Moss Eater (2005-09-14 17:59:00) [15]Andrushk
Что заело пластинку?
Ты заявил, что у тебя нет никакой зависимости модулей.
Я тебе показал, что у тебя есть жуткая зависимость между модулями.
Как сделать лучше я тебе уже написал сто постов назад.
Игорь Шевченко (2005-09-14 17:59:00) [16]Andrushk (14.09.05 17:25) [23]
> но я вот пытаюсь учиться, а Вы вместо помощи отписываетесь
> чем-то больше похожим на едкие насмешки
Я сильно извиняюсь, а что, самообразование или платные консультации уже отменили ?
Andrushk (2005-09-14 17:58:00) [17]2 Джо © (14.09.05 17:39) [26]
Ага, пасиб, видел в магазине...видимо неспроста взягляд на нее упал:-)
Игорь Шевченко (2005-09-14 17:57:00) [18]
> Так вот пример. В одном из приложений есть у нас датамодуль,
> сколько там наборов данных не считал, но вобщем в разрешении
> 1280x1024 форма занимает весь экран и там датасет на датасете
> лежит, местами в два слоя:-)
А разбить на несколько кто-то не позволяет ?
Andrushk (2005-09-14 17:57:00) [19]2 Reindeer Moss Eater © (14.09.05 17:39) [25]
Ладно объясню, если бы потом какой-то пес не наплодил ссылок на другие модули, то было бы "...все здорово".
Так лучше? Мне казалось что я довольно ясно высказал мысль.
Так что вы можете сказать по поводу почему датамодуль не отлаживается? Ничего? Может тогда оставить сарказм?
Vudu (2005-09-14 17:43:00) [20]Перекрстные ссылки использовать незапрещено и на работу программы они невлияют, просто сейчас считается признаком дурного тона их использовать, из-за трудночитаемости (и более сложной отладки) исходного кода. Я в своих программах (кроме древних бейсиков) их неиспользую