Один из способов прочитать ваши вопросы: «Почему C ++ не делает каждую функцию виртуальной по умолчанию, если программист не переопределяет эту настройку по умолчанию». Без консультации с моей копией «Дизайн и эволюция C ++»: это добавило бы дополнительное хранилище для каждого класса, если каждая функция-член не сделана не виртуальной. Мне кажется, это потребовало бы больше усилий в реализации компилятора и замедлило принятие C ++, предоставляя корм для одержимой производительности (я считаю себя в этой группе).
Еще один способ прочитать ваши вопросы «Почему программисты на C ++ не делают каждую функцию виртуальной, если у них нет веских причин не делать этого?» Возможно, причина в производительности. В зависимости от вашего приложения и домена, это может быть хорошей причиной или нет. Например, часть моей команды работает на предприятиях по продаже рыночных данных. При скорости более 100 000 сообщений в секунду в одном потоке издержки виртуальной функции будут неприемлемы. Другие части моей команды работают в сложной торговой инфраструктуре. В этом контексте, вероятно, хорошей идеей является виртуализация большинства функций, поскольку дополнительная гибкость превосходит микрооптимизацию.
Прежде всего, в Vim можно увеличить скорость, используя h
, j
, k
и l
вместо клавиш со стрелками. См. Изучение Vim прагматичным способом для обзора клавиш.
Однако в этом случае вам, вероятно, понадобится плагин AutoClose . Он автоматически вставляет закрывающую скобку (или цитату) вместе с открытием и помещает курсор между ними. Таким образом, вы переходите от
System.out.println(|)
к
System.out.println(foo(|))
к
System.out.println(foo("|"))
. Если вы затем наберете "))
, курсор будет" перемещать "закрывающие символы вместо того, чтобы вставлять новые. Хотя это более быстрый способ чтобы добраться до конца строки, вероятно, будет
.
System.out.println(foo(""));
Итак, подведем итог, вышеприведенное можно получить, набрав System.out.
Что ж, это Java. Если вы используете более или менее хорошую IDE, у вас должна быть возможность автозаполнения, например, когда вы набираете "System.out.println" и нажимаете Enter, чтобы принять автозаполнение, появятся скобки, а курсор будет посередине (о, и там будут кавычки!)
Вы можете сохранить нажатия клавиш, удерживая клавишу Ctrl и используя клавиши со стрелками. Вместо перемещения одного символа он перемещает одно слово за раз. Это также работает при обратном интервале. Таким образом, Ctrl-Backspace удалит все слово, а не только последний символ.
Если вы уже в vim, попробуйте поиграть с клавишами h, j, k и l. Они делают то же самое, что и клавиши со стрелками, но намного удобнее. Попытка выработать привычку печатать по порядку, вероятно, также поможет, но это требует определенных усилий.
Не делайте этого.
Ваша привычка заканчивать то, что вы начали - будь то закрывающая скобка, скобка, скобка или вызов .Close () для сопоставления .Open () , или удалить / бесплатный вызов в соответствии с вашим новым / malloc - отличный вариант. Даже если вы намереваетесь «закрыть» свой объект в другой области (например, в функции завершения), ваша привычка заставляет задуматься о правильном освобождении ресурсов.
Да, есть полезные редакторы, которые позволяют вам писать код быстрее, а это вы обязательно должны использовать, но не позволяйте им стать костылем, который позволит вам забыть закрыть объекты / освободить ресурсы.
Прямой ответ на ваш вопрос:
Я полностью рекомендую vim ... так как это очень поможет! Кроме того, обратите внимание на то, что автоматически закроет круглые скобки, квадратные скобки и фигурные скобки для вас ... У меня есть что-то в vim, что делает это, и это помогает с этим типом проблемы, потому что я уже внутри скобок.
Еще одно голосование за Vim. Кроме того, есть отличные плагины для более стандартных IDE, использующих сочетания клавиш Vi. Я время от времени использую jVI в Netbeans.
Вы обнаружите, что чем больше вы используете Vim, тем легче вам будет работать. Вы также обнаружите, что достаточно умный поиск / замена может сэкономить вам немало нажатий клавиш, как и глобальное действие regex-y.
Свяжите: tabn и: tabp с чем-то доступным, например и, и заставьте себя получить что-то сделано без отказа и с использованием подходящего редактора графического интерфейса.
Раньше я печатал полностью линейно (да, в vim), никогда не мог понять, как быстро создавать закрывающие элементы при записи.
Однако теперь я использую Eclipse. - он создает их для меня по мере того, как я иду, поэтому в конце чего-то с a) ")) беспорядок я просто нажимаю конец и набираю;, не нужно вообще разбираться с этим вручную. Что иногда меня смущает, но это нормально .
Я считаю, что цифровая клавиатура делает навигацию очень простой, потому что клавиши home и pgup расположены так близко. Для фактического набора чисел вы просто используете верхний ряд клавиатуры (что трудно выучить, я согласен, но достаточно быстро через некоторое время).
Единственным недостатком этого для меня является использование клавиатуры ноутбука и использование чужих машин, на которых я приходиться каждый раз отключать блокировку чисел.
Хорошая среда IDE (Galileo уже почти здесь) автоматически закрывает скобки, круглые скобки и т. Д., А также разумно вставляет точку с запятой в конце оператора. Нет необходимости использовать стрелки!
Конечно, для println в Eclipse вы можете просто ввести sysout, но это, вероятно, плохая привычка.
Но будьте осторожны! Если вы поторопитесь, коллеги всегда заставят вас водить машину: P