All streams
Search
Write a publication
Pull to refresh
19
0
Андрей Цветков @AndreyTS

User

Send message
Почему же, если на уровне проекта мы заявляем: «методы никогда не возвращают null», то, соответственно, нужно внедрить в код каждого метода, возвращающего ссылочный тип, вышеуказанный контракт. Это работа для AOP.

При этом подразумевается, что повсеместно (где необходимо) передается/возвращается Maybe. Точки сочленения с внешним миром оборачиваются, если необходимо, тоже в Maybe. И — вуаля, «ошибка на миллион долларов» исправлена :)
Пожалуйста :) Исходные коды его на githube, если в процессе использования родятся какие-то еще общеполезные расширения — пушьте, включим в новые версии пакета.
Конечно, это оно, да и Func<T, ...> тоже есть, как функциональный тип.

Но и то, и другое можно поудобнее сделать.

Например, поддержать анонимный функциональный тип вида (int -> string), автоматически приводимый к любому подходящему делегату, как Func<int, string> так и какому-нибудь sting MyCustomDelegate(int a).

То же и с кортежами:
Сейчас так:

var tuple = IntegerDivide(5, 3);
var div = tuple.Item1;
var mod = tuple.Item2; 

А можно было бы так:
var (div, mod) = IntegerDivide(5, 3); 
Ну, я имею в виду так, чтобы глобально, например, для целого проекта запретить. На уровне метода — да, контракты. Ну а на уровне проекта — тоже контракты, но с AOP, я об этом написал ниже :)
Согласен, в команде конечно же нужно следовать общим политикам, тут и говорить нечего.
Ну может этот наш гипотетический популяризатор готов пожертвовать своим рейтингом (который ему не поставят нелюбители coffee) на эту фразу. А может, ему любители кофе еще и добавят, кто знает. Слава Богу, это решает сообщество, плюсуя, а не авторитарные личности с призывами «запретить». Спасибо, слон уже есть :)

А как можно спрашивать о JS, приводя пример на CS? Ведь такой вопрос можно автоматом считать про CS, да и все.
Ну может этот гипотетический популяризатор готов обменять свой рейтинг (который ему не поставят coffee-
Но автор-то даже и спрашивать на эсперанто запрещает. Это вообще, по-моему, за гранью.

Насчет ответов — с одной стороны, соглашусь, на js общепонятнее будет.

С другой стороны — ответ на SO дело добровольное, как и чтение такого ответа. И если человек хочет потратить свое время на ответ, и в качестве «платы» желает популяризовать что-то, например, любимый диалект, почему он не вправе? Не понимаете coffee/typescript/… — пропускайте этот, читайте другие ответы. Давший ответ ничем не обязан вам, чтобы вы ему условия ставили, правда ведь?
А отличная идея — в более широком смысле — вообще запретить окружающим: говорить непонятные мне слова, т.к. «я их не понимаю», оперировать непонятными мне концепциями, т.к. «они мне не знакомы» и т.д. Далеко пойдет автор :)
Да, наверное :) Я не фронтенд-разработчик, ну и тут дело вкуса, есть и других портов Linq куча.
И не только по правой части. Я себе реализовал аналог Linq и при этом получается вот такой типизированный код на TS:

data.document.p.where(paragraphCondition)
    .selectMany(p => p.s.where(sentenceCondition))
    .selectMany(s => s.l)
    .select(l => data.vocabularyItems.firstOrDefault(vi => matchesLexem(vi, l)))
    .where(vocabularyLexem => vocabularyLexem && vocabularyLexem.level < 10 && !alreadyPresent(vocabularyLexem))
    .distinct(vocabularyLexem => vocabularyLexem.descriptor.presentation)
    .foreach(vocabularyLexem => this.vocabularyItems.push(vocabularyLexem));


Где и в последней строчке TS знает правильный тип vocabularyLexem.
Автор увлекается аннотированием, на мой взгляд, излишне. В статье почти все (!) аннотации типов можно выкинуть, *ничего* не потеряв в типизиции. TS отлично умеет выводить типы, как по инициализаторам, так и по использованию.

У в моей аналогичной библиотеке такой код выглядел бы так:
public messagesLoaded = new Event<string[]>();

При этом messagesLoaded имеет четкий тип Event<string[]> — аннотация тут просто не нужна.
Круто! Сам параллельно прохожу аналогичный процесс разработки.

По коду: лучше бы не писать аннотацию типа там, где она очевидна, например: «public MessagesLoaded: Events.Event = new Events.Event(); », и уж тем паче с обобщенными типами.
О, это крайне приятно слышать! :)
Все были расстроены. Морального права *проклинать* Гугл за это, говорить, что они теперь *корпорация зла* — никто, я считаю, *на основании этого факта* не имел. Быть расстроенным, выражать сожаление и выносить суждения об ошибочности такого решения гугла — это сколько угодно.

Вы передергиваете, говоря, что хозяева сервиса «начинают негодовать», я такого в посте не увидел. Они как раз сделали культурно все, прозрачно, объяснили людям что и почему, и как пишет автор, большинство это нормально восприняло.

Если человек пользуется каким-то сервисом бесплатно, то он должен быть в любой момент быть готовым перейти на платную основу или остаться без сервиса. Иначе — это халява, а халява развращает. Что-то есть очень потребительское в отношении «однажды предложили бесплатно — должны всегда».
Если сервис не давал гарантии вам, что он будет вечно сущ, он может завтра же закрыться, и вы не только не имеете морального права быть недовольным, но и должны сказать спасибо, что он предоставлял вам услугу какое-то время.
Этот сорт по-русски называется «корнишон», ну уж никак не геркин :)
Те, что коснулись меня: вся территория вокруг Борисовских прудов, в т.ч. вдоль всей улицы Борисовские пруды.
Ее «продолжение» вокруг течения Городни в Братеево.

Марьинский парк (там и раньше было, а добавилась длинная велодорога в Капотню).

Еще где-то в окрестных районах встречал небольшие локальные «кольцевые» дорожки в микропарках и скверах, которые можно «включить» в маршрут, если ставить целью максимально ехать по в/д.

Вдоль Каширки пока нету, про планы не знаю, но по общей логике происходящего и вдоль Каширки тоже должна появиться (это не знание, просто надежда :) )

Еще видел пару раз за прошлую неделю Газели, везущие куда-то крытые (с крышей) велопарковки. Установленных пока не видел :)
Не знаю где как, а Москве этот круг, похоже, разрывается. И дай-то Бог чтобы хорошо разорвался :)
О, да, в самый буран мне довелось поколесить по городу — и по снегу, и по льду, и по вот этой каше невообразимой. Зато теперь летний песок или грязь — просто семечки, едешь и не замечаешь :)

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity