Возможно вы не знали этот метод LINQ
С 6-ой версии в .NET присутствует метод
#полезное #tips
С 6-ой версии в .NET присутствует метод
Chunk
, который позволяет дробить коллекцию на одинаковые кусочки, так называемые "чанки".// получаем итерируемый объектПользуйтесь на здоровье!
var enumerable = Enumerable.Range(1, 999);
// дробим на чанки
var chunks = enumerable.Chunk(29);
// итерируем по чанкам
foreach(var chunk in chunks) // для каждого чанка
{
foreach(var item in chunk) // для каждого элемента в чанке
{
Console.WriteLine(item);
}
}
#полезное #tips
🔥25👍12❤2
Что из нижеперечисленного не может иметь модификатор virtual?
Anonymous Quiz
12%
Свойства
33%
Поля
43%
Индексаторы
12%
Методы
👍8
Как определяются атрибуты?
Anonymous Quiz
1%
/ Имя атрибута /
74%
[ Имя атрибута ]
9%
{ Имя атрибута }
16%
< Имя атрибута >
Как генерировать валидные данные?
Активные читатели моего канала могут подумать, что сейчас будет очередной пост про какую-нибудь кастомизацию AutoFixture, ведь все знают, как библиотека генерирует строки и числа.
А вот и нет! В сегодняшнем разговоре о генерации данных ключевое слово валидные.
Ответ на вопрос в заголовке: Bogus.
Да, для C# существует не один генератор данных.
Но разница проявляется как в назначении, так и в устройстве.
AutoFixture - это скорее некоторое подобие DI контейнера с CQRS архитектурой.
Bogus - инструмент, больше похожий на FluentValudation.
Для каждой модельки создаётся специальный генератор.
В нём с помощью
В арсенале богуса есть адреса, имена, различные локали, схемы генерации, расширяемость и многое другое.
#полезное #tips
Активные читатели моего канала могут подумать, что сейчас будет очередной пост про какую-нибудь кастомизацию AutoFixture, ведь все знают, как библиотека генерирует строки и числа.
А вот и нет! В сегодняшнем разговоре о генерации данных ключевое слово валидные.
Ответ на вопрос в заголовке: Bogus.
Да, для C# существует не один генератор данных.
Но разница проявляется как в назначении, так и в устройстве.
AutoFixture - это скорее некоторое подобие DI контейнера с CQRS архитектурой.
Bogus - инструмент, больше похожий на FluentValudation.
Для каждой модельки создаётся специальный генератор.
В нём с помощью
fluent interface api
всем полям прописываются правила по заполнению значений.public class OrderFaker : Faker<Order>
{
public OrderFaker()
{
RuleFor(o => o.OrderId, f => f.Guid.NewGuid());
RuleFor(o => o.Item, f => f.Lorem.Sentence());
RuleFor(o => o.Quantity, f => f.Random.Number(1, 10));
}
}
var orderFaker = new OrderFaker();
var order = orderFaker.Generate();
Таким образом, данные получаются осмысленными.В арсенале богуса есть адреса, имена, различные локали, схемы генерации, расширяемость и многое другое.
#полезное #tips
👍8
Какие из модификаторов не может иметь абстрактный класс?
Anonymous Quiz
22%
static, internal.
56%
sealed, static.
22%
sealed, internal.
Какой длины должны быть функции?
Если обратиться к такой классике, как «Чистый Код» Роберта С. Мартина, то можно увидеть следующее:
Первое правило функций — они должны быть маленькими. Второе правило функций заключается в том, что они должны быть еще меньше
То есть, кажется, что это означает примерно следующее:
1️⃣ Функции должны быть короткими — не длиннее 20 строк и в большинстве случаев менее 10 строк.
2️⃣ Функции должны иметь как можно меньше аргументов, желательно ни одного.
Стоит придерживаться стратегии «разделяй и властвуй».
Попробовать разделить метод на несколько логических шагов, определить что от чего зависит.
Затем, разбить это на минимальные модули, которые соединяются в единый механизм, например, с помощью внедрения зависимостей.
Такие действия, безусловно, помогут начертить границы ответственностей, сделают код чище и читабельнее.
Однако, практика показывает, что в любом проекте можно найти большой объём кода под рефакторинг с методами и на 100, 200, 300 строк с десятком параметров.
Как вы думаете, стоит их распиливать и переписывать?
#полезное #tips
Если обратиться к такой классике, как «Чистый Код» Роберта С. Мартина, то можно увидеть следующее:
1️⃣ Функции должны быть короткими — не длиннее 20 строк и в большинстве случаев менее 10 строк.
2️⃣ Функции должны иметь как можно меньше аргументов, желательно ни одного.
Стоит придерживаться стратегии «разделяй и властвуй».
Попробовать разделить метод на несколько логических шагов, определить что от чего зависит.
Затем, разбить это на минимальные модули, которые соединяются в единый механизм, например, с помощью внедрения зависимостей.
Такие действия, безусловно, помогут начертить границы ответственностей, сделают код чище и читабельнее.
Однако, практика показывает, что в любом проекте можно найти большой объём кода под рефакторинг с методами и на 100, 200, 300 строк с десятком параметров.
Как вы думаете, стоит их распиливать и переписывать?
#полезное #tips
💯6👍4
Full-Stack .NET Developer
Полная занятость, удаленно
Зарплата: 4500-5700$
Компания: Smartbrain.io
Описание: https://telegra.ph/Full-Stack-NET-Developer-07-29
#вакансия
Полная занятость, удаленно
Зарплата: 4500-5700$
Компания: Smartbrain.io
Описание: https://telegra.ph/Full-Stack-NET-Developer-07-29
#вакансия
Telegraph
Full-Stack .NET Developer
Remote | full time | 4500-5700$Smartbrein.io Технологии: Серверная часть: C#, http://Asp.Net, Docker, Kubernetes, Azure DevOps, Entity Framework, микросервисы, SQL Server Внешний интерфейс: HTML, Javascript/Typescript, современная среда JS: Vue.js (предпочтительно)…
👍1
Где хранятся экземпляры типов значений?
Anonymous Quiz
3%
Хранятся на диске
21%
Хранятся в управляемой куче
34%
Могут храниться в управляемой куче и на стеке
42%
Хранятся на стеке
😱9👎1
Как лучше регистрировать коллекцию зависимостей?
Представим, что вам нужно внедрить коллекцию из сервисов типа
▪️Создать свою кастомную коллекцию, и зарегистрировать её.
▪️Буквально зарегистрировать объект списка или массива с набором нужных зависимостей
Однако можно поступить гораздо проще и просто регистрировать зависимости как обычно. Например:
#полезное #tips
Представим, что вам нужно внедрить коллекцию из сервисов типа
IMyService
. Тогда вы ожидаете её вот так:class MyOtherService : IMyOtherServiceЧто приходит на ум?
{
public MyOtherService(IEnumerable<IMyService> myServices)
{
//...
}
}
▪️Создать свою кастомную коллекцию, и зарегистрировать её.
▪️Буквально зарегистрировать объект списка или массива с набором нужных зависимостей
Однако можно поступить гораздо проще и просто регистрировать зависимости как обычно. Например:
services.AddScoped<IMyService, MyService>();DI контейнер всё поймёт и даже если будет зарегистрирована всего одна реализация, она будет представлена в коллекции.
#полезное #tips
👍1🔥1
В чем отличие между break и continue?
Anonymous Quiz
1%
Нет отличий
5%
Continue работает только в циклах, break дополнительно в методах
8%
Break используется в Switch case, а continue в циклах
87%
Continue пропускает итерацию, break выходит из цикла
👍8👎6🤯4🤔1🤡1
.Net разработчик
Полная занятость, удаленно
Зарплата: 150 - 400 т.р.
Компания: Platforma
Описание: https://telegra.ph/Net-razrabotchik-08-14
#fulltime #remote
Полная занятость, удаленно
Зарплата: 150 - 400 т.р.
Компания: Platforma
Описание: https://telegra.ph/Net-razrabotchik-08-14
#fulltime #remote
Telegraph
.Net разработчик
Remote | full time | 150 - 400 т.р. Platforma Заработная плата: 150 000 - 400 000 (финансовое вознаграждение в рынке и обсуждается индивидуально с каждым) Локация: Москва / удаленка / гибрид ✅Мы Стартап в партнерстве с крупными федеральными застройщиками.…
💩5🤡2🔥1
Коллеги, поделитесь в комментариях подходами, которые вы используете для рефакторинга.
Интересно, как вы к нему подступаетесь: сразу удаляете старое и встраиваете новое или реализуете своеобразный v2, на который всё постепенно пересаживаете?
Интересно, как вы к нему подступаетесь: сразу удаляете старое и встраиваете новое или реализуете своеобразный v2, на который всё постепенно пересаживаете?
This media is not supported in your browser
VIEW IN TELEGRAM
Когда C# и Python разработчики пытаются что-то обсудить.
😁27🤨1
Где правильно создана переменная?
Anonymous Quiz
3%
x = 0;
1%
$x = 10;
72%
char symbol = 'A';
3%
int num = "1";
21%
float big_num = 23.2234;
👍6👎3
Главное противоречие ООП
Зачастую многие разработчики сталкиваются с популярным заблуждением в коммерческой разработке.
Оно заключается в том, что для каждого класса, который реализует какую-то логику должен быть свой интерфейс.
Эта ситуация называется InterfaceImplementationPair.
В самом деле привычка восходит корнями к C/C++, где принято разделять header и code файлы.
Однако, время ушло далеко вперёд и надобность в подобных действиях сегодня отсутствует.
Наличие интерфейсов в отсутствие полиморфного поведения, мокирования или потребности в поставке контракта наружу через библиотеку лишь увеличивает стоимость сопровождения кода и количество занимаемых байтов на диске хранилища кодовой базы.
Поэтому не стоит бояться отсутствия интерфейсов, код от этого не потеряет в чистоте.
#полезное #tips
Зачастую многие разработчики сталкиваются с популярным заблуждением в коммерческой разработке.
Оно заключается в том, что для каждого класса, который реализует какую-то логику должен быть свой интерфейс.
Эта ситуация называется InterfaceImplementationPair.
В самом деле привычка восходит корнями к C/C++, где принято разделять header и code файлы.
Однако, время ушло далеко вперёд и надобность в подобных действиях сегодня отсутствует.
Наличие интерфейсов в отсутствие полиморфного поведения, мокирования или потребности в поставке контракта наружу через библиотеку лишь увеличивает стоимость сопровождения кода и количество занимаемых байтов на диске хранилища кодовой базы.
Поэтому не стоит бояться отсутствия интерфейсов, код от этого не потеряет в чистоте.
#полезное #tips
👍4❤2
Многомерный массив в C# это?
Anonymous Quiz
3%
В C# нет многомерных массивов
2%
int[]
58%
int[,]
37%
int[][]
C# / .NET Backend Developer
Полная занятость, релокация/удаленно
Компания: Finom
Описание: https://telegra.ph/C--NET-Backend-Developer-08-14
#вакансия
Полная занятость, релокация/удаленно
Компания: Finom
Описание: https://telegra.ph/C--NET-Backend-Developer-08-14
#вакансия
Telegraph
C# / .NET Backend Developer
Relocation | Remote Finom C# / .NET Backend Developer for International Fintech Company (Fully Remote or Relocate to Cyprus) YOUR PROFILE Knowledge of the principles and practical experience in the application of OOP, SOLID, microservice architecture. Excellent…
👍2
Какая конструкция используется для выполнения повторяющихся действий?
Anonymous Quiz
2%
if
8%
switch
89%
for
2%
try
🤡32🤯5😁4