Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.08.31;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.01 c
2-1216889323
Коля-Коля
2008-07-24 12:48
2008.08.31
Зависание


15-1215868746
deadteachers
2008-07-12 17:19
2008.08.31
не открываются диски


4-1195513824
Alx2k
2007-11-20 02:10
2008.08.31
Окно выбора значка


1-1197376743
newbie2
2007-12-11 15:39
2008.08.31
как работает TEvent?


15-1215575465
engine
2008-07-09 07:51
2008.08.31
Поздравляю с победой на ImagineCup





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский