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
Как скрыть от потребителя библиотеки лишние зависимости?
Недавно, я написал небольшую надстройку над AutoFixture, которая позволяет при создании объекта базового абстрактного класса получить экземпляр случайного наследника.
Допустим, у нас есть подобная иерархия:
Ожидается, что мы получим случайным образом либо
Однако, базовый функционал библиотеки не даёт такого поведения из коробки.
С помощью моего NuGet пакета можно настроить
В связи с тем, что она создана как дополнение к AutoFixture, присутствует зависимость, которая потом попадает к потребителю в раздел Implicitly Installed Packages.
Согласитесь, неприятно.
Решается проблема очень просто, достаточно пометить зависимость атрибутом
Недавно, я написал небольшую надстройку над AutoFixture, которая позволяет при создании объекта базового абстрактного класса получить экземпляр случайного наследника.
Допустим, у нас есть подобная иерархия:
abstract class A { }Если написать
class B : A { }
class C : A { }
fixture.Create<A>()
, то мы получим исключение, поскольку вызывать new для абстрактных классов запрещено.Ожидается, что мы получим случайным образом либо
new B()
, либо new C()
.Однако, базовый функционал библиотеки не даёт такого поведения из коробки.
С помощью моего NuGet пакета можно настроить
fixture
таким образом, и всё заработает:fixture.CustomizePolymorphism<A>()Так вот при создании библиотеки возникла проблема.
.WithDerivedType<B>()
.WithDerivedType<C>()
.BuildCustomization();
В связи с тем, что она создана как дополнение к AutoFixture, присутствует зависимость, которая потом попадает к потребителю в раздел Implicitly Installed Packages.
Согласитесь, неприятно.
Решается проблема очень просто, достаточно пометить зависимость атрибутом
PrivateAssets
со значением all
в конфигурации файла проекта:<PackageReference Include="AutoFixture" Version="4.18.0" PrivateAssets="all"/>#полезное #tips
👍4🤔1
🤯21👍11👎2
Что такое .NET?
.NET это фреймворк (платформа), написанный компанией Microsoft для создания множества разных типов приложений. Почему фреймворк назвали именно так, до сих пор до конца не ясно.
.NET позволяет работать со множеством языков - C#, F#, Visual Basic. C#, как вы поняли самый популярный.
На сегодняшний день, современным видением платформы то, что выросло из .NET Core. То есть, курс на кросс-платформенность и отсутствие привязки к операционной системе Windows. Тут уже и приложения быстрее, и можно собрать приложение из микросервисов в Docker контейнерах.
Что можно сделать с помощью .NET?
Веб, мобилки, десктоп, ML, геймдев, IoT и так далее.
Но люди все равно выберут Java, поэтому пожелаем роста платформе!
Если хотите узнать больше о платформе .NET, поделитесь этим в комментариях!
#полезное #tips
.NET это фреймворк (платформа), написанный компанией Microsoft для создания множества разных типов приложений. Почему фреймворк назвали именно так, до сих пор до конца не ясно.
.NET позволяет работать со множеством языков - C#, F#, Visual Basic. C#, как вы поняли самый популярный.
На сегодняшний день, современным видением платформы то, что выросло из .NET Core. То есть, курс на кросс-платформенность и отсутствие привязки к операционной системе Windows. Тут уже и приложения быстрее, и можно собрать приложение из микросервисов в Docker контейнерах.
Что можно сделать с помощью .NET?
Веб, мобилки, десктоп, ML, геймдев, IoT и так далее.
Но люди все равно выберут Java, поэтому пожелаем роста платформе!
Если хотите узнать больше о платформе .NET, поделитесь этим в комментариях!
#полезное #tips
👍16🔥1
👎22💩2
Freeze
/Inject
/Register
в AutoFixtureДавным-давно, в первых версиях библиотеки балом правил
Register
. Два других метода ещё не существовали.Определён он был следующим образом:
public static void Register<T>(this IFixture fixture, T item)
Однако, была и перегрузка:public static void Register<T>(this IFixture fixture, Func<T> creator)
Какое-то время казалось, что это нормально, впрочем, вскоре пользователи стали путаться. Например, можно было написать следующий код:fixture.Register(() => universe.LightUp());
Поскольку делегат может получаться путём приведения ссылкой на метод, то валидной была и следующая запись:fixture.Register(universe.LightUp);
Что если universe.LightUp
это обращение к свойству, а не к методу? Тогда была бы выбрана первая перегрузка.Но это крайне неочевидно.
Поэтому первая перегрузка превратилась в
Inject<T>(this IFixture fixture, T item)
.У метода
Freeze
несколько другая история.В прошлом оказалось, что достаточно часто встречается следующее использование AutoFixture в императивном стиле:
var foo = fixture.Create<Foo>();
fixture.Inject(foo);
Тогда, автор библиотеки решил, что это так называемая концепция заморозки.В итоге два вызова превратились в один метод
Freeze
.#полезное #tips