LINUX.ORG.RU
ФорумTalks

О нужности IDE

 ,


0

1

Встретилась в коде недавно такая ситуация (имена и значения изменены):

$a = 1;
$b = $a;
$c += $b;

$b = 2;
...

$a больше нигде не используется. Из чего следует, что код лучше переделать так:

$b = 1;
$c += $b;

$b = 2;
...

Итак, тред о чём. С отловом переменных, которые объявляются и не используются, IDE справлялись прекрасно десятки лет назад. А ловят ли современные IDE подобные ситуации? Конкретный язык в данном контексте не важен.

Откуда оно знает, что ты имел ввиду? Может $b = $a; вызывается ради побочного эффекта, например задержки или чтения из порта?

Bobby_ ()

я правильно понимаю, ты считаешь что именованные константы ненужны?

Rastafarra ★★★ ()
Последнее исправление: Rastafarra (всего исправлений: 1)
Ответ на: комментарий от Bobby_

побочного эффекта

В высокоуровневых языках-то? Да и в сишечке компилятор такое запросто сожрёт. Альзо, неиспользуемая переменная тоже может быть оставлена на будущее, и компилятор её так же смело выкинет, тут всё отнюдь не однозначно. Просто ворнинг, но ворнинг полезный.

bodqhrohro_promo ()
Ответ на: комментарий от Rastafarra

Ну так и я знал.

имена и значения изменены

для кого?! Отныне и впредь все пытающиеся придраться к именованию, алгоритму или сути кода в приведённом в ОП примере без предупреждения получают струю мочи в рыло.

bodqhrohro_promo ()

Современные IDE и текстовые редакторы, все что угодно могут, что можно реализовать.

Int0l ()
Ответ на: комментарий от bodqhrohro_promo

Для С++ есть специальные средства для отключения агрессивной оптимизации компилятора. И не его это собачье дело додумывать за меня.

Bobby_ ()
Ответ на: комментарий от Bobby_

Зачем тебе тогда плюсы? пиши на ассемблере, там уж точно никаких додумок не будет.

bodqhrohro_promo ()
Ответ на: комментарий от bodqhrohro_promo

А как ты думаешь почему сейчас все чаще используют плюсы для эмбеджет?

Bobby_ ()
Ответ на: комментарий от bodqhrohro_promo

Зато там будут додумки самого процессора. Да, спекулятивное исполнение, оно самое.

cvs-255 ★★★★★ ()
Ответ на: комментарий от cvs-255

Не нужны такие процессоры, Z80 хватит всем; если надо высокая мощность, можно объединить в кластер, вотъ.

bodqhrohro_promo ()
Последнее исправление: bodqhrohro_promo (всего исправлений: 1)

pycharm делает это в питонах. У меня дежавю, или я видел где-то такой тред?

x3al ★★★★★ ()

О нужности IDE

Не нужно. Emacs'а хватит всем.

Закрыть тред.

telikan ()
Ответ на: комментарий от Bobby_

почему все чаще используют плюсы для эмбеджет

Руки из жопы.

telikan ()

Поймает.

Нужно.

EXL ★★★★★ ()

$a больше нигде не используется. Из чего следует, что код лучше переделать так:

Молодец, облегчил функцию на несколько байт, которые на выделение блоков памяти могут и не повлиять. И потом, мы не в курсе, это финальная версия кода или переменные объявлены на вырост и потом автору могут понадобиться.

Napilnik ★★★★★ ()
Ответ на: комментарий от telikan

Не нужно. Emacs'а хватит всем.

Закрыть тред.

Нажать на ресет чтобы закрыть емакс.

Napilnik ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Отныне и впредь все пытающиеся придраться к именованию, алгоритму или сути кода в приведённом в ОП примере без предупреждения получают струю мочи в рыло.
bodqhrohro_promo ★ (28.05.2018 16:35:19) говнюк

А ведь правильная приписочка. Молодец, оправдывай её и дальше!

Napilnik ★★★★★ ()

Раз уж мы тут собрались в толксах обсуждать IDE - я тоже добавлю свои 5 копеек.

Использую IntelliJ IDEA и WebStorm, работаю с фреймворком ionic (angular с scss и плюшками + интеграция с cordova для мобильных устройств). То есть это TypeScript, это импорты, плюс каждая страница == отдельный каталог, в котором лежат 3 или 4 файла с одинаковым именем и разным расширением: html, scss, ts (и, опционально, name.module.ts).

1. Обе IDE не умеют видеть стили из HTML в SCSS и обратно. Ты ка дурак в 2018 году руками должен вбивать все имена классов, в том числе длинные. И можешь сделать опечатку. И искать, почему стиль не подтянулся, будешь тоже сам. Причём изначально должно работать, и даже работает для обычных html/css/scss. Но в Angular SCSS содержит свой собственный селектор, внутри которого всё нужное для страницы и указывается. И он указан в .ts файле.

2. Обе IDE косячат с поиском usages функций, а иногда и поиском их объявления. Автодополнение между HTML и TypeScript тоже не работает. Так что onGoToUserProfile() ты будешь руками писать и в HTML и в TS. В обратную сторону иногда предлагает имя - уже счастье.

3. Импорты дополнительных модулей постоянно косячат. Подключать moment.js всё равно руками придётся.

4. Нет возможности быстро прыгать между файлами одной страницы (html/ts/scss).

5. Чтоб завернуть в тэг через Emmet, штатно предлагается следующая удобная комбинация: alt+j e.

6. Абсолютно кривая поддержка кастомных тэгов, никаких сниппетов для них, кастомные аттрибуты элементов зачастую подчёркиваются.

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

Можно ещё долго продолжать. Итого, из полезного лично для меня в IDE: иногда правильно работает импорт, иногда правильно работает переход к декларации, иногда правильно работает поиск использований, плюс подсказки по приведениям типов и прочие плюшки. Но как редакторы - IDE абсолютное говно.

В VS Code свои проблемы. Sublime Text вообще мёртвый уже, и фреймворк нормально не поддерживает вообще. Один Vim радует - плагин для импорта поставил, линтер поставил, автодополнение для открытых файлов работает из коробки.

Спрашивается, на кой хрен я плачу JetBrains за продукт, который не поддерживает нормально то, что заявлено? Пока так и не понял.

P.S. Багрепорты есть, движений по ним нет. Как будет свободное время - выкачу им здоровенный багрепорт по работе всего ionic в их IDE.

ekzotech ★★★★ ()
Ответ на: комментарий от ekzotech

руками должен вбивать все имена классов, в том числе длинные

Во-во, а в виме искаропке автодополнение по всем лексемам — тупое, зато хотя бы от опечаток в целом страхует. Впрочем, подозреваю, в идее тоже такое есть, просто ты не осилил.

moment.js

А у него биндинги к TS-то есть уже? Там же вроде чот легковесное и обратно совместимое запилил вместо момента давно.

штатно предлагается следующая удобная комбинация

Ну звыняй, клавиатура не резиновая (впрочем, бывает и резиновая, кек). По сравнению со всякими C-x C-f C-e или Shift+Ctrl+Alt+Fn+Pause это вполне даже удобная комбинация.

Багрепорты есть, движений по ним нет

Поговаривают, у них уже давно количество задач в багтрекере постоянно растёт. Загнётся скоро, в общем. Особенно силами шагающего по планете LSP, призванного убить монолитные IDE.

bodqhrohro_promo ()
Ответ на: комментарий от bodqhrohro_promo

Обоснуй.

Используя неполиткорректные++ выражения можно составить краткую характеристику, а движок форума позволяет её записать. Правда прикольно?

Napilnik ★★★★★ ()
Ответ на: комментарий от Napilnik

Ты этим горд?
Но в чём твоя заслуга?
К движку аль к русскому
Ты лапы приложил?

bodqhrohro_promo ()
Ответ на: комментарий от bodqhrohro_promo

Гордиться глупо,
Дураки гордятся пусть.
Но ясности процессу,
Добавит пониманья суть.

Napilnik ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Кстати, все проиграли, про тәйлманю

А я думал его в список добавить, активен сейчас, но забыл ник.

Napilnik ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Впрочем, подозреваю, в идее тоже такое есть, просто ты не осилил.

Должно быть. По двойному нажатию Ctrl+Space. Но, увы, оно ищет по всем файлам, даже упрятанным далеко в модулях. Но не предлагает дополнения по именам классов, нужных мне. Тупо их не видит.

А у него биндинги к TS-то есть уже?

Не в курсе. Импортируется просто как

import * as moment from 'moment'
И то хлеб. Но ведь IDE даже так не могут.

Ну звыняй, клавиатура не резиновая

Не, ну понятное дело. Но для частой и типовой задачи - странное решение. Впрочем, я навесил на Ctrl+Y, как в vim.

Поговаривают, у них уже давно количество задач в багтрекере постоянно растёт. Загнётся скоро, в общем. Особенно силами шагающего по планете LSP, призванного убить монолитные IDE.

Не знаю, что там где и как, но я уже на грани того, чтоб запилить себе пару личных плагинов либо для vim, либо для vs code. Потому что так невозможно - продуктивность немногим лучше голого notepad.exe.

ekzotech ★★★★ ()

[ide] [ненужно] О нужности IDE

согласен, но странно слышать это от того, кто не отличает IDE от статического анализатора.

t184256 ★★★★★ ()

$a больше нигде не используется. Из чего следует, что код лучше переделать так:

Садись, два. Ничего из этого фрагмента кода не следует.

Igron ★★★★★ ()
Ответ на: комментарий от bodqhrohro_promo

Загнётся скоро, в общем. Особенно силами шагающего по планете LSP, призванного убить монолитные IDE.

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

bread ()
Ответ на: комментарий от bread

Так сами JetBrains позиционируют IntelliJ IDEA как основную IDE, которая может работать с любыми проектами, как WebStorm и другие. Это первый момент.

Второй момент заключается в том, что они сами заявляют поддержку фреймворков Angular, Vue и Ionic в своих IDE. В противном случае - на кой мне сдались их IDE?

Удобнее иметь IntelliJ IDEA для всех проектов, чем покупать кучу других, или вообще весь бандл. С php я не работаю, с C# тоже. Польза от CLion на маке - крайней сомнительна. Одной IDEA хватит, по сути.

ekzotech ★★★★ ()

Лишние переменные могут вводится в программу для отладки или для того чтобы сделать код понятнее. Откуда ide знает зачем ты так написал?

onon ★★★ ()
Ответ на: комментарий от ekzotech

Обе IDE не умеют видеть стили из HTML в SCSS и обратно.

В ангулярах всё так грустно даже с css-модулями?!!

x3al ★★★★★ ()
Ответ на: комментарий от ekzotech

Так в CSS-модулях имена стилей буквально импортируются. Как их можно не видеть и не дополнять?

Idea-образные IDE умеют.

x3al ★★★★★ ()

Зависит от языка. В джаваскрипте, например, линтеры такое отлавливают. Тот же eslint.

blackst0ne ★★★★★ ()

О нужности IDE

Integrated Drive Electronics interface не нужен.

redgremlin ★★★★★ ()

Покажи, что после компиляции. Если лишнего копирования нет, то IDE использующие компилятор для анализа кода должны ловить такое.

SR_team ★★★ ()

$a больше нигде не используется. Из чего следует, что код лучше переделать так:

Этим пускай занимается компилятор. Ну или на крайний случай, линтер выскажет своё мнение. Потому что это не всегда так.

Вот например, у нас есть муми-тролли и каждому муми-троллю нужен один (1) носовой платок:

const кол-во муми-троллей = 5;
const необходимо носовых платков = кол-во муми-троллей;
носовые платки = заказать носовые платки(необх. носовых платков);

всяко более понятный код, чем передача муми-троллей в функцию, которая работает с носовыми платками. Более того, если у нас поменяется требование в платках, явно видно, где оно рассчитывается.

Gary ★★★★★ ()

Это не та задача IDE. IDE нужен для удобного представления проекта и взаимодействия с ним. Например отображать название функции, в теле которой я нахожусь (в простых редакторах приходится постоянно скролить наверх чтобы посмотреть где я). Например при наведении курсора на переменную подсказывать где она объявлена, при наведении курсора на вызов функции подсказывать где она объявлена, её описание, взятое из комментария над её объявлением (phpdoc, javadoc), какие параметры в неё нужно передавать и т.д.

Deleted ()
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)