Вспомогательные инструменты программиста

0
1557
views

Перевод статьи «Some of the Best Coding Tools Aren’t Coding Tools».

Photo by Luke Peters on Unsplash

Итак, у вас уже есть ваш любимый редактор кода (или IDE) со всеми нужными расширениями. Charles следит за вашим веб-трафиком. Также вас прикрывает команда QUnit, jUnit и Jenkins.

Отличное начало.

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

Менеджер паролей: пробные логины, адреса и номера кредитных карт

Вы наверняка уже используете какой-нибудь менеджер паролей для хранения «ключей» от среды разработки, тестового сервера, Jenkins, Jira, Splunk, GitHub, StackOverflow и десятка других сайтов, необходимых вам для работы, верно? Здорово.

Но менеджер паролей способен на большее.

Когда мне нужно протестировать определенный тип аккаунта, у меня есть готовый — в 1Password. То же самое касается фейковых аккаунтов MasterCard, VISA, AmEx и PayPal. На случай, если мне нужно будет протестировать форму для международных поставок, у меня есть адреса для Антверпена, Лондона, Пекина, Дубаи, Лимы, Сеула, Хараре и Ванкувера. Больше никакого копипаста и никаких опечаток.

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

Инструмент для создания сниппетов: бойлерплейты кода, имена веток, ссылки на тикеты и т. п.

Безусловные лидеры в этой области — TextExpander, Breevy и Alfred. Также популярен Dash. IntelliJ и другие IDE имеют хорошую встроенную поддержку для сниппетов.

Photo by Markus Spiske on Unsplash

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

TextExpander работает в фоне и прослушивает ваш ввод с клавиатуры. Когда вы набираете определенную строку, он немедленно заменяет ее хранимым значением. Например:

Я ввожу…А получаю…
tstampx2019.11.28-12.21.48
todayxThursday, Nov 28
yesterdayxWednesday, Nov 27

Я также пользуюсь этим инструментом для автоматического исправления опечаток.

Я ввожу…А получаю…
retrunreturn
ChirsChris

В общем, вы поняли идею.

java.text.DecimalFormat использует символ ¤ для обозначения места для символа местной валюты. Вы знаете, как набрать на клавиатуре ¤? Вот и я не знаю. Так что я встроил этот символ в качестве сниппета и теперь, набирая currx, я получаю ¤.

Как часто я этим пользуюсь? Редко. Но мне больше не приходится заново искать, как набрать этот символ.

Когда мне нужна «рыба» для заполнения моих веб-страниц, я просто набираю loremx и получаю 200 бессмысленных слов на псевдолатыни. Просто, но невероятно полезно.

Настоящее же волшебство происходит, когда используешь TextExpander для запуска скриптов в фоне и создания output-а. (Shell-скрипты и JavaScript этот инструмент запускает напрямую). Я набираю jtitlex, и TextExpander запускает скрипт, выбирающий название тикета, над которым я работаю, из REST API Jira. Если я набираю tlx, я получаю URL этого тикета. А введя tkx, можно получить его Jira ID.

Где это может пригодиться? А вы просто подумайте обо всех электронных письмах, в которых вас спрашивали «Что там с программкой?». Когда мне приходят такие письма, я сразу, в первой же строке получаю информацию о том, что за «программка» имеется в виду, какой номер тикета и название, а также ссылку на тикет в системе. Все это делается при помощи нескольких сниппетов TextExpander. На получение этой информации уходят секунды, а переключаться между окнами мне вообще не приходится.

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

У меня есть еще один скрипт под названием vm-boilerplate, который читает файл Velocity и генерирует Java-бойлерплейт для связки нужных значений input. Я набираю vmtx и передаю TextExpander имя файла, а TextExpander запускает мой скрипт и передает его output в любой используемый мной редактор. Работает где угодно, меньше набора текста, никаких опечаток, никаких пропущенных параметров. (Потому что за годы споров мы так и не определились, использовать нам fileName или filename).

Я также пользуюсь маленьким скриптом tebind — для привязки сниппетов TextExpander из командной строки или других скриптов. Так что сниппеты это не обязательно нечто жестко прописанное: я могу перепривязать их на лету, в зависимости от других процессов.

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

Менеджер списков задач: храните все задачи вместе

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

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

Для меня огромное значение имеет возможность нажать Alt-space, написать заметку и относящиеся к ней дату и время, а затем быстро вернуться к тому, чем занимался. Это очень помогает на собраниях, поскольку дает возможность быстро записать темы, которым нужно уделить внимание позже, и при этом не потерять нить разговора.

Переключение между приложениями и автоматизация

В этом плане мне нравится Alfred, но есть много других вариантов — тоже хороших и при этом бесплатных.

У меня есть набор сочетаний клавиш для переключения фокуса на конкретные приложения. Cmd-Shift-Ctrl-J подтянет мой браузер. Cmd-Shift-Ctrl-K — мою IDE. Cmd-Shift-Ctrl-L откроет терминал. Это мне нравится куда больше, чем Cmd-TAB, потому что позволяет переключать приложения за счет мышечной памяти. (Да, у меня также в TextExpander есть привязка chordx к Cmd-Shift-Ctrl-).

Крупный план

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

Когда на пути попадается нечто, вызывающее затруднения, есть два варианта решения. Проблему можно обойти (сделать так, чтобы препятствие вам не мешало). Второй вариант — изучить предмет и сделать так, чтобы он стал не мешать, а помогать вам.

Когда я только начал учиться информатике, мои одноклассники возмущались: «Зачем непременно нужно использовать cvs? Почему нельзя просто брать копию проекта с сетевого диска? Было бы проще, верно?» Необходимость загружать и выгружать файлы, разбираться с конфликтами слияний и т. п. вещами казалось им помехой и они стремились обойти это препятствие.

Но все мы знаем, что система контроля версий дает такие неоспоримые преимущества, что вопрос о целесообразности ее использования в командах разработчиков даже не возникает. Правильное решение — научиться пользоваться git/hg/svn, чтобы получить все преимущества, которые они могут дать.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here