Единый тред по Си-шарп.
Есть тут кто пишет код на C# с использованием DDD, TDD, Agile? Юзаете ли самописные extension methods(какие?) или используете готовые(moreLinq etc)? Используете ли вы в быту монады(кроме IEnumerable) и какие? Нашёл тут github.com/sergun/monads.net. Судя по примерам, можно чуть сократить boilerPlate. codeproject.com/Articles/649989/Monad-like-programming-with-Csharp Вот ещё интересная статья. Шарпотред. Расчехляйте свои Helper.dll.
>monads >c# я пробовал многажды. монадический код выглядит настолько визульно сложно, что оно того не стоит. >TDD, Agile обезьяньи ужимки. >DDD не слышал, но осуждаю.
>обезьяньи ужимки девчую
Алсо, раз доска все-равно мертвая, мне интересно в чем агил и тдд проявляются у опа. Он что, пишет программы корректируя каждый шаг с клиентом и дописывая находу требуемые функции, может даже составляя детсадовские карточки вроде - я нажму эту кнопку и случится то-то и то-то? Он пишет тесты раньше чем код и код пишет только так что бы тот проходил тесты?
>пишет программы корректируя каждый шаг с клиентом и дописывая находу требуемые функции Почти так и происходит. >Он пишет тесты раньше чем код и код пишет только так что бы тот проходил тесты Иногда так. Иногда пишу быстро прототип того, что нужно и уже потом покрываю тестами. Тесты неиллюзорно помогают при внесении изменений. Мне нравится думать о (блочных)тестах как о некой проверке кода на адекватность. Иногда пишу тесты и узнаю по ним, что что-то работает не так как ожидалось, хотя при этом компилируется и не кидает исключений.
>Иногда пишу быстро прототип того, что нужно и уже потом покрываю тестами. Это не тдд.
>>11035 Конечно не тдд. Тдд как единственный метод для разработки всего слишком узок.
>>11022 Монады в быту использовал в .NET'е, как и в C# так и в F#. Как-то раз нужно было писать сервис, api которого подразумевал целую кучу опциональных значений, там-то самописная Maybe и пригодилась, получилось вполне прилично и удобно. Далее понадобилось написать парсер на небольшого формального подмножества естественного языка, и тут сильно пригодился FParsec для F#.
>>11049 >там-то самописная Maybe и пригодилась, получилось вполне прилично и удобно. Ты или пиздобол, или говноед. Сотни вложенных лямбд - не самое приличное и удобное на этом свете. Уж лучше ранние ретурны.
>>11050 Если определить extension методы SelectMany, Where, Select и т.п. то можно будет пользоваться LINQ в виде запросов, что весьма похоже на монадический синтаксис: from x in something.ToMaybe() from y in somewhat.ToMaybe() select x.DoSomeStuffWith(y)
>>11052 А, вон ты про что. Прошу прощения. Я линку синтаксис просто не перевариваю, поэтому у меня были Fmap(), Bind(...) и тонны анонимок.
>>11053 А просто extension методы и различные helper'ы я очень активно использую. Из чего-то более менее нестандратного могу вспомнить такую штуку: Было нужно в одном месте передавать названия некоторых полей, свойств или методов, и захотелось делать так, чтобы при изменении их названий через рефакторинг не нужно было менять их ручками. Передача таких названий, это, конечно, плохая практика, но это был легаси код и исправлять его более глобально совсем не хотелось. Тогда родилось такое решение: Name.For<MyClass>.Of(x=>x.SomeProperty), которое возвращает название соотвествующего поля, св-ва или метода указанного класса.
>>11054 У меня начальник такую штуку написал для всяких озервабл. Охуенная вещь была.
public static T Match<T>( this T target, Predicate<T> predicate, Action<T> whenMatched) { if (predicate(target)) whenMatched(target); return target; }
А я как-то раз запилил логирование NLog'ом и вызов по типу экзепшена: private static readonly Logger Log = LogManager.GetCurrentClassLogger(); private static T LogThrow<T>(string message) where T : Exception { ....Log.Error(message); ....return (T) Activator.CreateInstance(typeof (T), BindingFlags.CreateInstance, message); } Вызывалось так: throw LogThrow<DivideByZeroException>($"You should not devide {value} by zelo");
> DDD, TDD, Agile Хуита. Учитывая, что всё должно было быть готово вчера, а на тесты вечно времени нет. И тесты постоянно стремительно устаревают, а времени на их сопровождение нет. Конечно, круто прогнать тесты и увидеть, что ты сломал до тестирования/продакшена, но на тесты нужно время, а менеджер — пидорас. > Юзаете ли самописные extension methods(какие?) Да. Перечислять долго — они все дико ситуативные. Например, какие-нибудь специфичные преобразования чего-нибудь в кого-нибудь: ToSafePenis(this Penis penis) { if(penis == null) return new Penis(); if(penis.Length == 12) return new Penis(28); return penis; } Написал хуйню, но идея ясна. Так же в экстеншоны запихиваются методы-беспризорники. Или хитровыебанные сортировки/поиски туда же отправляются.
Привет Балмеры, Ну кароче, выучил C#, AppStudio и терь не знаю че собстна делать. Вродь все знаю, а вот задачи выполнить не могу. Подкиньте каких-нибудь средних заданий для практики. пикч рандом
https://projecteuler.net/
Друзья, необходим sip sdk для C# халявный. Есть у кого что нибудь посоветовать?
https://github.com/sipsorcery/sipsorcery Не подойдет?
решил стать инди разрабом. учю с# под юнити(пока под 2D). решил спросить совета у гуру и более опытных в этом деле. как правильно начать, что бы не ударить в грязь лицом? что учить в первую очередь, а с чем подождать? какие форумы и каналы на youtube будут полезны, а на какие даже не заходить?
С Розенталя.
>>20172 Рекомендую обратиться с этими вопросами в прикреплённый тред для начинающих. >>20173 Рекомендую самоутверждаться в другом месте.
Здравствуйте, посоветуйте книги для изучение SQL в С#
>>24749 Ты чего конкретно хочешь узнать и освоить? Потому, что вопрос широкий, как твоя мамка. Начнём с того, что SQLа много разного: MSSQL (серверая), PostgreSQL (серверая), MySql (серверная), SQLite (встраеваемая) и другие с которыми я не работал. Работа с БД с C# тоже ну очень разная: Entity Framework (полноценная ORM), Dapper (легковесная), Linq2Sql (ORM), nHibernate (полноценная ORM), ADO.Net (устарел) и другие с которыми я не работал. C# тоже бывает разный: .Net Core (кросс платформенное решение), .Net Framework (win), ASP.net (веб), ASP .net core (веб), Xamarin (мобилы). Там есть нюансы, но небольшие. И работы SQL + C# тоже много разной бывает: Code First (на основе моделей создаётся база), DbFirst (на основе базы создаёются модели), и ещё наверное какая-то дичь существует. Вот MSDN-наше-всё: EF+Core: https://docs.microsoft.com/en-us/ef/core/ MSSQL Server: https://docs.microsoft.com/en-us/sql/sql-server/?view=sql-server-ver15 MSSQL Server: https://docs.microsoft.com/en-us/sql/sql-server/educational-sql-resources Вообще, я не фанат ИТ-книжек, так как они устаревают слишком быстро. Вот парочка: EF: https://www.amazon.com/Practical-Entity-Framework-Enterprise-Applications/dp/1484260430 EF: https://www.amazon.com/Modern-Data-Access-Entity-Framework-ebook/dp/B07F2YRV9S MSSQL: https://www.amazon.com/T-SQL-Fundamentals-3rd-Itzik-Ben-Gan/dp/150930200X MSSQL: https://www.amazon.com/SQL-Cookbook-Solutions-Techniques-Developers/dp/0596009763/138-9950719-2335926?psc=1 Но, для тех, кто работает с техами от MS: MSDN ( https://docs.microsoft.com/en-us/ ) — наше всё.
>>24752 Несколько странно говорить, что .NET Framework есть (win), когда есть вполне себе живое и работоспособное Mono. Да и C# там в сущности примерно одинаковый, разные библиотеки только.
Как перебрать ассоциативный массив через foreach? С#
Если ассоциативный массив - это Dictionary, то: foreach (var (key, value) in myDictionary) { } Больше вариантов здесь: https://stackoverflow.com/questions/141088/what-is-the-best-way-to-iterate-over-a-dictionary
dev |> Threads.getBySubject "C#" |> Threads.rename ".NET" |> profit