Как стать автором
Обновить
1
0
Ganesh @Ganesh

Пользователь

Отправить сообщение
Да, с рефлекшеном я затупил (да и в php вполне нормальный рефлекшен как оказалось).

Само собой если он существует в языке, то скорее всего зачем-то нужен, другой вопрос в том насколько целесообразно использовать подобные магические методы, просто для упрощения себе жизни (зато вполне может вылезти в неприятную неожиданность для другого). Сама концепция вызова несуществующего в классе метода, кажется предельно странной, даже, например, с целью проксирвания вызова в другой объект. Собственно от того у меня и вызвал этот метод подобную реакцию.
>всё же в нём несогласованность распространяется только на именование функций
PHP — это изначально скриптовый язык, в котором никакого ооп не было и в помине. Нормальное ооп было добавлено в 5й версии (и то что-то слабо мне верится, что в нем сейчас нет проблем). От этого очевидно, что пхп программисты стали использовать нормальные практики построения серверных приложений, использовать шаблоны программирования и т.п. относительно недавно. Собственно это видно даже по исходникам старых движков. На php я работал лет 6-7 назад, после чего я пересел на Java и с удовольствием кидаю какашками в этот язык (да, мб за последние 2-3 года он стал лучше, но почему меня это должно волновать, когда есть божественные Java/python/nodeJs). Лично мое мнение, если знаешь те же JAVA/Scala/Python/JS(NodeJS), то единственной причиной использовать этот недоязык — тебе за это платят, или твои знания в другом языке никому не нужны.

>JS вообще на всю архитектуру языка
Это ж какая такая несогласованность в архитектуре языка, расскажите пожалуйста? На JS как и на любом другом языке можно писать красивый код, использовать хорошую архитектуру приложений, а можно говнокодить.

1) Передача по ссылке означает передачу по ссылке и ничего больше, в js все объекты передаются по ссылке. Object.observe нужен для чека и обработки изменений в объекте, например, в angular реализован свой дерти чек для scope (благодаря этому там не нужны сеттеры и геттеры), и он является основой этого фреймворка. Причем тут передачи по ссылке или значению я не могу понять, developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/observe

2) В спеке языка ясно говорится для чего нужен метод __call, все остальное является реализацией костылей из-за отсутствия нормального механизма рефлекшена на основе нестандартного использования этого метода.(http://habrahabr.ru/company/microsoft/blog/247229/#comment_8208127) тут я описал свое мнение по этому поводу.

Неймспейсы — это неймспейсы, а модульность — это модульность. В JS некая отдельная реализация разделения пространства имен в принципе не нужна, так как с этим вполне справляются стандартные механизмы. И да — не засорять глобальный скоуп это действительно хороший тон (best practice) программирования на js, а не костыль.

Так как в стандарте ES5< попросту не был заложен механизм модульности (просто потому что реальная необходимость разработки больших сложных приложений на js возникла буквально лет 5 назад), он был реализован извне, назвать это костылем, все равно что называть костылем hibernate или реализацию любой другой технологии (тех же шаблонизаторов). (опять же в ES6 все это есть frontender.info/es6-modules/ ).
($ns1 = (object)[], блин тайп кастинг из массива в объект — феерия чудовищности. (я даже специально проверил, такой синтаксис объявления массива работает с версии 5.4 только, это ж просто пипец 20 лет языку и до осознания, того что нужен краткий синтаксис создания массива, только пару лет назад додумались).

Ваш js-way — это какой-то ваш манямирок, основанный на каких-то шаблонах разработки фронтенда из прошлого 10летия и попытки перетащить багаж знаний полученных при разработке на великолепном php во вселенную с другими физическими законами. Стеки технологий и архитектур js приложений сейчас шагают семимильными шагами, так что стандартизация языка просто не поспевает за ними. JS это не PHP в который понапихают быстренько непонятно что лишь бы хоть как-то работало.

Мне кажется, вы просто не хотите понять что js это не ооп язык, но его архитектура настолько универсальна, что уже 20 лет без особых изменений позволяет реализовывать стек современных технологий, в том числе позволяет использовать и ООП подход при разработке (да, нет полной поддержки инкапсуляции). И что сравнивать его с oop ориентированными языками — это глупое занятие. И думать при разработке js приложений через ооп тоже не совсем верно, а уж тем более через php (динамическое создание методов класса с помощью __call? зачем в js __call если методы\поля можно и так динамически создавать). Но опять же, ES6 — хочешь классический ооп — получай.

Не можете\не хотите в язык -> используйте другой или диалект (ничего не имею против coffeescript (единственное у меня сомнения в скорости трансляции в js больших проектов), лично мне он просто не нужен).

Тоже самое реализовывается и на js pastebin.com/6xYe8hF5, само собой что бы код понять, нужно попытаться хотя бы понять, как работает js, точно так же как и человеку, которому синтаксис кофи не знаком, надо в нем разобраться.
JS — язык динамический там в принципе не нужен механизм рефлекшена, потому что методы можно изменять, добавлять удалять в рантайме. Собственно так реализовывал AR на JS.
В 7 утра просто не гуглил все варианты того, что можно реализовать с помощью этого волшебного метода, опять же человек выше пишет о каких-то тоннах костылей в JS, и восхваляется этим недоразумением, которое используются как костыль вместо нормально рефлекшена. Не понимаю как можно сравнивать его с рефлекшеном в JAVA.
А в ES6 еще и будут славные аннотации.
Я не спорю, что как язык он крутой. Суть в том, что он просто не взлетит ибо вряд ли Mozilla, MS, Apple будут его внедрять в свои платформы, а транслированный в js dart работает медленнее. Ну это, конечно, мое мнение.
Ну есть функцииональный подход, есть ооп подход при разработке, хочешь используй то, хочешь это. Кому надо говнокодит, кому надо выстраивают хорошую архитектуру приложения. Хотя в JS эти подходы прекрасно переплетаются.

Да есть куча фреймворков, где используются ооп подход, тот же dojo, backbone, kineticJS, jQuery, в любом более менее нормальном фреймворке где нужен ооп подход он есть.

Велкам ту неймеспейс на js:
var ns1 = {};
var ns2 = {};

AMD — это технология позволяющая разбивать приложения на модули и загружать их асинхронно, а не костыль и замена неймпейсам. А, например, requireJS ее реализация вне стандарта языка, так как сам по себе JS достаточно долго развивается, а технология нужна сейчас, в стандарте ES6 модульность таки заложена.

Что значит нет передачи по ссылке если только так и передаются объекты.
Обходиться без оператора new, ну я бы поглядел на это.

Причем тут Object.observe мне вообще не ясно и что в нем плохого. Отличная функция для чека изменения объекта. Может вы хотели использовать вместо нее сеттеры, эт конечно можно, но в некоторых ситуациях обсерв всего объекта куда удобнее, да и позволит сократить код.

Ну нет в JS особого синтаксиса неявных сеттеров\геттеров, во многих нормальных языках программирования их вообще нету. Хочешь сделать сеттер\геттер сделай их. Тут просто вопрос удобства. Тем более что язык предоставляет возможность реализации и неявного механизма. Так что не понимаю в чем проблема.

Специально глянул, что за __call\method_missing и приржал (оф документация МАГИЧЕСКИЕ МЕТОДЫ), в который раз убеждился, что ООП в PHP — это недоразумение не для людей как и сам язык, и славлю богов, что в свое время перешел с него на богоподобную в этом плане JAVA.
>В контексте объекта при вызове недоступных методов вызывается метод __call().
Я, конечно, понимаю зачем это, но это просто полная ахинея. За все мои 8 лет программирования (как для серверных, так и для клиентских приложений), я ни разу не сталкивался с выше описанной надобностью. Но опять же, js позволяет реализовать это недоразумение при необходимости.

Пишу приложения (сложные и простые) на JS 5й год, использую модульный подход и ооп, лапши не больше не меньше чем в других языках. Что я делаю не так?

Очевидно, что coffeescript популярен благодаря синтаксису (мне лично не нравится, я олдфаг) и сахару. Typescript вообще ни разу не популярен (само собой он есть в этой статье ибо язык то мсовский) (хотя тайп чекинг хорошая штука, жаль что в es6 нету), как и Dart (вообще недоразумение мертворожденное). Приржал, когда аутсорсил в одной крупной зеленой компании и типы с соседнего проекта сказали, что прототипрование это очень сложно и не понятно, давайте будем использовать Dart.

Да и вообще зачем вы мне описываете какие-то тонкости языка, если хотели узнать чем PHP отличается от JS. Вы мне предлагаете разрабатывать интерфейсы на PHP или тупо ради холивара (если так то php — ведро с говном, самый плохой язык, на котором я что то делал).
Есть отличный, новый стандарт ES6. Зачем нужен этот мертворожденный Dart мне не ясно до сих пор. Хотя, очевидно, что он не нужен и не взлетит, как тот же GWT, особенно с учетом скорого ES6.
В чем копия-то? Синтаксис что ли похож (хотя даже в нем есть куча отличий помимо бакса) и динамическая типизация?
Как насчет того, что JS является прототипированным языком и на этом основаны механизмы наследования (ну это если не смотреть в ES6), а PHP реализовано классическое ООП. Те же замыкания, анонимные функции доступны в PHP только с 5.3 версии.
Скорее всего приведение типов работает иначе.
Например, внезапно, php не обрабатывается браузерами.
Думаю таких особенностей много найдется.
Да, читал про лечение, но хочется попробовать реакт. Он судя по тестам работает намного быстрее.
Ну есть проблемы да, ну а где их нет? Половина статьи описывает проблемы в духе нужно хорошо изучить фрэймворк, чтобы его использовать на полную катушку.

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

>либо jQuery
Лол, что? Надо было сразу прочесть конец и не читать статью.
Да, пардон, от недосыпа видимо напутал.
*хэша пароля
Просто добавить соль при генерации пароля не судьба была в начале?
Точно, но все равно не отгадать эти роли с таким вопросами.
>> Богу А: «Не является ли бог С богом случая?». Богу В: «Не является ли бог А богом лжи?». Богу С: «Не является ли он богом случая?»
А если они скажут ja ja ja.
Роли богов
A — бог случая, Б — бог лжи, С — бог правды
Вроде еще в чужих что-то такое было.
«MainCtrl» Насколько я знаю, в стайлгайдах (читал много где, а так же в ng-book) настойчиво рекомендуют писать не Ctrl, а Controller, обосновывая тем, что избегание сокращений является хорошим тоном при программировании.

«Если вы используете prototype для изоляции от других контроллеров – это хорошо.» Хотелось бы подробнее, что значит изоляция от других контроллеров?

Пример про IIFE, как-то адово описан, может стоило сначала указать на то, что следует разделять компоненты модуля на отдельные файлы, а потом показывать как использовать данную технику.

По идее реализации функций нужно писать как можно ниже, дабы код был читаемым.

Как-то странно вообще использовать $parent в шаблоне.

Пример про фабрики странный какой-то, вполне правильно использовать и var someValue = ''; особенно если нужно реализовать приватные свойства\методы или например шорткаты.
Патроны на оружие еще в doom 3 были, не удивлюсь если и раньше было.

Во многих играх вместо индикатора здоровья на экране появляется кровь. А если совсем хорошо подумать, то нательные индикаторы здоровья известны еще со времен nes, когда босы начинали мигать\меняли цвет при уменьшении своего здоровья. Нечто подобное можно также встретить в lost planet, например.

Замедление при хождении тоже часто встречал.

В различных шутерах аля MoH, CoD, в качестве прицела использовалась мушка оружия при приближении.

В crysis тоже были индикаторы на броне собственно

Так что, думаю, ни о каком первопроходстве тут речи быть не может, ребята просто грамотно встроили давно известные фишки
"* т.е. схема может быть и не указана."
То есть схем может быть сколько угодно?)
1
23 ...

Информация

В рейтинге
Не участвует
Откуда
Калуга, Калужская обл., Россия
Зарегистрирован
Активность