Pull to refresh

Comments 35

Спасибо за чудеса, было интересно. Я всегда использую эти чудеса в моем коде и когда вижу код без чудес то делюсь моими чудесами и с другими.
Если взять любую книгу про C#, то можно получить 1000 серийную серию статей о чудесах. Но лучше взять самые интересные чудеса, будет еще интереснее.

Жду чудеса следующей недели.
Если честно, статья была рассчитана больше на начинающих. Да и прошу принять во внимание, что статья не моего авторства, это перевод. То, что вы сейчас делаете, равносильно тому, чтобы подбежать к группе первоклассников и сказать им «А вы знаете интегральные исчисления? Нет? Ну вы и л-о-о-хи, это же очевидно».
А мне так же кажется что это и тонкий намек на перевод.
Да понятно, что статья для новичков и тем более должно было бить очевидным то, что мой предыдущий комментарии относится к оригиналу. Но все же мне интересно и я хочу продолжения. Я сам всегда положительно отношусь к таким статьям, потому что все равно найдешь для себя что нибудь новое а если нет, то не будет лишним просто еще раз напомнить себе очевидные вещи, даже если это о том как работает if...else…
Всё равно, что «магазин на диване» посмотрел, честное слово…
UFO just landed and posted this here
Не понимаю смысла это использовать, если, как пишет автор: «Также стоит заметить, что один из минусов данного подхода в том, что страдает отладка – ведь для отладчика, каждая цепочка – это один вызов. Чтобы пройтись по вызовам, приходится использовать F11, при этом попадая в каждый из методов. Поэтому во многих случаях мой метод работы с подобным интерфейсом такой: сначала я пишу его в “обычном” стиле, потом делаю отладку, и только когда я уверен что код работает я переписываю его в “монадическом” стиле.»
Unit-тестирование решает вашу проблему на ура.
Да ну вся конструкция With(x => y) выглядит каким-то костылем. Шарпу не хватает чего-то типа person?Address?PostCode (из той же статьи), или даже просто person.Address.PostCode с тем же результатом без всяких исключений, как в objective-c.
Вохможно. Просто я в основном использую ямбды в работе с колекциями(в том числе и sql). В остальном по старинке, для меня так понятней, и код не превращатся в лапшу.
реализовывать в C# монады и не делать поддержки linq query syntax — это круто, конечно.
п. 2 — это не чудо, а симптом нарушения LSP и ISP.
Явное преобразование типа же.
А в исходном его нет? (ну приводите к интерфейсу, а не к конкретному типу, в там примере это не суть)
Там вообще не должно быть преобразования. Ни в исходном ни в «чудесном».
т.е. любой каст ссылычных типов — это нарушение LSP и ISP?
Как преобразование ссылочного типа нарушает LSP можете пояснить?
Явное преобразование обычно используется для «движения вниз» по иерархии классов. То бишь «уточнения типа и интерфейса». А такое уточнение и нарушает LSP, клиентский код должен зависеть только от базового типа и ничего не знать о нижележащей иерархии.
Один момент — должен быть корректным при подстановке, а не независимым.
По-мойму StringUtility, сейчас не модно писать :). Лучше сделать методами расширения.

public static class StringExtension
{ 
     public static string TrimToNull(this String source) 
     { 
         return string.IsNullOrWhiteSpace(source) ? null : source.Trim(); 
     } 
}
Вот-вот, сам MVP, а пишет как джавист :)
Полезная статья. А можно ссылочку на оригинал? (Желательно бы, конечно, добавить ее в пост).
А можно узнать, за что минус-то?
Человек пишет статью, говоря, что это «перевод». Оформляет его как обычную статью, хотя на Хабре есть стиль оформления для перевода (даже с обязательным указанием ссылочки на автора). Ссылки на оригинал нет. Да, с гуглом это не такая проблема, но все же…

З.ы. Я вот, например, больше люблю читать статьи на английском. Тем более там, скорее всего, есть весь цикл статей, и не нужно ждать еще неделю-две до еще одного перевода.
Пойду открою Макконнелла и привнесу неделю чудес на хабр.
>Эти маленькие советы и рекомендации сделают ваш код более кратким, производительным и обслуживаемым. Наверное, многие из вас знают обо всех или некоторых из них, но игнорируют их, либо просто не знают.

Maintainable в данном контексте — поддерживаемый.
Предисловие — идиотское. Блоггер прочитал MSDN или Джона Скита, и спешит поделиться базовыми особенностями C#. Статья разве что для завлечения сомневающихся, изучать C#.
п3 при этом вообще ниочём. Инкапсуляция нужна для обработки обращения к полю, а не ради одной только инкапсуляции, иначе это решение ради решения. Свойство с таким объявлением нужно применять в интерфейсах, чтобы указать какие методы нужно реализовать (только get, оба или только set (интересно, кто так делает?)). При этом, оба варианта написания п2 идентичны, и никаких преимуществ в использовании того или другого варианта (конкретно там) я не наблюдаю.
Сколько минут ушло на написание статьи?
Немного печалит тенденция в последнее время. Такое впечатление, что больше озабоченны тем, чтобы их код выглядел красиво с блекджеком и шлюхами. Про быстродействие и оптимизацию при этом порой забывают.

Фабрики, которые создают только один один и всегда одинаковый объект, класс с одним методом, рефакторинг ради рефакторинга уже становятся нормой.

Писать, а тем более переводить, то, что можно найти в любой актуальной книге для начинающих немного сомнительная практика.
Вы, надеюсь не из тех, кто разворачивает циклы и пишет unsafe код, чтобы выжать еще 2,38% скорости в операции, которая будет использоваться раз в год? =)

Если серьезно, то согласен, что есть много людей, которые мочат всюду всякие AbstractSingletonFactory, из-за чего говнокод выходит на новый уровень. Что печально, некоторые из-за этого думают, что паттерны обычно не нужны.
Первые 3 пункта вроде как решарпер подскажет.
Про StopWatch не знал, спасибо.

И мне кажется что в последнем блоке кода должно быть так:

private static readonly TimeSpan _defaultTimeout = TimeSpan.FromSeconds(30);

(нехватает типа переменной _defaultTimeout?)
string name = value || string.Empty;

А так нельзя? В AS3 можно.
Учу понемногу C# и по сравнению с AS3 мне кажется самым большим неудобством отсутствие автоматического приведения к Boolean
Нет, операндами || могут быть только булевские значения.
Sign up to leave a comment.

Articles