2013-03-14 1 views
1

У некоторых коллег, теперь ушедших, была привычка добавлять новые классы в соответствующий файл класса.Если у меня есть несколько классов в одном файле, есть ли инструмент для их создания в отдельные файлы?

Это делает рефакторинг болезненным.

Есть ли инструмент, возможно, в XCode или AppCode или просто простой скрипт, который будет разделять эти файлы монстров?

ответ

0

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

Приложение запросит просмотр файла, и оно будет искать @interface.... @end and @implementation .... ~ @ end` и создаст файл из этого файла. Если один файл содержит два класса, то он приведет к файлам (два заголовка и две реализации). Затем исходный файл можно удалить вручную или автоматически.

Я думаю, что эта выше задача может быть завершена за несколько часов.

Здесь вы можете сохранить исходный файл в папке, на случай, если хотите откат.

+1

Это не совсем ответ. Он игнорирует сложности управления, определяет и включает, не говоря уже о протоколах. Также это действительно не кандидат для приложения GUI. Последняя строка «Здесь вы можете пойти, чтобы сохранить исходный файл в папке, на случай, если вы хотите откат». немного беспокоит. Мы используем систему контроля версий. Нет необходимости создавать резервные копии кода другими способами. –

+0

@alexbird: Да, я согласен, там есть SVN и RCS. Но в старых XCode он отсутствовал. –

+0

Anoop - вам не нужно иметь контроль над версиями, встроенный в XCode. Для них много графических интерфейсов, и, конечно же, командной строки. –

1

Похоже, что есть инструмент для этого в AppCode, но он только полуавтоматизирует процесс.

Я использую AppCode 2.0, я не знаю, доступен ли тот же инструмент в AppCode 1.x.

Чтобы извлечь один класс из файла в новый файл, щелкните правой кнопкой мыши строку @interface или @implementation и выберите «Рефакторинг»> «Переместить». В качестве альтернативы нажмите F6 на этой линии. Теперь вы можете ввести новое имя файла, хотя вы, вероятно, захотите скопировать + вставить имя класса здесь. На этом этапе вы также можете выбрать любые определения, которые хотите переместить.

Я проделал некоторую работу над скриптом, чтобы извлечь все классы в файл. Я хотел бы поделиться этим однажды, когда у меня появится шанс удалить код наших клиентов из модульных тестов!

Смежные вопросы