🧑💻 Как выбрать интерфейс для списка
В зоопарке
Логика выбора интерфейсов
1.
2.
3.
4.
Такой подход делает контракты честными и код предсказуемым, а лишние
🐸 Библиотека шарписта
#буст
В зоопарке
IEnumerable
, IReadOnlyCollection
, IList
легко потеряться. Разберёмся, зачем существует IReadOnlyList
и другие, а также в чём их сила.Логика выбора интерфейсов
1.
IEnumerable
— объект можно «пройти в foreach». Отлично подходит для ленивых источников данных: стриминг строк из файла, результаты SQL-запроса.2.
IReadOnlyCollection
— то же самое, что IEnumerable, но добавляет индексатор.3.
IReadOnlyList
— это уже полноценный «read-only список»: доступ по индексу и Count гарантированы. Интерфейс хорош, если ваш метод или сервис работает именно со списком.4.
IList
— даёт полный доступ и чтение, и запись. Подходит для внутренней логики, но в публичных контрактах часто избыточен.// ✅ Когда реально нужен индекс и Count — просим IReadOnlyList<T>
int SumAtOddIndices(IReadOnlyList<int> items)
{
var sum = 0;
for (int i = 1; i < items.Count; i += 2)
sum += items[i];
return sum;
}
// ✅ Публичный контракт, где важно "списочно и read-only"
public interface IOrderService
{
IReadOnlyList<Order> GetRecent();
// клиент может перебирать и индексировать,
// но не может добавить/удалить заказы
}
// ✅ Стриминг из источника — только перечислить
public static IEnumerable<string> ReadLines(Stream s)
{
using var r = new StreamReader(s);
while (!r.EndOfStream)
yield return r.ReadLine()!;
}
Такой подход делает контракты честными и код предсказуемым, а лишние
.ToList()
уходят в прошлое.#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤3
Недавний разбор MauiReactor в блоге Microsoft показал, как можно писать UI в стиле React/Flutter — декларативно и с горячей перезагрузкой.
MauiReactor выступает как тонкий слой над MAUI, минимизируя зависимость от XAML и обеспечивая высокую продуктивность при создании UI.
#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍2🤔1🥱1
This media is not supported in your browser
VIEW IN TELEGRAM
❗ Так, владелец макбука. Хватит позировать в кофейне.
Настоящее портфолио — это не стикеры на крышке, а проект с чистым кодом, README и рабочей демкой.
Не знаешь, как такой собрать? Научим. Наш курс «ML для старта в Data Science» — это пошаговый гайд к проекту, за который не стыдно.
ОСТАЛАСЬ НЕДЕЛЯ, чтобы забрать его по старой цене в 44.000 ₽. С 1 сентября — всё.
🎁 И да, при покупке курса ML до 1 сентября — курс по Python получаешь бесплатно.
👉 Апгрейд от «вайба» до «оффера» тут
Настоящее портфолио — это не стикеры на крышке, а проект с чистым кодом, README и рабочей демкой.
Не знаешь, как такой собрать? Научим. Наш курс «ML для старта в Data Science» — это пошаговый гайд к проекту, за который не стыдно.
ОСТАЛАСЬ НЕДЕЛЯ, чтобы забрать его по старой цене в 44.000 ₽. С 1 сентября — всё.
🎁 И да, при покупке курса ML до 1 сентября — курс по Python получаешь бесплатно.
👉 Апгрейд от «вайба» до «оффера» тут
🥱1