изменение имени класса во время разработки

Я нахожусь в ситуации, когда у меня есть класс «прогресс» - проблема в том, что я заинтересован во включении некоторого открытого исходного кода, который также имеет класс «прогресс». Я очень смутно помню некоторую ссылку на приложение, которое может проверять различные файлы в разработке на предмет заданного имени класса ... и либо возвращать его ..., либо изменять его. У вас есть опыт этого?

Спасибо

15.12.2008 20:39:21
3 ОТВЕТА

Многие IDE (например, Eclipse) могут делать это, но для Java это более распространено, чем для PHP. Из-за динамической природы переменных PHP для IDE немного сложнее точно знать, что нужно изменить. Например, вы можете сделать это:

$name = "prog";
$name .= "ress";
$cls = new $name();

Среда IDE должна была бы на самом деле запустить ваше приложение, чтобы знать, что $ name содержит «progress» в данный конкретный момент. Даже тогда не было бы способа автоматически исправить это.

К сожалению, вы застряли с поиском и заменой. Не волнуйтесь, хотя; изменение имен классов во время разработки - это хорошо. Это заставляет вас переосмыслить именно то, для чего предназначен этот класс.

0
15.12.2008 20:44:04

Некоторые языки (C ++, C #) имеют понятие пространства имен. У Java есть пакеты. Python имеет модули. Они предназначены для предотвращения конфликта имен классов. Предположим, вы говорите о Java, класс с открытым исходным кодом «Progress», вероятно, находится в своем собственном пакете, а ваш «Progress» - в вашем собственном пакете. Так что, возможно, у вас нет проблем, как вы думали.

Сказав это, я предполагаю, что вы спрашиваете о функции в IDE, которая называется рефактором, которая позволит вам изменять имя вашего класса везде, где есть ссылки или зависимости от него.

2
15.12.2008 20:48:10

Всегда ставьте имена классов перед аббревиатурой продукта / проекта. Почему бы не использовать TextPad для замены всех вхождений? Таким образом, вы не будете смущены в будущем, какой это класс. Я также рекомендовал бы использовать технику пространства имен / пакета, но это заставило бы вас переписать много кода, который я предполагаю.

http://en.wikipedia.org/wiki/Code_refactoring Приведенная выше ссылка содержит несколько инструментов, используемых для рефакторинга.

0
15.12.2008 20:57:29