TGViewer
Библиотека шарписта | C#, F#, .NET, ASP.NET Библиотека шарписта | C#, F#, .NET, ASP.NET @csharpproglib · 21.7K subscribers
Post #6838 3.43K
🔌 Пишите интерфейс так, чтобы не объяснять

Хороший код легко использовать правильно — и сложно использовать неправильно. Это важно при проектировании API: даже внутреннего.

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

Вот на что стоит обращать внимание:

• Понятен ли смысл метода. Название должно говорить само за себя без комментария над функцией и без погружения в реализацию.

Если приходится читать тело метода, чтобы понять что он делает, значит имя плохое.

• Предсказуемо ли поведение. Метод с одинаковыми параметрами должен возвращать одинаковый результат.

Скрытые побочные эффекты и неочевидные состояния — прямой путь к багам, которые воспроизводятся через раз.

• Булевые флаги это тревожный знак. Два булевых параметра подряд — почти всегда признак того, что функция делает слишком много или интерфейс не доработан:
ProcessData(bool flag1, bool flag2);


Явные типы — намерение читается сразу:
ProcessData(ProcessMode mode, ValidationOptions options);


• Исключения или типы результата. Исключения созданы для исключительных ситуаций, а типы результата для ожидаемых ошибок.

Смешивать их = заставлять пользователя угадывать, что пойдёт не так и в каком виде.

• Минимум обязательных параметров. Чем больше параметров нужно передать для базового вызова, тем выше порог входа.

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

Удобный интерфейс это уважение к тем, кто будет с ним работать. И к себе через полгода, когда придётся вернуться к этому коду.

📍 Навигация: Вакансии • Задачи • Собесы

🐸 Библиотека шарписта

#il_люминатор
  • ❤ 14
  • 👍 5
  • 🥱 1
  • 🌚 1
More from @csharpproglib
  1. Sep 25, 2026🔐 NuGet: Microsoft меняет сертификат подписи С 23 сентября Microsoft использует новый сер…
  2. Sep 24, 2026🤩 Как поймать зависший .NET-сервис Приложение начинает тормозить, запросы зависают, а в л…
  3. Sep 23, 2026⚙️ yield return не бесплатный Итераторы выглядят просто, но работают иначе: IEnumerable<in…
  4. Sep 22, 2026💡 Replace, Regex или StringBuilder? Для замены текста в C# есть несколько инструментов. И…
  5. Sep 21, 2026⚙️ Настоящие атомарные операции Если Volatile решает проблему видимости, то Interlocked ре…
  6. Sep 20, 2026💪 Разминка перед трудовыми буднями Что произойдёт? ❤️ — список станет [1, 3] 🔥 — Invalid…
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 →