TGViewer
.NET Разработчик .NET Разработчик @netdeveloperdiary · 6.77K subscribers
Post #1164 1.47K
День девятьсот сорок седьмой. #Оффтоп
Советы по Улучшению Ваших Навыков Разработки в .NET. Окончание
Начало
Продолжение
Продолжение

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

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

Одним из важных аспектов анализа сложности является то, что он позволяет вам объяснить, как ваш алгоритм будет реагировать на увеличение размера входных данных. Как разработчик, вы должны иметь четкое представление о том, как будет вести себя ваша программа, если вы получите в 100 раз больше трафика. Сможет ли ваш сервер справиться с такой нагрузкой с текущим дизайном?

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

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

8. Общие рекомендации по решению технических проблем.
- У вас может возникнуть соблазн решить и запомнить решения технических проблем, с которыми вы столкнетесь. Не делайте этого. Ключ в том, чтобы знать свой набор инструментов и видеть закономерности, возникающие по мере того, как вы решаете всё больше и больше проблем.
- Если вы готовитесь к техническому собеседованию, вам научитесь быстро решать проблемы. Тренируйтесь решать задачи дома с таймером.
- Глубоко изучите выбранный вами язык.
- Научитесь писать чистый и защищённый код. Защитите свою реализацию от распространенных граничных ситуаций, связанных с выбранной структурой данных и алгоритмом.

В заключение
- Разработчики ПО должны понимать все, что связано с приложением, которое они разрабатывают/обслуживают.
- При реализации кода проявляйте эмпатию. Человек, исправляющий ошибку в этом коде, может быть вами, но спустя 3 года. К тому времени вы забудете, о чём думали, когда писали этот код.
- Убедитесь, что понимаете компромиссы по объёму данных и времени, решая, какой подход лучше подходит для решения проблемы. Здесь не существует серебряной пули. Выберите один вариант и живите с этим.
- Не переусердствуйте с проектированием функции/класса/архитектуры ПО. Это может сделать будущие итерации разработки нестабильными и затруднить внесение изменений.
- Реализация без тестов производительности - это просто мнение разработчика о его ощущения. Вы не можете утверждать, что ваш код быстрый, без каких-либо подтверждающих фактов. Используйте BenchmarkDotNet для исследования производительности.
- Постарайтесь сначала разобраться в проблеме и подумать об альтернативных подходах, прежде чем бросаться за реализацию.
- При оптимизации решения нужно учесть множество факторов и соображений. Например, имеет ли смысл тратить месяц на рефакторинг кода, когда компания спешит стать первым приложением на рынке?

Источник: https://kevinavignon.com/2020/12/23/guidelines-to-improve-your-software-design-skills-with-net-part-i/
Автор оригинала: Kevin Avignon
More from @netdeveloperdiary
  1. Oct 16, 2026День 2816. #Карьера #AI Станет ли ИИ-Кодинг Концом Программирования для Людей? Автор ориги…
  2. Oct 15, 2026Post #3374
  3. Oct 14, 2026Post #3373
  4. Oct 13, 2026День 2813. #ЗаметкиНаПолях #Async Ещё Раз Про Async/Await в C#. Часть 1 Почему существует…
  5. Oct 12, 2026День 2812. #Карьера #AI Как Разработчикам Оставаться Полезными, Когда Код Пишет ИИ? По мер…
  6. Oct 11, 2026День 2811. #ВопросыНаСобеседовании Марк Прайс предложил свой набор из 60 вопросов (как тех…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →