LINUX.ORG.RU

Предложение по улучшению интерфейса IDE

 ,


0

1

Раз сейчас все стали предлагать улучшения языков программирования и IDE то предложу и я.

Сразу говорю о том, что предложение не сводится к переизобретению doxygen или xml комментов.

Очень_часто_кризис_в_названии_переменных_приводит_к_длинным_и_не_читабельным_названиям.
Причём из-за длинны этих названий исходник превращается в нечитабельную кашу и вот тут думаешь, лучше бы вместо говорящего названия часть переменных имела название в виде номера или id при наведении курсора мыши на который выскакивало всплывающее окно с описанием того, для чего предназначена эта переменная.

Отдельно от исходников создаётся база данных в которой для каждой переменной, структуры, объекта или функции создаётся запись которая содержит.

  1. Используемое в качестве имени id, при этом id такой чтобы быть корректным именем в рамках языка программирования.
  2. Не обязательно указываемое имя переменной, функции и пр.
  3. Объявление переменной, функции и пр.
  4. Название библиотеки из которой делается импорт, если не импортируется то указывается internal_object, если экспортируется то указывается export_object
  5. Обязательный комментарий в формате asciidoc doxygen, который и будет выводится в сплывающем окне в первой вкладке, а во второй будет ввводится объявление.
  6. Поле lock запрещающее изменение полей 1-4.

Формат базы данных это заголовочный файл с одним объектом и содержащий в комментариях специального формата поля 1,2,4,5 и 6, поле 3 это объявление функции как таковое.

Как это будет работать:

при создании или импорте переменной и пр. вместо объявления в .h файле создаётся запись в базе данных.

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

Для не экспортируемых объектов, функций, переменных и пр, в исходниках всегда указывается id, но при указании имени вместо id будет отображаться имя.

При экспорте исходников из IDE все id в исходниках заменяются соответствующим именем, но исходники должны быть компилируемы и без замены id на имя, как они и будут компилироваться без импорта проекта.

★★★★★

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

А какую проблему ты решаешь?
Нет, я понимаю «теоретически», но покажи реальный код, который выиграл бы от твоего новвоведения больше, чем проиграл от дополнительной возни с препроцессором или что ты там предлагаешь.

Deleted
()

называю переменные type_id, а ее описание помещаю в doxygen-комменты, IDE показывает описание переменной при наведение на нее курсора

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

Улучшиться комментирование кода, при том что сами комментарии не будут заграмождать код и мешать его чтению.

Не надо будет тратить время на придумывание названий а потом воспоминание о том, почему это так названо и что делает.
Можно будет просто о этом написать или прочитать, оставив выбор названия на потом.

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

А что за ide? Хотя в этом варианте переименование переменной, если пришла идея как её назвать или темболее переименовать будет проблемой.

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

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

Но такой код будет очень неудобно писать: не представляю как оперировать именами вроде id_3 или var_381.

Улучшиться, заграмождать, о этом

Аккуратней, а ты можем заподозрить в тебе смесь анонiмуса с никсбрейном :)

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

Но такой код будет очень неудобно писать: не представляю как оперировать именами вроде id_3 или var_381.

Так никто же не зпставляет работать с id, занеси в базу данных имя и оно будет вместо него отображаться.
Ну а если имя придумать не можешь то лучше работать с id, чем не работать вообще ломая голову над названием, тем более что ни что не мешает занести имя в базу данных потом, причём код в отличии от doxygen переписывать не нужно.

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 4)
Ответ на: комментарий от SR_team

Но если ты придумал переменной название или решил переименовать то тебе придётся проверять все файлы, ну а если где то определил переменную с таким-же id для других целей то будет совсем плохо.

А здесь IDE будет следить за уникальностью присваиваемого ID, как и заменять имя по всем файлам не потребуется.

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от SR_team

У меня идея нечто большее, чем просто переизобретение doxygen

torvn77 ★★★★★
() автор топика

ТС, мне нравится твоя идея. Только можно чуть иначе. Смотри, есть FIXME TODO и всё это парсится во многих IDE. Что если будет тэг DESC после объявления переменной. И тогда везде, где она будет использована, можно будет навести и понять смысл через описание. Описание может быть многострочным.

Следующая идея, до кучи, это создать систему трассировки требований. Чтобы код содержал некие тэги, которые позволят через твой плагин в IDE перескочить на пункт требований (requirements)

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от torvn77

Но если ты придумал переменной название или решил переименовать то тебе придётся проверять все файлы, ну а если где то определил переменную с таким-же id для других целей то будет совсем плохо

С одной стороны верно. Но например применяемый анализатор от clang кажется в Qt Creator позволяет понять что переменные с одинаковым именем в реальности относятся к разным пространствам имен, к разным сущностям. Тебе конечно проще на ID завязаться, так быстрее сделаешь. Но можно и по сложному пути пойти - положиться на нечто более интеллектуальное чем смотрелка по регуляркам

I-Love-Microsoft ★★★★★
()

Как там форк mc? Джва года жду релизов :(

anonymous
()
Ответ на: комментарий от I-Love-Microsoft

Сам я эту идею реализовывать не буду и по этому позвал потенциальных разработчиков.

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

В Метапроге названия типов, функций и переменных вообще никак не влияют на конечный код. Можно называть что угодно как угодно, не боясь коллизий. И на любом языке. Смотрите скрины примеров:

Metaprog: универсальная графическая среда программирования [в разработке] часть 7

На скринах нет имен переменных. Кстати, чаще всего имена переменных вообще не нужны и Метапрог освобождает программиста от проблем с придумыванием имен переменных.

metaprog
()

«Кризис в названии переменных» происходит из-за малого опыта, лени и неиспользования простейших правил нормального стиля кода:

  • Если переменная локальная, то нужно чтобы она была покороче. Можно использовать аббревиатуры. Можно даже использовать однобуквенные идентификаторы. Поскольку ты находишься в локальном контексте, тебе несложно посмотреть, что эта за переменная. Переменные более высоких уровней должны быть длиннее.

  • Если имеется какой-либо механизм неймспейсов (модули, плюсовые наймспейсы, члены структур, классов), то переменные в этих неймспейсах не должны содержать в себе части этих неймспейсов.

  • Если переменная была названа неверно, не лениться проводить рефакторинг. В каждом крупном приложении должен быть некий устояшийся словарь терминов и переменные должны ему следовать.

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

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

то работа без ide, которая будет сопоставлять идентификаторы и смысл этой переменной превратится в ад.

Ну во первых предусмотрен экспорт с заменой id на имена там, где они указаны.

Во вторых коменты в формате doxygen никуда не пропадут.

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

Можно даже использовать однобуквенные идентификаторы.

Чем такой индентификатор лучше id?
По моему ничем, а даже хуже, потому что id в рамках проекта будет гарантированно индивидуален.

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

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

foror ★★★★★
()

Опять у кого-то рука к мышке приросла. Текст - универсальная платформа, не нуждающаяся во внешних метаданных, в отличие от. Дерриды на вас нет.

anonymous
()

Отдельно от исходников создаётся база данных в которой для каждой переменной, структуры, объекта или функции создаётся запись которая содержит.

Проще: оставить специальный комментарий рядом с обьявленной переменной с описанием

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

с именами героев, локациями и техникой переведенных в ID Если в бд занести имя, то вместо ID отображаться именно оно.

А если имя устоялось и прижилось то им можно переписать ID после чего ID будет заменён на имя и в исходниках.

и справочником на последних страницах.

Поле 5 пишется в формате Doxygen

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 4)
Ответ на: комментарий от xDShot

Проще: оставить специальный комментарий рядом с обьявленной переменной с описанием

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

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

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 2)

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

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

Комментарий для IDE, а не для чтения простыми смертными. Ну или придется db блобы в гит репозиторий тащить.

xDShot ★★★★★
()

Если ты не можешь назвать переменную/функцию/класс/... коротко, значит либо ты на самом деле не понимаешь, что она делает, и пытаешь по внешним признакам описать, откуда она взялась, либо она делает несколько вещей одновременно. Каша в голове, поэтому каша в коде.

И решать эту проблему возвратом к фортранным шестизнаковым переменным бесполезно - когда так писали, каши в голове у людей было намного меньше

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

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

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 2)
Ответ на: комментарий от xDShot

Комментарий для IDE, а не для чтения простыми смертными. Ну или придется db блобы в гит репозиторий тащить.

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

torvn77 ★★★★★
() автор топика
Последнее исправление: torvn77 (всего исправлений: 2)

Код пишется для человека, не компьютера, отсутствие нормальных имен - это профнепригодность.

anonymous
()

Код пишется для человека, не компьютера, отсутствие нормальных имен - это профнепригодность.

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

Гордым словом рефакторинг простое переименование переменной не я, а другие участники треда назвали. Лично я думаю что для рефакторинга это сдишком просто, хотя и сделает рефакторинг намного проще.

Вот смотри, @SR_team движется в ту же сторону что и я
Предложение по улучшению интерфейса IDE (комментарий)

называю переменные type_id, а ее описание помещаю в doxygen-комменты, IDE показывает описание переменной при наведение на нее курсора

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

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

torvn77 ★★★★★
() автор топика

Идея не понравилась. Код должен быть самодокументируемым, насколько это возможно. А то, что у тебя, сильно напоминает выхлоп кодогенератора метапрога (позиция автора — «сишный код не для эстетов») со внешними подпорками.

Раз сейчас все стали предлагать улучшения языков программирования и IDE...

...то хорошо бы написать систему сборки для С/C++ со строгим и человеческим синтаксисом и продвинуть её в стандарт. Реально одна из немногих вещей, которых мне не хватает для счастья в крестах. Пользуюсь пока неуниверсальным, но работающим qmake, если его закопают, придётся, прости господи, на cmake переходить (правда, есть надежда, что к тому времени доведут до ума meson, но и он не идеал).

hobbit ★★★★★
()
Последнее исправление: hobbit (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.