Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.08.31;
Скачать: CL | DM;

Вниз

uses необходимое   Найти похожие ветки 

 
Константин   (2007-12-14 11:07) [0]

Есть большое многомодульное приложение.
Есть ли какая-нить приблуда, которая может показать какие модули можно убрать из Uses в interface  и перенести их в implementation или вообще удалить. Также она должна показать, что в implementation такой-то модуль скажем не нужен.


 
Anatoly Podgoretsky ©   (2007-12-14 11:11) [1]

> Константин  (14.12.2007 11:07:00)  [0]

Руки, поскольку технической возможности сделать это одназначно нет.


 
Семен Сурков   (2007-12-14 11:22) [2]

Есть такая. Игорь Шевченко советовал когда-то в форумен. Но название убей не помню.

Смотрел ее. Кривенько, но в целом работает.


 
Anatoly Podgoretsky ©   (2007-12-14 11:26) [3]

> Семен Сурков  (14.12.2007 11:22:02)  [2]

Таких нет, есть кривенькие.


 
Семен Сурков   (2007-12-14 11:32) [4]

Теоретически ничего в таком функционале сложного нет. Есть же в D2007 rename refactoring, есть find refenrece. Работает в подавляющем большинстве случаев правильно. На этом функционале вполне можно построить требуемое. Может и появится такое, как элемент группы refactoring.


 
Константин   (2007-12-14 11:42) [5]

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


 
Anatoly Podgoretsky ©   (2007-12-14 11:44) [6]

> Константин  (14.12.2007 11:42:05)  [5]

Руками как раз удается, а вот автоматом нет, и часто об этом узнаешь поздно.


 
Константин   (2007-12-14 12:07) [7]

Если так, то тогда все сделаю аккуратно руками, т.к. главное это понимать что куда надо перенести и почему. Только тогда есть вероятность правильно работы программы.


 
Anatoly Podgoretsky ©   (2007-12-14 12:13) [8]

> Константин  (14.12.2007 12:07:07)  [7]

Многие ты сразу поймешь, превратив в комментарий и попробов переместить в другую секцию. Или автоматом добавит или обругает.
А вот по некоторым нет, и не добавит и не обругает, но это не означает нужен модуль или нет.
Наглядный пример XPMan - на него нет никаких ссылок в коде, тоже и по другим ресурсным ДЛЛ


 
@!!ex ©   (2007-12-14 14:36) [9]

> [8] Anatoly Podgoretsky ©   (14.12.07 12:13)

Ладно еще XMan...
А если какой то класс описан в двух модулях с разными реализациями, но ондим именем.(Так, например сделан TBitMap. Он есть в Windows и в Graphics. Правда там общего только имя, поэтому такое быстро ловится, а если нет?)


 
Anatoly Podgoretsky ©   (2007-12-14 14:43) [10]

> @!!ex  (14.12.2007 14:36:09)  [9]

Это нормально, обычное пространство имен, полиморфизм на уровне модулей.


 
@!!ex ©   (2007-12-14 14:48) [11]

> [10] Anatoly Podgoretsky ©   (14.12.07 14:43)

Я к тому, что и не определишь, какой unit нужен, а какой нет.
Разве что писать анализатор практически идеентичный Дельфевому.


 
guav ©   (2007-12-14 14:54) [12]

ICARUS


> Возникновение такого кода говорит о непорядке при программирвоании
> на языке паскаль...

Настоящий беспорядок можно сделать сишными хидерами, с паскалевскими модулями как раз полный порядок.


 
Anatoly Podgoretsky ©   (2007-12-14 15:04) [13]

> @!!ex  (14.12.2007 14:48:11)  [11]

А в этом случае наличие модуля не является признаком работоспособности.

Попробуй

uses
 Windows,
 Graphics

и

uses
 Graphics,
 Windows,

Ты путаешь мух с котлетами, и видимо не умеешь работать с каноническими именами.


 
@!!ex ©   (2007-12-14 15:26) [14]

> [13] Anatoly Podgoretsky ©   (14.12.07 15:04)

Я в курсе, что последовательность юнитов имеет значение, и что идентификатор берется из последнего определенного модуля в uses, я тоже в курсе. И что обращаться можно как Windows.TBitMap или Graphics.TBitMap, тоже не вопрос.
Вопрос в том, как анализировать чего хочет юзер?


 
Anatoly Podgoretsky ©   (2007-12-14 15:31) [15]

> @!!ex  (14.12.2007 15:26:14)  [14]

Что бы понятнее, вот пример

unit1
const
 abc = 1;

unit2
const
 abc = 17;

unit3
 Var = abc;

Что хочет пользователь?
Вот он и должен явно указать, тогда можно определить нужный модуль.
А вот с ресурсными DLL невозможно и XPMan это доказал.


 
Игорь Шевченко ©   (2007-12-17 11:28) [16]

на http://www.peganza.com искать Icarus - довольно неплохо работает


 
Anatoly Podgoretsky ©   (2007-12-17 12:41) [17]


> на http://www.peganza.com искать Icarus - довольно неплохо
> работает

Надеюсь он не автоматом удаляет?


 
Игорь Шевченко ©   (2007-12-17 13:20) [18]

Anatoly Podgoretsky ©   (17.12.07 12:41) [17]

Нет конечно. Он рассказывает, какие по его мнению модули надо из interface перенести в implementation, а какие удалить вообще. Но любое удаление остается на совести человека. Вообще достаточно разумный инструмент в смысле определения лишних объявлений в uses.



Страницы: 1 вся ветка

Текущий архив: 2008.08.31;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.015 c
8-1184845530
ZMRaven
2007-07-19 15:45
2008.08.31
Захват


1-1197016344
@!!ex
2007-12-07 11:32
2008.08.31
Положение окна на экране(Z)


10-1147542762
RUNaum
2006-05-13 21:52
2008.08.31
Как понять что ActiveX в "design-time"?


2-1216705568
kukuikar
2008-07-22 09:46
2008.08.31
Как подключить удаленный реестр?


2-1216986372
navigator1
2008-07-25 15:46
2008.08.31
Файл в константу