@oop_ru

Страница 215 из 785
Sergey
08.05.2017
14:15:07
как теперь не забыть последовательность стэпов?

Andrey
08.05.2017
14:15:18
В чем проблема получить пароль от пользователя? Где нарушение инкапсуляции? Я не знаю как и где он это хранит, меня это не интересует

Sergey
08.05.2017
14:15:37
как ты ВНЕ юзера сравниш хэши?

Google
Andrey
08.05.2017
14:16:00
Sergey
08.05.2017
14:16:19
У него есть интерфейс? Им и воспользуюсь
ты хочешь кусочек стэйта забрать

причем тут интерфейс?

Andrey
08.05.2017
14:16:29
как ты ВНЕ юзера сравниш хэши?
Не понял в чем проблема

Sergey
08.05.2017
14:16:37
будешь вводить getPassword(): string?

Не понял в чем проблема
И - инкапсуляция. Геттеры (те которые начинаются с get и которые предоставляют доступ к стэйту) - это как раз таки нарушение инкапсуляции

более того

это сигнал к тому что у тебя поведение лежит отдельно от данных

что противоречит самой идее объектов

Andrey
08.05.2017
14:17:56
и ты решил "реюзнуть" логику
Аха, один класс по десятку проектов, и окажется что в одном требуется одно поведение, в другом другое, в десятом десятое. А у меня в классе все захардкожено будет?

Sergey
08.05.2017
14:18:18
разные проекты - разные сущности

проще скопипастить и поправить

Google
Andrey
08.05.2017
14:18:48
С тех пор как на аутсорсе и бизнес-идеи общие за мелкими изменениями

Sergey
08.05.2017
14:18:58
и у тебя исчезнет необходимость писать логику аутентификации и смены пароля

(собственно это одна из причин по которым у меня есть сущность Credentials) - оно просто приналдежит к отдельному контексту

но опять же

в том что мы сейчас обсуждаем нет "других проектов" и "аутсорса"

контекст очень простой

у нас есть юзеры и они хотят логиниться и менять себе пароль

потом может еще аватарку захотят менять

Andrey
08.05.2017
14:20:41
и у тебя исчезнет необходимость писать логику аутентификации и смены пароля
Я по секрету расскажу - у меня этой проблемы нет, т.к. проверка на стороне сишного сервера ))) я просто проксирую все к нему, но проверка у меня все равно отдельно, т.к. не всегда логин/пароль нужен

Andrey
08.05.2017
14:21:59
Я писал про проблемы исходного кода, если он только пароль меняет - проблем нет, если делает что-то ещё - уже несколько поводов для изменения, уже нарушения принципа, о чем я писал )

Andrey
08.05.2017
14:23:50
иначе зачем отдельный сишный сервер
Вся игровая логика на нем, все операции с деньгами, все действия по пользователю. Я - бекенд, сервисы всякие и прочее. На нем ответ ответственность за основные действия, а на мне сопутствующее окружение

Google
Sergey
08.05.2017
14:24:35
придумай мне поводы для изменений

не "поменять алгоритм хэширования" а "зачем поменять"

Andrey
08.05.2017
14:24:52
У нас хотят на сервере только игру оставить, все остальное на php перенестм

Sergey
08.05.2017
14:25:48
ну или там "проверять 5 предыдущих паролей а 10" "что бы предотврватить возможность перебора паролей если у юзера чего утечет с других сервисов".

Andrey
08.05.2017
14:26:16
Первое я написал, уже изменили раз. Если класс не для смены пароля - этого достаточно. После изменений с внедрением hashier - стало уже лучше

Andrey
08.05.2017
14:27:57
Второе ты сам написал, а оно может понадобиться

Sergey
08.05.2017
14:28:29
add changeEmail)
это часть пользовательского профиля - все хорошо пока. Причина для изменений все еще одна и та же

более того, тебе всеравно для этой операции придется поменять класс User

как бы ты не пытался этого избежать

Sergey
08.05.2017
14:29:12
(а единственный способ этого избежать - сделать все поля публичными)

?
08.05.2017
14:29:42
это да, okay, no problems

Sergey
08.05.2017
14:29:43
если же делать по дефолту мутаторы - ну это код который в данный момент не нужен - мертвый код

ну и это как помахать ручкой инкапсуляции

не говоря о том что тестирование станет сложнее гараздо (относитетльно но намного больше тупого кода и меньше возможностей для моков)

Andrey
08.05.2017
14:31:02
Код менять все равно придётся, т.к. там баги сейчас ))

Sergey
08.05.2017
14:31:21
Код менять все равно придётся, т.к. там баги сейчас ))
баги не причина для изменений. они не меняют поведение

Google
Sergey
08.05.2017
14:31:44
Это про пример как раз
тебе тест написать и показать насколько удобнее такие штуки тестить?

вечером

могу даже статью написать почему такой подход как ты предлагаешь нарушает OCP

Andrey
08.05.2017
14:35:46
Напиши, а потом добавь hashier (перепиши тесты), потом измени 5 на 10 (переписи тесты), потом верни 5 или убери проверку (и опять перепиши тесты). А все потому, что нарушение есть. В моём случае тесты тестировали бы только добавляемое поведение, а старые тесты менять не пришлось бы (только для удаления старого кода). И я не говорю, что тесты менять плохо, но при плохой архитектуре переписывать приходится больше чем следовало. Паттерны как раз помогают в этом

могу даже статью написать почему такой подход как ты предлагаешь нарушает OCP
Сообщение выше было про тесты, но статью тоже было бы интересно почитатб

вечером
Кстати, уже почти 10 вечера, где тесты? ))))))

Admin
ERROR: S client not available

Sergey
08.05.2017
14:38:01
вечером по UTC

добавил чутка тестов для затравки

Andrey
08.05.2017
14:43:38
что за чушь ты несешь?)
Я написал требования реальных заказчиков. Даже одного. Раз есть тесты, то либо забьешь на них, либо будешь переписывать. Пиши, я буду твоим заказчиком и буду менять требования как захочу ))) может на практике увидишь чем это плохо. Только твой код уже на пути к коду без проблем/вопросов, все равно придешь в том или ином виде к тому, что писал я )))

Sergey
08.05.2017
14:44:36
Ладно, буду за ноутом перечитаю

Меняй)

Andrey
08.05.2017
14:45:19
Я за ноутом только завтра вечером буду

Изменение номер 1: у нас часть пользователей с соцсети, а соцсеть требует, чтобы никакой регистрации/логинов не было. (Вроде как это реальное требование apple было, мы че-то такое делали)

Tvoy
08.05.2017
14:58:33
всем привет

народ, есть какие-то проекты опенсорс

которые на ваш взгляд имеют правильную архитектуру

?

Google
Andrey
08.05.2017
14:59:29
Потом: у нас вк же, хочу чтобы Дуров вообще не мог использовать старый пароль, а Буров мог менять на любой старый

Tvoy
08.05.2017
14:59:49
php например

Евгений
08.05.2017
15:44:18
которые на ваш взгляд имеют правильную архитектуру
неа и не может быть, это жже опенсорс - написал пару строчек, запулреквестил. много ты в паре строчек об архитектуре думаешь?

Евгений
08.05.2017
15:47:29
ну есть же фреймворки например где далеко не 5 строчек
ну тогда чего бы не глянуть, как устроены зенд, симфони и ларавель

Yumi
08.05.2017
18:23:52
А что за языки прям тру ООП? Ну кроме smalltalk.

?
08.05.2017
18:25:14
Like
08.05.2017
18:25:43
Если вспомнить вчерашний (кажись) спор насчет процедурщины и ооп - нету тру ооп языков (это был вывод)

Tvoy
08.05.2017
18:26:39
а что значит тру ооп?

Andrey
08.05.2017
18:27:04
а что значит тру ооп?
Погугли Егора Бугаенко)

Yumi
08.05.2017
18:32:45
а что значит тру ооп?
Ну это как хаскелль или си, только с ООП.

Артур Евгеньевич
08.05.2017
19:43:03
а чем джава и c# не тру ооп?

Andrey
08.05.2017
19:47:15
Paul
08.05.2017
19:50:50
Примтивы есть.
То есть хаскель и раст более ООП, чем кресты и жаба, так?

Andrey
08.05.2017
19:51:17
Paul
08.05.2017
19:51:27
Все понятно.

Andrey
08.05.2017
19:55:59
Даже обидно как-то)

Evgeniy
08.05.2017
19:58:46
ну в rust тоже есть примитивы же

если речь о примитивах

Страница 215 из 785