All streams
Search
Write a publication
Pull to refresh
41
7.5

Люблю делать UI и офисные приложения

Send message

ему этот ООП как филькина грамота. Даёшь функциональщину! Вот это дело. Паттерн матчинги, лямбды, вот это всё нужно. А ваши ООП, это для дедов :)

А это ООП или функциональщина?

db.Categories    
  .GroupJoin(db.Products,
      Category => Category.CategoryId,
      Product => Product.CategoryId,
      (x, y) => new { Category = x, Products = y })
  .SelectMany(
      xy => xy.Products.DefaultIfEmpty(),
      (x, y) => new { Category = x.Category, Product = y })
  .Select(s => new
  {
      CategoryName = s.Category.Name,     
      ProductName = s.Product.Name   
  });

Классы нужны чтобы неявно передавать данные класса (поля) в процедуры класса (методы)

Вам нужны?

А мне они нужны, чтобы сразу видеть, что к чему относится, когда я знакомлюсь с проектом. А то на собеседовании наобещают: наш код неплохой, только ссытся и глухой злоупотребляем кодами возврата, а как откроешь первый раз кодебазу, так поседеешь.

оно же паттерн-матчинг - в зачаточном состоянии;

В языке нет, и неизвестно когда будет (сам удивляюсь). Но есть внешние реализации в соответствии с пропозалом. Я остановился на этой (https://github.com/shuckster/match-iz), чего и всем рекомендую.

По существу вопроса. На практике одна из важнейших частей джаваскрипта — DOM, формально даже не входящая в язык. Так вот, она прискорбно нефункциональна (императивна).

ООП не нужен: смотри на Linux

Вы не Гугл команда Linux. Если бы вы были командой Linux, вы бы написали ядро, которым пользуются миллиарды, и не запутались даже без классов, обходясь техниками типа дескрипторов. Если вы его не написали, смиритесь, что вы средние программисты, которых окружают средние программисты, и пишите простой и понятный код с классами, чтобы его мог понять даже я.

Я, в детстве встававший в шесть утра, чтобы пойти с тётей на завод к знакомым инженерам и два часа поработать на 286AT:

Да, дело не в грибах и эльфах. А в том, что он на старости лет крепко рассорился с головой. Очень жаль, между прочим: голова у него умная. Я на него был подписан на SO и с удовольствием читал его ответы. Что с ним случилось, интересно. Попал в ДТП? Вынюхал килограмм кокаина и сжёг свой мозг?

Скажите, вы правда думаете, что Несовершеннолетний — это отдельный таксон Человека? Я имею в виду, по жизни? Вообще-то, DDD прямо запрещает такое наследование (наследование это закрепление в коде отношений «общий случай» → «частный случай»). Оно говорит: да, формально вы, конечно, можете ТАК классифицировать, ведь логика не запрещает. Но поскольку в первоисточнике так НЕ классифицируют, делать это не надо, а надо скопировать классификацию из оригинала. По сути, DDD это не какая-то заумная методология, а простой совет, который на дворовом языке звучит так: кодерок, не вы..уйся, а пользуйся классификациями, которые придумали люди поумнее тебя. Так ты от себя не добавишь ошибок.

А в оригинале (законах) несовершеннолетний — это самый настоящий человек. На которого иногда законом налагаются какие-то ограничения. Иногда это ограничения по возрасту (нельзя покупать алкоголь и голосовать). Иногда это ограничения против личности (издан судебный запрет продавать алкоголь Джону и Джону подходить к дому Мэри ближе, чем на 100 метров). Почему так сделано, легко догадаться. Потому, что когда Джону исполняется 16/18/21, он не переходит в новый таксон. Что это за классификация вообще такая, если в ней изначально заложено противоречие?

Если программист следует чужой классификации, он избегает этой проблемы даже не напрягая головушку. Классы у него в коде — величина неизменная, и что делать, если инстанс “John” переходит границу совершеннолетия прямо в момент транзакции? Что делать с ORM, которая в этот момент инвалидируется? А что делать с изменениями границ возраста в законах, которые инвалидируют целую базу? Пересчёт вручную? Если бы для класса Человек были сделаны: 1) проверка правил, в т.ч. по возрасту, 2) проверка по id (можно Driver ID, лол) на включение в справочник запретов (судебных ордеров), проблем бы не возникло.

Наверно, потому, что (в отличие от дотнета, например) нет перегружаемого .equal() на базовом уровне.

Так а я разве спорю? Именно виртуальная машина. И именно динамически типизированная. Поэтому делать статически типизированный язык под динамически типизированную ВМ это как получать солнечные лучи из огурцов.

Об этом и была картинка. (На самом деле, это кадр из видео).

«100 тысяч строк на скриптах» как-то не вяжется с «верным выбором».

Я люблю этот язык (ES) и пишу на нём весь UI (разумеется, когда нельзя достичь желаемого на pure CSS, а это не так уж часто). Ещё на нём удобно делать glue для низкоуровневых библиотек, плагины для препроцессоров и макросы для Фотошопа. Но если бы мне пришлось писать на нём бизнес-логику и другие вещи на сотни тысяч строк, я бы сильно огорчился.

тупо захватила рынок веб-дева

В том-то и дело, что ни фига. Вот и пытаются зайти через TS.

Вы понимаете что JS - это не язык, а виртуальная машина?

Она делает это без уважения!

В чем отличие Composite от

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

Тогда придётся 250$ заплатить самому себе.

Куплю за 250$, когда устройство научится тыкать чем-нибудь острым в жопу (когда пора быть busy, а ты читаешь про всякие гламурные устройства на Хабре).

За такое, в принципе, и 500$ не жалко.

А как эти роботы определяют, что входит в контекст? Эвристики? Или тупо по границам скоупа?

Зачем так сложно? Падает nVidia → утаскивает за собой рынок → вы теряете работу.

Последнее падение им. Дипсика показало, что поза инвесторов (ЕВПОЧЯ) — низкий старт. А пошлины позаботятся, чтобы никто не ушёл обиженным с этого праздника жизни.

Если компилятор заставит написать foo((unsigned)y), чтобы при поиске ошибки у читающего возник вопрос, а почему не foo(y >= 0 ? (unsigned)y : 0) (второй 0 можно заменить на логгирование/исключение/::exit(-146)/whatever), я бы сказал, он свою задачу выполнил.

Проверка не является одним целым с вызовом и при очередном рефакторинге может быть (ошибочно) стёрта.

Я бы не назвал такой код «абсолютно валидным и беспроблемным». Если программист хочет взять на себя ответственность — пусть делает это явно.

Information

Rating
787-th
Location
Россия
Registered
Activity

Specialization

Software Developer, Application Developer
HTML
CSS
JavaScript
Windows API
C++
UI/UX design
Interface development
Product Design
Adobe Photoshop
Designing interfaces