Зачем же так резко? Не Вам этот код поддерживать. А чтоб уменьшить шансы того, что подобный код придется поддерживать, можно было бы и потрудиться дать развернутый ответ. Часто из комментов получаешь больше важной информации, чем из самой статьи.
Постараюсь ответить на коммент выше. Проблема в том, что при передаче метода в качестве аргумента теряется его контекст. То есть это будет работать, пока в передаваемом методе нет использования this. Если вдруг Вы захотите в методе success использовать что-то вроде this.message('success'), то получите ошибку. И без соответствующих тестов ловить ее придется в рантайме. Именно поэтому часто можно увидеть костыли типа this.handleClick = this.handleClick.bind(this); (строка из документации к реакту). Больше информации здесь https://learn.javascript.ru/bind
Сказанное выше справедливо для ES объектов. На счет TS — не уверен, может в TS эта проблема решена (хотя я в этом очень сомневаюсь). Проверить возможности нету, пишу с электрочайника. Если кто-то знает — просветите, плз.
PS: то, что код "полностью рабочий", не делает его хорошим.
Сорри за оффтоп, просто мысли вслух.
Интересно, что в последнее время так много разговоров о том, что наследование — это зло и намного выгодней заменять его композицией и/или абстракцией. Есть подозрение, что скоро его настигнет судьба оператора goto… Но если подумать, наследование — это единственное, что качественно отличает ООП от других парадигм. Остальные "киты" так или иначе реализуемы в рамках не-ООП языков. Не хочу сказать, что ООП ожидает та же судьба, что и наследование, оно так и останется отличным инструментом структурирования кода. Но сколько новых холиваров это породит — сложно представить :)
map, filter и reduce — базовые функции, которые есть в любом высокоуровневом языке, предоставляющем возможности функционального программирования. и python — не исключение. не понимаю, о каких «специфических сокращениях» идет речь…
подобное можно сказать только о яваскриптовом [].forEach(). тут соглашусь — действительно выглядит как костыль
Нет, ну конечно, от части Вы правы. Все зависит от того, как эти атрибуты трактует бизнес логика. Если это просто строки, которые не несут особой смысловой нагрузки — тут согласен. Но если это, например, характеристики товара в магазине(как чаще всего бывает и именно этот кейс я имел в виду), по которым нужно организовывать фильтр, или если, не дай бог, от выбора характеристик зависит цена товара, то тут характеристика — это отдельное отношение и хранение ее в таком виде — очевидная денормализация.
Исправьте, если я неправ.
Если я не ошибаюсь, вынесения атрибутов в отдельную таблицу требует 3-я нормальная форма. И правильнее задаваться вопросом, что нам даст подобная денормализация.
Расскажите это разработчикам явы или питона, например. Аннотации — это не коментарии. Это метаданные, которые могут использоваться (и успешно используются) для многих целей. В php они тоже широко распространены, хотя пока не включены в спецификацию языка… Пока… https://wiki.php.net/rfc/annotations_v2
тут нужно вспомнить, для каких целей изначально создавался HTTP протокол. как по мне — REST покрывает эти цели на 100%. попытки впихнуть в HTTP что-то большее являются костылями изначально. как и все современное web-программирование в принципе…
Ну, возможно, в недалеком будущем, когда этот подход обзаведется экосистемой, появятся архитектурные решения и лучшие практики, он найдет применение… В данный момент, в том виде, в котором Вы его преподносите, как упрощение(я так и не понял чего), мне кажется инфа чисто для ознакомления, чтобы быть «в тренде». Применения она в ближайшее время не найдет…
Хотя, учитывая нынешние темпы развития фронт-енда, это недалекое будущее может наступить прямо завтра :)
Вы всерьез полагаете, что PHP и шаблоны CMS-ок — это просто
встряну в диаолог. как мне видится, проблема не в просто/сложно… проблема в том, что какой бы сайт Вы не делали, без сервер-сайда не обойтись. если это сложная CRM — тут ясно, обычным firebase не обойтись. а в случае с одностраничными лендингами — просто необходим SSR. поисковые боты не особо следуют новым трендам, в отличии от браузеров. а такие сйты чаще всего для ботов и делаются.
поэтому вопрос — какую, по вашему, нишу нацелена занять эта технология?
по факту — да. в большенстве случаев второй запрос и маппинг отношений в приложении займет больше времени, чем джоин. но на огромных объемах данных джоин может быть губительным. мне кажется, такой подход выбран именно из-за этих соображений…
ковырялся один раз давно в pagerfanta… очень удивило то, что он принимает весь массив записей для организации постранички о_О
или это только одна из его возможностей?
https://learn.javascript.ru/closures
Здесь более подробно описано про области видимости. Мне проще запоминать то, что я понимаю, чем аналогии. Может поможет кому-то.
Зачем же так резко? Не Вам этот код поддерживать. А чтоб уменьшить шансы того, что подобный код придется поддерживать, можно было бы и потрудиться дать развернутый ответ. Часто из комментов получаешь больше важной информации, чем из самой статьи.
Постараюсь ответить на коммент выше. Проблема в том, что при передаче метода в качестве аргумента теряется его контекст. То есть это будет работать, пока в передаваемом методе нет использования this. Если вдруг Вы захотите в методе success использовать что-то вроде this.message('success'), то получите ошибку. И без соответствующих тестов ловить ее придется в рантайме. Именно поэтому часто можно увидеть костыли типа this.handleClick = this.handleClick.bind(this); (строка из документации к реакту). Больше информации здесь https://learn.javascript.ru/bind
Сказанное выше справедливо для ES объектов. На счет TS — не уверен, может в TS эта проблема решена (хотя я в этом очень сомневаюсь). Проверить возможности нету, пишу с электрочайника. Если кто-то знает — просветите, плз.
PS: то, что код "полностью рабочий", не делает его хорошим.
Сорри за оффтоп, просто мысли вслух.
Интересно, что в последнее время так много разговоров о том, что наследование — это зло и намного выгодней заменять его композицией и/или абстракцией. Есть подозрение, что скоро его настигнет судьба оператора goto… Но если подумать, наследование — это единственное, что качественно отличает ООП от других парадигм. Остальные "киты" так или иначе реализуемы в рамках не-ООП языков. Не хочу сказать, что ООП ожидает та же судьба, что и наследование, оно так и останется отличным инструментом структурирования кода. Но сколько новых холиваров это породит — сложно представить :)
подобное можно сказать только о яваскриптовом [].forEach(). тут соглашусь — действительно выглядит как костыль
эммм… вообще-то нет… и как я понял, именно об этом Вы говорили в комменте, на который я ответил… я запутался…
jsfiddle.net/0nakzhqr/3
Очевидно же, так. Нет?
Исправьте, если я неправ.
Если я не ошибаюсь, вынесения атрибутов в отдельную таблицу требует 3-я нормальная форма. И правильнее задаваться вопросом, что нам даст подобная денормализация.
Идея в том, что Аннотации != Комментарии. Возможно, это дело привычки. Но я бы не советовал бездумно удалять аннотации в проекте на симфони, например…
Расскажите это разработчикам явы или питона, например. Аннотации — это не коментарии. Это метаданные, которые могут использоваться (и успешно используются) для многих целей. В php они тоже широко распространены, хотя пока не включены в спецификацию языка… Пока… https://wiki.php.net/rfc/annotations_v2
lurkmore.to/Изобретать_велосипед
1 — а если торт из разных слоев? :)
Хотя, учитывая нынешние темпы развития фронт-енда, это недалекое будущее может наступить прямо завтра :)
встряну в диаолог. как мне видится, проблема не в просто/сложно… проблема в том, что какой бы сайт Вы не делали, без сервер-сайда не обойтись. если это сложная CRM — тут ясно, обычным firebase не обойтись. а в случае с одностраничными лендингами — просто необходим SSR. поисковые боты не особо следуют новым трендам, в отличии от браузеров. а такие сйты чаще всего для ботов и делаются.
поэтому вопрос — какую, по вашему, нишу нацелена занять эта технология?
или это только одна из его возможностей?
в laravel-е генерится второй запрос вида
id-шки берутся из результата первой выборки.
https://learn.javascript.ru/closures
Здесь более подробно описано про области видимости. Мне проще запоминать то, что я понимаю, чем аналогии. Может поможет кому-то.