Обложка: Инструменты C# для тех, у кого нет времени на кодинг

Инструменты C# для тех, у кого нет времени на кодинг

6
Вадим Кошелев
Вадим Кошелев

Заместитель директора департамента по разработке программного обеспечения «Аэроклуб ИТ»

Набор инструментов C#, которыми пользуется разработчик, может сильно меняться в зависимости от специфики задачи: разработки сайта, приложения, сервиса или создания библиотеки. На выбор инструментов также влияет тип операционной системы, в которой ведётся разработка. Есть условно универсальные — для разных ОС, есть такие, которые подходят только для одной системы, и для другой придется подыскивать альтернативный инструмент.

В «Аэроклуб ИТ» мы разрабатываем web-сервисы и MVC-приложения для TravelTech. Клиенты компании — корпорации с десятками тысяч сотрудников, которые до карантина организовывали по 50 тысяч командировок в месяц. Одна из наших задач — разработка сервисов, которые поддерживают высокий уровень обслуживания. В том числе через автоматизацию и цифровизацию процессов. Например, робот, который принимает и анализирует входящие почтовые сообщения и автоматически преобразует их в формализированные заявки для агентства, — та работа, которую раньше приходилось проводить вручную.

Другой наш продукт — «корпоративный рейтинг отелей». Это сервис, который собирает отзывы по отелям среди сотрудников одной компании, анализирует их и на основе этого составляет и настраивает кастомизированные рекомендации для сотрудников этой компании-клиенте. В основном приложения создаются для ОС Windows.

Обычно я одновременно курирую работу сразу пяти проектов, поэтому львиную долю времени отнимают организационные моменты, менеджмент процессов, распределение задач и контроль их выполнения. На разработку остаётся не больше 10% времени. Поэтому при выборе инструментов для разработки я, в первую очередь, отдаю предпочтение тем из них, которые позволяют максимально экономить ресурсы — время и силы. Это могут быть самые базовые инструменты. Рассмотрю наиболее часто используемые, все они бесплатны:

MS Visual Studio Community

MS Visual Studio Community — бесплатная версия, но функциональности вполне достаточно для продуктивной работы в небольших командах по 5-7 человек.

Visual Studio Code

Visual Studio Code — используется реже, прежде всего для быстрого просмотра больших проектов на слабых машинах (на ноутбуке, например). Есть поддержка IntelliSense, существует огромное множество расширений для C#, Web-разработки, Git и так далее Но даже при столь широком функционале она остаётся достаточно легкой.

dotPeek

dotPeek — прекрасный инструмент от Jetbrains. Позволяет декомпилировать сборки .net, может пригодиться для исследования внешних библиотек. В некоторых случаях помогает определить, какая версия сборки находится на сервере.

Рассмотрим ситуацию, которая несколько раз случалась в нашей компании. Разработчик внёс изменения в ASP.MVC-приложение и выпустил релиз новой версии (собирал релизную ветку и опубликовал изменения через TeamCity). Однако после релиза часть пользователей не видела изменения. Необходимо было найти ошибку и исправить её так, чтобы все пользователи имели доступ к обновленной версии.

Сначала мы проверили ошибки в логах публикации — их не было. Приложение находится за балансировщиком нагрузки и развёрнуто на нескольких серверах. После просмотра папок с приложением на всех серверах причину ошибки удалось обнаружить. Если бы все сборки в приложении подписывались, можно было бы определить сборку по версии или альтернативным вариантом через анализ содержимого dll в приложении dotPeek. Собственно, для этого подобный инструмент и нужен: он в два клика помогает определить содержимое сборки и не тратить на это уйму времени.

regex101.com

regex101.com — просто необходимая утилита для отладки Regex-шаблонов. Позволяет понять, почему тот или иной шаблон не работает, получить справку по специальным символам. Например, есть текст, из которого нужно достать адреса e-mail — строку с наличием спецсимвола @ и обозначением домена, для этого требуется Ragex-шаблон, который эти символы выделяет и читает.

cmder.net

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

LinqPad

LinqPad — небольшая бесплатная программа, позволяющая быстро выполнить любой кусок кода, отладить запрос через Linq к различным источникам данных. Этот инструмент позволяет значительно экономить время. К примеру, вы открываете большое приложение и видите кусок кода, который вызывает сомнения. Вы можете пойти несколькими путями для его отладки:

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

Самый быстрый способ — последний, он же самый удобный, особенно если требуется доступ к базе данных.

WinDbg

WinDbg — мощный отладчик приложений. Предположим, что в процессе работы приложение периодически «падает». Сервер можно сконфигурировать так, чтобы при «падении» приложения создавался dump-файл. Этот файл можно анализировать при помощи различных средств, как платных, так и бесплатных, в том числе Visual Studio и WinDbg. Последний обладает не самым простым интерфейсом, но попробовать его в деле стоит. Хотя бы для расширения кругозора.

Process monitor

Process monitor — приложение, позволяющее отслеживать происходящее в системе в данный момент времени. Какие файлы использует приложение, что оно пишет в реестр, какие процессы запускает. Process monitor позволяет анализировать все эти аспекты. В некоторых случаях это просто незаменимая вещь.

***

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

Бонус: ссылка на большое количество полезных утилит на все случаи жизни.

Хинт для программистов: если зарегистрируетесь на соревнования Huawei Cup, то бесплатно получите доступ к онлайн-школе для участников. Можно прокачаться по разным навыкам и выиграть призы в самом соревновании.

Перейти к регистрации

Что думаете?