Обновить
4
Тетюев Павел@jetexe

Программист

1
Подписчики
Отправить сообщение

PlantUML генерация UML из текста. Поддерживается в Gitlab из коробки, в IDE (VSCode и JetBrains точно) поддержка добавляется плагинами. Используем для документации и иногда для разработки. Легко вносятся изменения, мержится наглядно (ибо текст первичен). Поддерживаются темы

Прошелся по нашему стеку. Новые бэкэнды пишутся на: PHP, Kotlin, GO и Phyton. Язык выбирается в зависимости от задачи

а каких специальных служб? такой структуры как "милиция" в России не существует уже давно, расцветки такой у служебного транспорта тоже, герб на двери уже тридцать лет как...

Для каких "окружающих" посреди тайги? в городе на этой дрыгалке всё равно не покатаешь

Некоторые думают, что из-за этого не придётся подавать декларацию на дивиденды, а на самом деле при первой же камералке вам придётся выплатить налог по полной программе и в России и в США

Социалка в РФ — это, вообще-то, плохой ориентир

рекурсивный алгоритм получается.


С учётом того, что реальные располагаемые денежные доходы населения падают седьмой год подряд, медиана снижается, за ней теперь поползёт и прожиточный минимум, за ним (скорее всего) поползёт МРОТ, за ним медиана и так по кругу

Так при пробое оптика не проведёт ток. Да и помех на меди от силового кабеля можно наловить

так если есть шаблон, то и накатывать надо не один раз, а сразу на несколько сервисов

А патчи git в этом случае не лучше подходят? не надо дополнительных remote создавать

Чтобы своим лицом не отсвечивать на весь интернет?

В ООН она плыла на эко яхте, для этого ей понадобилось два экипажа по пять моряков (пять доставили её до NYC и улетели домой на самолёте, другие прилетели и забрали). Вместо двух перелётов одного человека имеем два перелёта пяти человек.


Фото из поезда в Германии: на полу с чемоданами… Бедная девочка…
Вот только почему-то нет фото где она сидит в этом же поезде на своём месте в первом классе.


Всё она понимает, и всё её устраивает

Пользуюсь плагином Vimium в Firefox. Для него эта клавиша "F"

notepad++ лучше — там плагины есть

Не сделали. Т.к. есть ветка где вы решились на эксперимент и ветка где не решились. Есть даже ветка где вы не задумались над проведением эксперимента

Знаете, я как-то рассчитывал, что с учетом темы дискуссии вы не будете придираться к этой формулировке

Прошу прощения, это было лишним.


Какое поведение задает интерфейс без методов

Это маркер, но мы скорее говорим о непустых интерфейсах


В моем примере NodeTypeN могут находиться вообще в разных библиотеках, разрабатываемых разными людьми и ничего не знать друг про друга

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


Ну накиньте на какой-нибудь класс из папки vendor. Получится?)

Разумеется получится. Адаптеры, прокси, декораторы на выбор


Я предложил конкретный пример с parseNode()

Вы указали абстрактный пример с parseNode()

Так ?User это и есть Union

NullPointer? Объект в php — указатель. Указатель может принимать значение null. Тут нет таких противоречий и этот тип уже есть в языке.


Это не то же самое. Они все должны теперь этот интерфейс откуда-то импортировать и добавить в объявление класса, даже если parseNode никаких функций не вызывает. Это повышает взаимозависимости. Я бы даже сказал, интерфейс в данном случае это имитация множественных типов, за счет того что от него могут разные типы наследоваться

Ой какая каша у вас в знаниях…


  1. Классы не наследуются от интерфейсов.
  2. Интерфейсы позволяют унифицировать поведение, если у вас есть какие-то классы обладающие одинаковым api, коду уже будет не важно в большинстве случаев какая конкретно у вас реализация.
  3. Интерфейсы уменьшают взаимозависимости т.к. скрывают детали реализации.

Просто для примера: допустим у вас есть сущности совершенно разных классов которые умеют кастится в сообщение для логов. Нам достаточно будет накинуть интерфейс с методом, условно, toLog и в принимающем методе логгера затайпхинтить по этому интерфейсу. Или вы предлагаете и в логгере написать Union со всеми классами которые этот метод имплементируют?

Переписал на текущем синтаксисе. И зачем тут Union?


$user = getUser((string) $id);

function getUser(string $id): ?User
{
    ...
}

$node = parseNode($str);

function parseNode(): NodeInterface
{
    ...
}
Я, например, скажу, что это плохой код. Если вам надо обрабатывать массив — делайте метод который принимает массив.

Информация

В рейтинге
Не участвует
Дата рождения
Зарегистрирован
Активность