Блокировать Ctrl+C - Ctrl+V для кода
От: ylem  
Дата: 25.02.11 00:46
Оценка: 3 (1) +1 -6 :))) :))) :))) :))) :)
Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.
Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Нет?
Re: Блокировать Ctrl+C - Ctrl+V для кода
От: Слава Израиль  
Дата: 25.02.11 05:21
Оценка:
Здравствуйте, ylem, Вы писали:

Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.

Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Y>Нет?

Зачем???

Очень полезно, когда не хочется набивать один и тот-же идентификатор постоянно, а visual assist запоминает по-моему десять копирований, которые потом можно выбрать для вставки через Alt-Shift-V . Чё не?

    void GetErrorString(char* string)
    {
        switch(ErrorCode)
        {
        case SCI_SEND_ERROR:        strcpy(string,"SCI_SEND_ERROR");       break;
        case MCBSP_A_RECEIVE_ERROR:    strcpy(string,"MCBSP_A_RECEIVE_ERROR");break;
        case SCM_RX_CHECKSUM_ERROR:    strcpy(string,"SCM_RX_CHECKSUM_ERROR");break;
        case SCM_RX_SIZE_TOO_BIG:    strcpy(string,"SCM_RX_SIZE_TOO_BIG");  break;
        case SCM_RX_BAD_HEADER:        strcpy(string,"SCM_RX_BAD_HEADER");    break;
        case MEASURE_TIMED_OUT:        strcpy(string,"MEASURE_TIMED_OUT");    break;
        case FLASH_BUSY_ERROR:        strcpy(string,"FLASH_BUSY_ERROR");     break;
        case FLASH_CHKSUM_ERROR:    strcpy(string,"FLASH_CHKSUM_ERROR");   break;


А здесь разве "strcpy(string," не просится в буфер?
А если енумератор рядом в коде, то вообще можно размножить одну строку, а потом енуератор раскопипастить. Или как в ручную писать?

ЗЫ — это Си, никаких темплейтов и никаких бустов, а значит никаких ToString у энумераторов.
Спасибо за внимание
Re: Блокировать Ctrl+C - Ctrl+V для кода
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 25.02.11 06:51
Оценка:
Здравствуйте, ylem, Вы писали:

Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.

Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Y>Нет?

То есть, Вы не хотите разрешить даже переместить блок кода на экран вниз? Это запрещено?
The God is real, unless declared integer.
Re[2]: Блокировать Ctrl+C - Ctrl+V для кода
От: Privalov  
Дата: 25.02.11 07:01
Оценка: +2
Здравствуйте, Слава, Вы писали:

Код скипнут
С>А здесь разве "strcpy(string," не просится в буфер?

Здесь, IMHO, все это хозяйство просится в таблицу. Во всяком случае, я не помню, когда у меня в окончательных версиях того, чего я кропал, был switch/case. И Copy/Paste остается не у дел в этом случае.
Re[3]: Блокировать Ctrl+C - Ctrl+V для кода
От: Слава Израиль  
Дата: 25.02.11 07:05
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здравствуйте, Слава, Вы писали:


P>Код скипнут

С>>А здесь разве "strcpy(string," не просится в буфер?

P>Здесь, IMHO, все это хозяйство просится в таблицу. Во всяком случае, я не помню, когда у меня в окончательных версиях того, чего я кропал, был switch/case. И Copy/Paste остается не у дел в этом случае.


А заполнить таблицу не удобнее будет копипастом?
Спасибо за внимание
Re[2]: Блокировать Ctrl+C - Ctrl+V для кода
От: ylem  
Дата: 25.02.11 07:15
Оценка:
N>То есть, Вы не хотите разрешить даже переместить блок кода на экран вниз? Это запрещено?

Re: Блокировать Ctrl+C - Ctrl+V для кода
От: ononim  
Дата: 25.02.11 07:16
Оценка:
http://rsdn.ru/forum/humour/4169661.1.aspx
Автор: ononim
Дата: 23.02.11
Как много веселых ребят, и все делают велосипед...
Re[3]: Блокировать Ctrl+C - Ctrl+V для кода
От: CreatorCray  
Дата: 25.02.11 08:08
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Здесь, IMHO, все это хозяйство просится в таблицу.

Это если только у констант подряд значения
а если по всему диапазону целых то какая тут нафиг таблица?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Блокировать Ctrl+C - Ctrl+V для кода
От: Privalov  
Дата: 25.02.11 08:16
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Это если только у констант подряд значения

CC>а если по всему диапазону целых то какая тут нафиг таблица?

Дак кто ж будет case делать по всему диапазону целых?
Re[2]: Блокировать Ctrl+C - Ctrl+V для кода
От: Кодёнок  
Дата: 25.02.11 08:43
Оценка: +1 :))) :))
Здравствуйте, Слава, Вы писали:

С>ЗЫ — это Си, никаких темплейтов и никаких бустов, а значит никаких ToString у энумераторов.


Настоящего сишника такая туфта не остановит:

    void GetErrorString(char* string)
    {
        switch(ErrorCode)
        {
#define _(x) case x: strcpy(string, #x ); break;
        _(SCI_SEND_ERROR)
        _(MCBSP_A_RECEIVE_ERROR)
        _(SCM_RX_CHECKSUM_ERROR)
        _(SCM_RX_SIZE_TOO_BIG)
        _(SCM_RX_BAD_HEADER)
        _(MEASURE_TIMED_OUT)
        _(FLASH_BUSY_ERROR)
        _(FLASH_CHKSUM_ERROR)
#undef _
Re[2]: Блокировать Ctrl+C - Ctrl+V для кода
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 25.02.11 08:47
Оценка: 6 (1)
Здравствуйте, ononim, Вы писали:

O>http://rsdn.ru/forum/humour/4169661.1.aspx
Автор: ononim
Дата: 23.02.11


Между прочим, тут в статьях лежит описание именно анализатора всяких копипаст:

http://rsdn.ru/Forum/Info/FAQ.tools.src.anticutandpaste.aspx
Автор: Odi$$ey
Дата: 22.11.05


Не надо пытаться ограничивать собственно метод работы, надо ограничивать результат. Copy&paste по ходу работы — норма, но в результате должен получиться вменяемый код. Кстати, вот что-что, а это надо контролировать на каждом коммите, лучше всего через check-in filter hook. Потому что самые тяжело диагностируемые и устраняемые последствия copy&paste-написания — это молчаливое применение патча не к той части кода.
The God is real, unless declared integer.
Re[5]: Блокировать Ctrl+C - Ctrl+V для кода
От: CreatorCray  
Дата: 25.02.11 10:49
Оценка:
Здравствуйте, Privalov, Вы писали:

CC>>Это если только у констант подряд значения

CC>>а если по всему диапазону целых то какая тут нафиг таблица?

P>Дак кто ж будет case делать по всему диапазону целых?

Я не совсем правильно видимо выразился.
Я про случай, когда к примеру:
SCI_SEND_ERROR                == 0x25628914
MCBSP_A_RECEIVE_ERROR == 0x16587651
SCM_RX_CHECKSUM_ERROR == 0x13654654
SCM_RX_SIZE_TOO_BIG   == 0x16354654
SCM_RX_BAD_HEADER     == 0x51576684
MEASURE_TIMED_OUT     == 0x79846513
FLASH_BUSY_ERROR      == 0x45135489
FLASH_CHKSUM_ERROR    == 0x54544983


Т.е. разброс значений такой, что в качестве индекса в таблице ну никак не получится использовать.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Блокировать Ctrl+C - Ctrl+V для кода
От: Privalov  
Дата: 25.02.11 14:05
Оценка:
Здравствуйте, CreatorCray, Вы писали:

CC>Здравствуйте, Privalov, Вы писали:


CC>Я про случай, когда к примеру:

CC>
CC>SCI_SEND_ERROR       == 0x25628914
CC>MCBSP_A_RECEIVE_ERROR == 0x16587651
CC>SCM_RX_CHECKSUM_ERROR == 0x13654654
CC>SCM_RX_SIZE_TOO_BIG   == 0x16354654
CC>SCM_RX_BAD_HEADER     == 0x51576684
CC>MEASURE_TIMED_OUT     == 0x79846513
CC>FLASH_BUSY_ERROR      == 0x45135489
CC>FLASH_CHKSUM_ERROR    == 0x54544983
CC>


CC>Т.е. разброс значений такой, что в качестве индекса в таблице ну никак не получится использовать.


Тогда пишется функция, которая оный индекс возвращает. Например, двоичный поиск. Или все в хэш-таблицы засунуть.
Re[7]: Блокировать Ctrl+C - Ctrl+V для кода
От: CreatorCray  
Дата: 25.02.11 18:34
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Тогда пишется функция, которая оный индекс возвращает. Например, двоичный поиск. Или все в хэш-таблицы засунуть.

Такие методы годятся если там дофигища констант и дёргается этот код часто. Иначе будет та самая premature optimization AKA overkill.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Блокировать Ctrl+C - Ctrl+V для кода
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.02.11 18:48
Оценка:
Здравствуйте, ylem, Вы писали:

Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.

Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Y>Нет?

Даешь только уникальные идентификаторы!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Есть такая
От: Wissenschaftler http://rsdn_user.livejournal.com
Дата: 25.02.11 18:51
Оценка:
Vim называется.
Запретное обсуждение модерирования RSDN:
http://rsdn-user.livejournal.com/652.html
Re[8]: Блокировать Ctrl+C - Ctrl+V для кода
От: Privalov  
Дата: 25.02.11 19:14
Оценка:
Здравствуйте, CreatorCray, Вы писали:

P>>Тогда пишется функция, которая оный индекс возвращает. Например, двоичный поиск. Или все в хэш-таблицы засунуть.

CC>Такие методы годятся если там дофигища констант и дёргается этот код часто. Иначе будет та самая premature optimization AKA overkill.

Не знаю, кто как, а я в длинных switch-ах постоянно путаюсь. "дофигища" для меня — больше 3. А двоичный поиск, который вернет индекс, сейчас есть в любом приличном фреймворке, его и писать не придется. Естественно, все зависит от ситуации. Для 2 вариантов я бы сделал if/else, для 3 — возможно, switch, дальще — таблицы в том или ином виде. Таблицы легче модифицировать. Там, где требуется только вернуть значение, например, сообщение об ошибке, лучше таблиц вряд ли что-нибудь можно придумать. Как раз тот самый вариант: до фига констант и достаточно частое обращение. Данные для таблиц могут храниться (и хранятся) вне программного кода, так что если вдруг кто-то найдет грамматическую ошибку, ее будет намного легче исправить.
Мне пришлось как-то работать в проекте, где сообщения об ошибках были зашиты в километровый switch/case. Может быит, с тех пор я к этой конструкции отношусь несколько настороженно. И еще я как-то вычислитель видел, в котором выбор нужной функции (sin(x), ln(x) и т.п.) делался с помощью портянки из if/else if/else. Я в свое время в подобном случае тоже таблицами обошелся.
Re[9]: Блокировать Ctrl+C - Ctrl+V для кода
От: CreatorCray  
Дата: 25.02.11 19:23
Оценка:
Здравствуйте, Privalov, Вы писали:

P>Не знаю, кто как, а я в длинных switch-ах постоянно путаюсь. "дофигища" для меня — больше 3. А двоичный поиск, который вернет индекс, сейчас есть в любом приличном фреймворке, его и писать не придется. Естественно, все зависит от ситуации. Для 2 вариантов я бы сделал if/else, для 3 — возможно, switch, дальще — таблицы в том или ином виде. Таблицы легче модифицировать.

Да всё, что сделано не через задницу и читается хорошо, и выполняется нормально и модифицируется легко.
Идеал в балансе и применении того метода, который подходит лучше всего.
В общем случае нельзя сказать что будет оптимальнее. Надо смотреть на конкретные условия задачи.
Но ИМХО заранее считать что switch дескать не подойдёт дальше чем на 3 ветки — однозначно ошибочно.

P> Там, где требуется только вернуть значение, например, сообщение об ошибке, лучше таблиц вряд ли что-нибудь можно придумать.

switch — по сути та же таблица

P>Мне пришлось как-то работать в проекте, где сообщения об ошибках были зашиты в километровый switch/case.

Дык всё хорошо в меру.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Блокировать Ctrl+C - Ctrl+V для кода
От: _FRED_ Черногория
Дата: 26.02.11 00:36
Оценка:
Здравствуйте, ylem, Вы писали:

Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.

Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Y>Нет?

Попадался, будь он не ладен Не уверен на счёт более ранних версий студий, но при запущенном Remote Desktop Connection в студии Ctrl+C/Ctrl+V перестают работать (Win7/x64 точно, но в инете много народу жалуется).
Help will always be given at Hogwarts to those who ask for it.
Re[3]: Блокировать Ctrl+C - Ctrl+V для кода
От: Pavel Dvorkin Россия  
Дата: 26.02.11 17:36
Оценка: 2 (2) +2
Здравствуйте, netch80, Вы писали:

N>Не надо пытаться ограничивать собственно метод работы, надо ограничивать результат. Copy&paste по ходу работы — норма, но в результате должен получиться вменяемый код. Кстати, вот что-что, а это надо контролировать на каждом коммите, лучше всего через check-in filter hook. Потому что самые тяжело диагностируемые и устраняемые последствия copy&paste-написания — это молчаливое применение патча не к той части кода.


ИМХО самые неприятные последствия — это когда после copy/paste нужно строчку отредактировать, чтобы сделать ее пригодной для нового места, но об этом забываешь

case plus:
x++;
break;
case minus:
x++; // эх, забыл поменять
break;
With best regards
Pavel Dvorkin
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.