AmdY
+13
[сарказм]Мужики тоже думают одним местом, может потому зачастую код у нас получается х**вый?[/сарказм]

Не раз работал и работаю с женщинами-программистами, не замечал никакой зависимости между полом и кодом.
AmdY
0
Я в начальном комментарии указал пару проблем, но вся статья хреновая, а главное вредная.
Именно потому, я не хочу делиться опытом, потому что мои советы тоже могут быть вредными за пределами контекста. Надо опираться на серьёзную литературу, где рассмотрена куча разных кейсов, она не раз уже упоминалась.
К тому же в php есть готовые решения вроде doctrine-propel, которые значительно лучше поделки автора, который даже php знает с оговорками.
AmdY
+1
Да почитайте вы их, там есть реализации с кодом, плюс в посте выше я писал о Нильссоне, у него практики ещё больше. Но вы даже с терминами не разобрались, а пытаетесь делиться «опытом».

Карнеги хорош, кода хочешь навешать лапши на уши. Здесь же профессиональный ресурс, где люди обмениваются знаниями и опытом, а не заводят новых друзей. В отношении вас я умышленно применил агрессию и троллинг, дабы заставить вас усомниться и освежить знания.
AmdY
0
Зачем писать? Есть книги Эвайнса и Фаулера и куча статей от этих же авторов — это райт вэй. Надо их внимательной читать, а не набравшись по вершка и статьям лепить свои велосипеды.
AmdY
0
Почему удалась? Статья ужасная и вредная для прочтения. Не дай о кто-то прочтёт, не дойдёт до комментариев и будет это воспринимать как райт вэй. Автору надо подучить сам php, а затем перечитать книги на который он ссылался и почитать какого-нибудь Нильссона, чтобы увидеть практическую реализацию.
AmdY
+1
У вас всё плохо, очень плохо.
DDD вы не понимаете.
Enity — хрень с защищёнными свойствами в массиве, магическим __call и даже сеттер для айди работает с неявным поведением $this->id = $this->id == 0? $id: $this->id;
Репозиторий который не репозиторий, в котором мэппер, который почему-то не мэпит, а персистит данные.
Контекст непонятная штука, чей контракт зафиксирован в виде абстрактноо класса и не предполагает нормальную инъекцию зависимостей.

Ну и это первая половина проблемы. Вы не знаете синтаксиса php и работаете с отключёнными ошибками вроде E_NOTICE, E_DEPRECATED, потому принимаете объекты по ссылке. Даже оформление кода не по PSR и вооще пахнет временами php 4.

И ещё куча ног торчит из стога.
AmdY
+3
Ссылка на этот вопрос ходит как мем и имеет мало общего с количеством людей реально застрявших в виме.
AmdY
0
Интересует будущее Vue, где можно почитать о планах? За последние годы я переел этих тайпскриптов, флоу, вебпаков и *-cli. Сейчас в отпуске свой пет проект начал писать на первом angular, без всяких обвесок и вдруг вспомнил, что люблю программирование.
Vue выглядит как неплохая альтернатива angular1, да и схожесть упрощает освоение, но она же пугает, как бы авторы не пошли по тому же пути c предпроцессорами, типизацией и функциональщиной.
AmdY
0
Ну да, того самого мифического страшного водопада, где всё спланировано и разбито на участки на годы вперёд не было. Он как бандеровцы, придуманный враг, чтобы продавать аджайл.
AmdY
+1
В китайских денди для валейбола с изображения был баг с очередностью опроса джойстиков: опрашивался первый, если была нажата кнопка, то выполнялось действие для первого игрока, а затем опрашивался не второй, а снова первый. Сидя на первом джойстике можно было заспамить кнопку и у второго игрока не было шансов.
В реальной жизни та же проблема, спамеры побеждают, потому что не передают ход по очереди, а стреляют цепочками зачастую противоречивых требований.
AmdY
+1
>> $components = $this->components();
Ну почему не заюзать нормальный DI с явной инъекцией нужных объектов, а не таскать каштаны голой рукой из огня.
AmdY
+1
Нет, потому недокументированными методами и не нужно пользоваться, они могут быть удалены без предупреждения. Я даже пример привёл.
AmdY
+2
Важно ни его наличие в коде, а наличие в документации. Вот пример из неё
The share method has been removed from the container. This was a legacy method that has not been documented in several years. https://laravel.com/docs/5.4/upgrade#upgrade-5.4.0

AmdY
+1
Пока этого нет в документации, использовать не советуется, т.к. Тейлор любит убирать незадокументированные фичи, в текучем релизе есть такие поломки BC.
AmdY
+4
Видимо вы об этом
AmdY
0
Сейчас и для angular 2 есть NativeScript http://docs.nativescript.org/angular/start/introduction.html
AmdY
+1
Основные изменения произошли в инфраструктуре и головах разработчиков, которые начали этой инфраструктурой пользоваться. Ускорили производительность, улучшили синтаксис, много изменений внутри, но ничего принципиально нового, что бы вывело язык на новый уровень не случилось. А вот то, что начали пользоваться компосером и фреймворками сильно всё поменяло, хотя ещё и во времена php4 были pear, pecl, seagull, cakephp и т.д.

Очень хотелось бы чтобы улучшилась асинхронность, многопоточность, появился loop, библиотеки стали неблокирующими, но глядя на костыли с какими добавляются новые фичи, думаю продолжу при надобности подтыкать проект на других языках nodejs, go. Может и не надо делать универсальный инструмент.

AmdY
+6
Неужели так важно знать каким to do менеджером и какой читалкой пользуется человек, если он сам работает по 10-15 часов, ещё и других уговаривает?
Почему бы не учиться эффективной работе у тех, справляется своими делали в рабочее время и никого не должен уговаривать поработать.
AmdY
+2
Уровень сложности может определить только сам читающий. Не вижу проблемы, чтобы новички читали сложные тексты, пусть они и поймут только 30%, но зато будут знать куда расти.
Другая беда, что сейчас развелось специалистов, насмотревшихся простых видеокурсов, но так и не дошедших до серьёзной литературы и не подозревающих о ней.
AmdY
–2
Ну что за гадкая привычка молча лепить минус и портить карму, отпишитесь хоть почему. Я же привёл аргументированную точку зрения, если надо ещё докину аргументов и ссылок.
AmdY
–1
Какой-то бред, зачем-то приплели сюда facebook, хотя этим самым hiphop никто не пользуется, сообщество ускоряет язык и без мордокниги. Nodejs и Go концептуально другие языки, а не замена ruby, копаться в асинхронных запросах то ещё удовольствие.
Ну и самое важное, что он рассматривает язык с точки зрения нагрузки(он стал третьим по посещаемость сайтом на Rails), а этот кейс далеко не критичен для большинства проектов, тем более узкие места всегда можно затюнить.

Пришлось саппортить один проект на рельсах, норм фреймворк, много полезных фич, которые перенимают фреймворки с других языков, не стоит торопиться его хоронить.
AmdY
+1
Проблема водопадной модели в том, что большинство знает о ней только как об антиподе гибкой методологии и судят не удосужившись даже ознакомиться с первоисточниками. Вроде этого
http://www.cs.umd.edu/class/spring2003/cmsc838p/Process/waterfall.pdf

Водопадная модель лишь определяет этапы необходимые для разработки, определяет порядок их следование. Но при этом разрешает возвращение на любой из предыдущих этапов вплоть до сбора новых требований и составления нового плана. Это полноценная итерационная система, которая гораздо гибче идиотских фиксированных спринтов в скраме.
AmdY
0
Agile — набор принципов и ценностей. Под них подходит куча методологий, в том числе и водопадная модель.
Скрам хотя и называют аджайл фреймворкам, но он рпотиворечит аджайл принципам, я уже выше описал пару из них.
В манифесте написано
>>Работающий продукт важнее исчерпывающей документации;
Что это как не приоритезация, которая говорит, что приоритет у документации должен быть ниже работающего продукта. Этот принцип прекрасно кладётся на водопадну модель, т.к. в то время документации уделялось слишком много внимание, а зачастую компании и вовсе блокировали следующую фазу до окончания документрирования.

Вот объясните, почему водопадная модель не подходит под аджайл принципы?
AmdY
+1
Нет, он совсем не про то. Даже если вы просто копируете объект через assign, то получаете его уже мутированную копию
>> Метод Object.assign() копирует из исходных объектов в целевой объект только перечисляемые и собственные свойства. Он использует внутренний метод [[Get]] на исходных объектах и внутренний метод [[Put]] на целевом объекте, так что он также вызывает геттеры и сеттеры.

Во вторых, если у объекта есть вложенные объекты и вы их меняете, то мутирует и исходный объект.
AmdY
0
Object.assign не имеет отношение к иммутабельности, он копирует объекты, да ещё по своим витиеватым правилам, советую быть очень осторожным с ним. https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
AmdY
0
Как же надоели эти аджайл укурки, которые наезжают на водопадную модель даже не ознакомившись с наработками хотя бы на уровне ройсовской модели. Принципы аджайла писаны с оглядкой на водопад и не заменяют его, а меняют приоритеты.

А вот скрам как раз нарушает аджайл принцыпы, так как жёстко регламентирует процесс (вроде дейли статус-митингов). Спринты обычно имеют жёсткие рамки и мешают реагировать на изменения. При этом скрам вовсе не говорит о методиках вроде документации на которую выставляются приоритеты в аджайл манифесте. Скрам просто примазался к модному термину.
AmdY
0
Насколько я знаю, майкрософт занималось проблемой управления с помощью голоса и видео ещё в 90-х годах, так что это ещё кто в начале пути. У меня недавно умерла люмия и теперь пользуюсь андродом, очень не хватает cortana, гугловская поделка значительно уступает в распозновании, особенно бесят её попытки угадать, а не просить повторить команду.
AmdY
+6
Думаю ссылка в статьях на госпожу Мариссу Мейер доказывает всю нелепость аргументов против удалёнки. Своими методами она убила то, что оставалось от yahoo.
В её случае всё понятно, она симпатичная женщина, умеющая хорошо говорить, потому личный контакт для неё важен, т.к. при удалёнке оценивали только результат, а они плачевны. А так Мариса всё ещё на коне.

Я уже и не вспомню когда последний раз работал на проекте, где все работники сидят в одном офисе, сложные проекты всегда распределённые. Сидя в офисе ты всё равно де-факто — удалёнщик.
AmdY
+2
Вы же в курсе, что ракеты, как практически и любой сложный современный продук так и создаются — детали делаются в разных местах, а затем собираются в единый продукт. В поисках идеального тз, вы не получите не продукта, ни тз. А вот если один продукт разобьёте на кучу мелких, то всё станет гораздо проще. А для простого продукта тз можно писать прямо на ходу, а то и постфактум.
AmdY
+2
Вывод. Хотите познакомиться с профессией, идите работать в настоящую ИТ компанию, потому что курсы и фриланс — это безалкогольное пиво с резиновыми женщинами.
AmdY
+1
Видео в конце портит всё удовольствие от статьи, так как попадает под описанную категорию
>>. Те, кто использует экстремальную разработку, или SCRUM, или любую другую гибкую методологию исключительно из-за громкого названия, похожи на современных хакеров: первые в большинстве своём не знают методологию, вторые — изначального значения термина “хакер”.
AmdY
+3
0. Слишком много внимания уделял карьере.
AmdY
0
В ООП тоже всё легко тестировать если пользуешься DI и пользуешься фаулеровскими заветами вроде разделяй запрос и модификатор.
Вы в статье очень удачно использовали объекты, тем самым продемонстрировав, что ООП не отменяет функциональных подходов, а очень удачно дополняется ими.
AmdY
0
А что вы хотите от страны где 80% не имеют загранпаспорта и дальше крыма не выезжали, а дома пилят проекты на битриксе. Но это вымирающее меньшинство. В Беларуси или Украине таких проблем нет, практически везде чтение документации на английском и ооп — обязательные условия, т.к. проекты западные.

Я так понимаю, вы искали среди так называемых фрилансеров, но это отдельная группа, где за редким исключение ни то что программиста, но даже человека адекватного найти тяжело. У нас же сейчас обратная ситуация, слишком много начитанных специалистов, которые любят паттерны, ddd и всякие абстракции больше, чем результат.
AmdY
0
Вы так говорите, как будто функциональщина лучше и сложнее ООП подхода. Посмотрите на пример, ад из колбеков замаскированный через бинд, сложный в поддержке и трудночитаемый. У функциональщины свои плюшки, но ради них жертвуют человекопонятным кодом.

Ну, а по поводу знаний ООП, мусора везде хватает, на то есть эйчары и собеседования, чтобы его фильтровать, в нормальные компании такие не попадают.
AmdY
+2
Здесь та же проблема как у любителей вима — сразу пишется кривой код на основании копипаста, а затем героически с этим борются, но копипаст остаётся.
AmdY
+3
Всё печальнее, я писал даже под IE 5.5, а ajax реализовывали через тег img и не боялись xslt в браузере.
Вот только не надо на основании этого записывать меня в олдфаги, которые боятся «новых» технологий. Сейчас я пишу на react, до этого был проект на vue, до этого на angular 1 и т.д. Есть с чем сравнивать.

p.s. Я спутал теневой дом с виртуальным, но в любом случае, он ещё не стандарт, а лишь черновик.
AmdY
+6
У меня более десяти лет опыта писания на javascript, по моим ощущениям связка react + flux это худшее с чем мне приходилось работать. Не понимаю откуда такой хайп. Единственный плюс это теневой дом, который в теории должен обеспечить лучшую производительность, но на практике постоянно встречаю подлагивание реакт приложений начиная с самого facebook.

Мне всё это напоминает smarty в мире php, когда брали шаблонизатор и строили архитектуру вокруг него. Реакт это такой же тупой шаблонизатор, хватит на него молиться, в нормальной архитектуре это звено, которое вообще должно быть легко заменяемым.
AmdY
+1
Это вы смешали.
1. Нет, это декоратор, он сломал принцип лискоу, так как не сломал интерфейсы и не пройдёт тайпхинтинг.
2. Это паблик морозов, т.к. у вас model — протектид, а __call предоставляет к нему доступ как к публичному.
3. В статье недоразумение, а не паттерн, он нарушает сразу несколько солид принципов, о чём и был смысл данного обсуждения.
4. Обязательно уберите и код из контроллера тоже.
AmdY
+1
Нет, вам следует убрать магический __call и тогда это будет презентер или viewmodel, а так это паблик морозов, который позволяет делать $object->delete() в слое представления.