Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода.
Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру.
Нет?
Здравствуйте, 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 у энумераторов.
Здравствуйте, ylem, Вы писали:
Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода. Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру. Y>Нет?
То есть, Вы не хотите разрешить даже переместить блок кода на экран вниз? Это запрещено?
Код скипнут С>А здесь разве "strcpy(string," не просится в буфер?
Здесь, IMHO, все это хозяйство просится в таблицу. Во всяком случае, я не помню, когда у меня в окончательных версиях того, чего я кропал, был switch/case. И Copy/Paste остается не у дел в этом случае.
Здравствуйте, Privalov, Вы писали:
P>Здравствуйте, Слава, Вы писали:
P>Код скипнут С>>А здесь разве "strcpy(string," не просится в буфер?
P>Здесь, IMHO, все это хозяйство просится в таблицу. Во всяком случае, я не помню, когда у меня в окончательных версиях того, чего я кропал, был switch/case. И Copy/Paste остается не у дел в этом случае.
Здравствуйте, Privalov, Вы писали:
P>Здесь, IMHO, все это хозяйство просится в таблицу.
Это если только у констант подряд значения
а если по всему диапазону целых то какая тут нафиг таблица?
Не надо пытаться ограничивать собственно метод работы, надо ограничивать результат. Copy&paste по ходу работы — норма, но в результате должен получиться вменяемый код. Кстати, вот что-что, а это надо контролировать на каждом коммите, лучше всего через check-in filter hook. Потому что самые тяжело диагностируемые и устраняемые последствия copy&paste-написания — это молчаливое применение патча не к той части кода.
Здравствуйте, Privalov, Вы писали:
CC>>Это если только у констант подряд значения CC>>а если по всему диапазону целых то какая тут нафиг таблица?
P>Дак кто ж будет case делать по всему диапазону целых?
Я не совсем правильно видимо выразился.
Я про случай, когда к примеру:
Здравствуйте, Privalov, Вы писали:
P>Тогда пишется функция, которая оный индекс возвращает. Например, двоичный поиск. Или все в хэш-таблицы засунуть.
Такие методы годятся если там дофигища констант и дёргается этот код часто. Иначе будет та самая premature optimization AKA overkill.
Здравствуйте, ylem, Вы писали:
Y>Ни кому не попадался Add-In для VS, которые бы блокировал Ctrl+C — Ctrl+V для кода. Y>Такая простая штука имеет шансы, существенно повысить качество кода в среднем по Миру. Y>Нет?
Даешь только уникальные идентификаторы!
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, CreatorCray, Вы писали:
P>>Тогда пишется функция, которая оный индекс возвращает. Например, двоичный поиск. Или все в хэш-таблицы засунуть. CC>Такие методы годятся если там дофигища констант и дёргается этот код часто. Иначе будет та самая premature optimization AKA overkill.
Не знаю, кто как, а я в длинных switch-ах постоянно путаюсь. "дофигища" для меня — больше 3. А двоичный поиск, который вернет индекс, сейчас есть в любом приличном фреймворке, его и писать не придется. Естественно, все зависит от ситуации. Для 2 вариантов я бы сделал if/else, для 3 — возможно, switch, дальще — таблицы в том или ином виде. Таблицы легче модифицировать. Там, где требуется только вернуть значение, например, сообщение об ошибке, лучше таблиц вряд ли что-нибудь можно придумать. Как раз тот самый вариант: до фига констант и достаточно частое обращение. Данные для таблиц могут храниться (и хранятся) вне программного кода, так что если вдруг кто-то найдет грамматическую ошибку, ее будет намного легче исправить.
Мне пришлось как-то работать в проекте, где сообщения об ошибках были зашиты в километровый switch/case. Может быит, с тех пор я к этой конструкции отношусь несколько настороженно. И еще я как-то вычислитель видел, в котором выбор нужной функции (sin(x), ln(x) и т.п.) делался с помощью портянки из if/else if/else. Я в свое время в подобном случае тоже таблицами обошелся.
Здравствуйте, Privalov, Вы писали:
P>Не знаю, кто как, а я в длинных switch-ах постоянно путаюсь. "дофигища" для меня — больше 3. А двоичный поиск, который вернет индекс, сейчас есть в любом приличном фреймворке, его и писать не придется. Естественно, все зависит от ситуации. Для 2 вариантов я бы сделал if/else, для 3 — возможно, switch, дальще — таблицы в том или ином виде. Таблицы легче модифицировать.
Да всё, что сделано не через задницу и читается хорошо, и выполняется нормально и модифицируется легко.
Идеал в балансе и применении того метода, который подходит лучше всего.
В общем случае нельзя сказать что будет оптимальнее. Надо смотреть на конкретные условия задачи.
Но ИМХО заранее считать что switch дескать не подойдёт дальше чем на 3 ветки — однозначно ошибочно.
P> Там, где требуется только вернуть значение, например, сообщение об ошибке, лучше таблиц вряд ли что-нибудь можно придумать.
switch — по сути та же таблица
P>Мне пришлось как-то работать в проекте, где сообщения об ошибках были зашиты в километровый switch/case.
Дык всё хорошо в меру.
Здравствуйте, 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.
Здравствуйте, netch80, Вы писали:
N>Не надо пытаться ограничивать собственно метод работы, надо ограничивать результат. Copy&paste по ходу работы — норма, но в результате должен получиться вменяемый код. Кстати, вот что-что, а это надо контролировать на каждом коммите, лучше всего через check-in filter hook. Потому что самые тяжело диагностируемые и устраняемые последствия copy&paste-написания — это молчаливое применение патча не к той части кода.
ИМХО самые неприятные последствия — это когда после copy/paste нужно строчку отредактировать, чтобы сделать ее пригодной для нового места, но об этом забываешь
case plus:
x++;
break;
case minus:
x++; // эх, забыл поменять
break;