Ычан: [d | b / bro / hr / l / m / med / mi / mu / o / ph / r / s / sci / tran / tu / tv / x | es / vg | au / tr | a / aa / abe / c / fi / jp / rm / tan / to / vn / vo]
[Назад]
Ответ в нить
Имя
Animapcha image [@] [?]
Тема   ( ответ в 11022)
Сообщение flower
Файл 
Пароль  (для удаления файлов и сообщений)
Параметры   
  • Прежде чем постить, ознакомьтесь с правилами.
  • Поддерживаются файлы типов 7Z, BZ, BZ2, GIF, GZ, JPG, MO, MP3, MP4, OGG, OGV, PDF, PNG, PSD, RAR, SVG, SWF, TXT, WEBM, XCF, ZIP размером до 5000 кБ.
  • Ныне 3296 unique user posts. Посмотреть каталог
  • Максимальное количество бампов нити: 500
139134856897.jpg-(168.78KB, 400×300, prog.jpg)
11022
No. 11022    
Есть тут кто пишет код на 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.
No. 11028    
>monads
>c#
я пробовал многажды. монадический код выглядит настолько визульно сложно, что оно того не стоит.

>TDD, Agile
обезьяньи ужимки.

>DDD
не слышал, но осуждаю.
No. 11029    
>обезьяньи ужимки

девчую
No. 11030    
Алсо, раз доска все-равно мертвая, мне интересно в чем агил и тдд проявляются у опа. Он что, пишет программы корректируя каждый шаг с клиентом и дописывая находу требуемые функции, может даже составляя детсадовские карточки вроде - я нажму эту кнопку и случится то-то и то-то? Он пишет тесты раньше чем код и код пишет только так что бы тот проходил тесты?
No. 11033    
>пишет программы корректируя каждый шаг с клиентом и дописывая находу требуемые функции
Почти так и происходит.
>Он пишет тесты раньше чем код и код пишет только так что бы тот проходил тесты
Иногда так. Иногда пишу быстро прототип того, что нужно и уже потом покрываю тестами.

Тесты неиллюзорно помогают при внесении изменений. Мне нравится думать о (блочных)тестах как о некой проверке кода на адекватность. Иногда пишу тесты и узнаю по ним, что что-то работает не так как ожидалось, хотя при этом компилируется и не кидает исключений.
No. 11035    
>Иногда пишу быстро прототип того, что нужно и уже потом покрываю тестами.

Это не тдд.
No. 11038    
>>11035
Конечно не тдд.
Тдд как единственный метод для разработки всего слишком узок.
No. 11049    
>>11022
Монады в быту использовал в .NET'е, как и в C# так и в F#.

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

Далее понадобилось написать парсер на небольшого формального подмножества естественного языка, и тут сильно пригодился FParsec для F#.
No. 11050    
>>11049
>там-то самописная Maybe и пригодилась, получилось вполне прилично и удобно.
Ты или пиздобол, или говноед. Сотни вложенных лямбд - не самое приличное и удобное на этом свете. Уж лучше ранние ретурны.
No. 11052    
>>11050
Если определить extension методы SelectMany, Where, Select и т.п. то можно будет пользоваться LINQ в виде запросов, что весьма похоже на монадический синтаксис:

from x in something.ToMaybe()
from y in somewhat.ToMaybe()
select x.DoSomeStuffWith(y)
No. 11053    
>>11052
А, вон ты про что. Прошу прощения. Я линку синтаксис просто не перевариваю, поэтому у меня были Fmap(), Bind(...) и тонны анонимок.
No. 11054    
>>11053

А просто extension методы и различные helper'ы я очень активно использую.

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

Name.For<MyClass>.Of(x=>x.SomeProperty), которое возвращает название соотвествующего поля, св-ва или метода указанного класса.
No. 11056    
>>11054
У меня начальник такую штуку написал для всяких озервабл. Охуенная вещь была.
No. 11125    
public static T Match<T>(
this T target,
Predicate<T> predicate,
Action<T> whenMatched)
{
if (predicate(target))
whenMatched(target);
return target;
}
No. 14481    
А я как-то раз запилил логирование 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");
No. 14482    
> 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;
}
Написал хуйню, но идея ясна.
Так же в экстеншоны запихиваются методы-беспризорники.
Или хитровыебанные сортировки/поиски туда же отправляются.
Удалить сообщение []
Пароль  
[Mod]