Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   В чём Вы пишете??? (https://javascript.ru/forum/offtopic/21242-v-chjom-vy-pishete.html)

Kolyaj 08.11.2011 13:14

Цитата:

Сообщение от x-yuri
Например, если я захочу переименовать компонент, оно же за меня это не сделает?

Сделает, она же с кодом работает, а не с текстом. Текстовый редактор не сможет переименовать переменную, а IDE сможет. Другое дело, что в JavaScript-е всё достаточно плохо с глобальными переменными и со свойствами, поэтому их крайне аккуратно надо переименовывать, но с локальными переменными проблем нет.

Цитата:

Сообщение от x-yuri
А если в процессе рефакторинга (поиска) я наткнусь еще на какую-то проблему и решу сделать еще один поиск, я же не смогу отложить результаты этого поиска в phpstorm, чтобы потом к ним вернуться?

Процесс рефакторинга автоматический, там не надо всё просматривать, иначе это replace, а не рефакторинг.

x-yuri 08.11.2011 19:11

Цитата:

Сообщение от Kolyaj
Сделает, она же с кодом работает, а не с текстом. Текстовый редактор не сможет переименовать переменную, а IDE сможет.

вообще я имел в виду переименовать название класса и css-селекторы исправить. С первым наверное проблем быть не должно. А со вторым? Или например, переименовать поле БД, которое в частности передается на клиент js-коду.

Цитата:

Сообщение от Kolyaj
Другое дело, что в JavaScript-е всё достаточно плохо с глобальными переменными и со свойствами, поэтому их крайне аккуратно надо переименовывать, но с локальными переменными проблем нет.

думаю, в любом языке, где есть eval. Но что значит "крайне аккуратно"? Поиск/замена? А локальную переменную и в текстовом редакторе легко изменить.

B~Vladi 08.11.2011 22:02

Цитата:

Сообщение от x-yuri
css-селекторы исправить

При правильной настройке IDEA подсветит неизвестные классы (может и переименует, не пробовал) и предложит их создать, с выбором файла. Это конечно если файл стилей будет подключен не через жопушаблонизатор или ещё как.

Не стоит забывать, что все IDE выполняют только статический анализ кода, отсюда много ограничений. Ну и ещё ограничения накладываются языком, о чем писали выше. Но это не значит, что ЯП должен создаваться под IDE (один из плюсов Dart-а). Под кодера - да.
В любом случае это лучше, чем работать с текстом :)

Kolyaj 08.11.2011 22:10

Цитата:

Сообщение от x-yuri
вообще я имел в виду переименовать название класса и css-селекторы исправить. С первым наверное проблем быть не должно. А со вторым? Или например, переименовать поле БД, которое в частности передается на клиент js-коду.

Если переименовать CSS-класс, селекторы должны поправиться, о связке CSS-HTML IDE знает. А вот о том, как ты связываешь поля БД с js-кодом IDE знать не может. Разумеется, если у тебя есть чёткая идеология, можно плагин соответствующий написать.


Цитата:

Сообщение от x-yuri
Но что значит "крайне аккуратно"? Поиск/замена?

Например, есть у тебя два файла, которые никогда не подключаются вместе на одну страницу. В каждом файле есть переменная varName. Получается, что это две разных переменных, но они обе глобальные, поэтому переименовывая одну, переименуешь другую. Хотя в целом в WebStorm это всё нормально работает, я просто не доверяю ей до конца.


Цитата:

Сообщение от x-yuri
А локальную переменную и в текстовом редакторе легко изменить.

Поиск/замена? Давай представим переменную i, которую нужно переименовать. И функция всего на 50 строк. В результате всё равно будешь выискивать глазами её. И хорошо если все использования найдёшь, текстовый редактор тебе не покажет переменную, у которой не было var, в отличие от IDE.

А без таких функций, как go to declaration и find usages совсем плохо.

x-yuri 09.11.2011 01:25

Цитата:

Сообщение от B~Vladi
При правильной настройке IDEA подсветит неизвестные классы (может и переименует, не пробовал) и предложит их создать, с выбором файла.

в смысле?

Цитата:

Сообщение от B~Vladi
Но это не значит, что ЯП должен создаваться под IDE (один из плюсов Dart-а).

не понял, в чем заключается плюс

Цитата:

Сообщение от Kolyaj
Давай представим переменную i, которую нужно переименовать. И функция всего на 50 строк. В результате всё равно будешь выискивать глазами её. И хорошо если все использования найдёшь, текстовый редактор тебе не покажет переменную, у которой не было var, в отличие от IDE.

в текстовом редакторе это просто будет немного сложнее, хотя от редактора зависит. Например, в vim заменить эту переменную на j можно так: *Nsjn.n.n.n. При этом будет подсветка найденных строк. Использования найду все. Про не было var не понял, мы же про локальную переменную говорим. А собственно, можешь сказать, какой именно рефакторинг возможен/можно доверять в phpstorm?

Цитата:

Сообщение от Kolyaj
Процесс рефакторинга автоматический, там не надо всё просматривать, иначе это replace, а не рефакторинг.

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

Цитата:

Сообщение от Kolyaj
А без таких функций, как go to declaration и find usages совсем плохо.

go to declaration... вряд ли, разве что для чужого кода. find usages... может быть. Но это уже что-то близкое к поиску с семантикой и это бы не помешало. Все время забываю попробовать рефакторинг и поиск в phpstorm для каких-то более менее сложных задач...

вообще, понять что важно, а что просто приятно, можно перестав этим пользоваться на значительное время. Cемантика при поиске по проекту - это важно :)

monolithed 09.11.2011 08:40

Цитата:

Сообщение от Kolyaj
Автосохранение это идеология.

Возможн это дело привычки, нр все же возможность отключения должна быть.
К примеру, в файле, я могу что-то править, но сохранять не буду (помню что не нажимал Ctrl+S), потом без всякой мысли переношу этот файл в другом редакторе (например в FAR), на сервер по SSH, а там сохранено, то что я не планировал сохранять.

Конечно можно из WebStorm по SFTP загружать файлы, но мне пока удобней раздельно это делать, т.к. есть есть файлы (например С++), с которыми я работаю в другом редакторе. Может кагда-нибудь все автоматизирую))

Я бы понял если бы после закрытия проекта, команды Ctrl+Z/Ctrl+Y(Ctrl+Shift+Z) работали как в Mac, но тут то не так, нужно лезть в историю проекта или же коммитить каждую мелочь.

Kolyaj, а как сделать refresh path, т.е. пересканирование файлов в одной из директорий проекта?

Kolyaj 09.11.2011 09:14

Цитата:

Сообщение от x-yuri
Например, в vim заменить эту переменную на j можно так: *Nsjn.n.n.n.

Я не понял, что это значит :) Это решит проблему, что вокруг полно букв i, которые не относятся к этой переменной?


Цитата:

Сообщение от x-yuri
Про не было var не понял, мы же про локальную переменную говорим.

Если мы локальную переменную i заменим на j, а в одном месте забудем переименовать, то в том месте образуется глобальная переменная i.
Ещё я очень часто вижу такое
var var1 = '',
    var2 = '',
    var3 = '';

Которое после нескольких добавлений/удалений переменных в каком-нибудь Notepad++ превращается в
var var1 = '',
    var4 = '';
    var5 = '';
Storm тут засветится всякими неприятными цветами, Notepad++ не поймёт, что здесь ошибка, и заметить её будет проблематично.


Цитата:

Сообщение от x-yuri
go to declaration... вряд ли, разве что для чужого кода.

Для чужого само собой. Но и в своём всегда приятней нажать на имя функции и перейти к её определению, чем сначала найти нужный файл, а потом найти нужное место в этом файле. А можно просто нажать на функции Ctrl+Shift+I и Storm покажет исходники функции, не переходя к ней.
Советую посмотреть файл Default keymap reference, там много интересных сочетаний клавиш есть.


Цитата:

Сообщение от x-yuri
А собственно, можешь сказать, какой именно рефакторинг возможен/можно доверять в phpstorm?

Что возможно -- можно посмотреть в меню Refactor. Я активно пользуюсь Rename variable, Inline variable и вроде всё из рефакторинга. Хотя если в Storm-е переименовать CSS-файл, например, то пути к нему в HTML-файлах сами поменяются.

Kolyaj 09.11.2011 09:16

Цитата:

Сообщение от monolithed
К примеру, в файле, я могу что-то править, но сохранять не буду (помню что не нажимал Ctrl+S), потом без всякой мысли переношу этот файл в другом редакторе (например в FAR), на сервер по SSH, а там сохранено, то что я не планировал сохранять.

Это вообще что-то странное: что-то писал, но сохранять не собирался.

Цитата:

Сообщение от monolithed
Kolyaj, а как сделать refresh path, т.е. пересканирование файлов в одной из директорий проекта?

Ctrl+Alt+Y пересканирует обычно, но он это всегда по тихому делает, так что и непонятно, делает ли.

monolithed 09.11.2011 09:31

Цитата:

Сообщение от Kolyaj
Это вообще что-то странное: что-то писал, но сохранять не собирался.

Ну бывает так особенно под конец рабочего дня)
Цитата:

Сообщение от Kolyaj
Ctrl+Alt+Y пересканирует обычно

Спс, поиск в настройках это действительно круто, нигде такого не видел!
Цитата:

Сообщение от Kolyaj
но он это всегда по тихому делает, так что и непонятно, делает ли.

Ну не сразу это точно)

Gozar 09.11.2011 10:25

monolithed,
Галка:
Сохраняем на сервер автоматически: Deployment>Options>Upload changed files automatically to ...
Галки: General>Synchronization
Синхронизайя файлов при активации фрейма и сохранение файла при деактивации фрейма


Часовой пояс GMT +3, время: 19:54.