
F01134H
25.08.2017
14:50:07
внутри функция имеет только поведение
я бы даже сказал, что функция - проявление поведения

Sergei
25.08.2017
14:51:00

Roman ?
25.08.2017
14:51:08

Google

F01134H
25.08.2017
14:51:21
хотя у голанга например есть функции внутри функций, вот это уже интереснее)

Igor'
25.08.2017
14:51:56
звучит как костыль

F01134H
25.08.2017
14:52:00

Roman ?
25.08.2017
14:52:28
?

F01134H
25.08.2017
14:53:24
конкретно про функции внутри функций - это позволяет инкапсулировать кусок логики внутри функции
сейчас не вспомню, зачем это еще можно юзать

Igor'
25.08.2017
14:54:11
а зачем?) почему именно такой подход?

F01134H
25.08.2017
14:54:30

Igor'
25.08.2017
14:54:54
и не поспоришь

Sergei
25.08.2017
15:01:10
Ну вот например обычный пример, есть функция которая создаёт другую функцию, у каждого экземпляра функции есть стейт
function counter() {
let counter = 0;
return function () {
counter++;
return counter;
}
}
var c1 = counter();
var c2 = counter();
console.log(c1());
console.log(c1());
console.log(c2());
console.log(c2());
console.log(c2());
out is
1
2
1
2
3

F01134H
25.08.2017
15:07:38

Google

F01134H
25.08.2017
15:07:54
ну типо по сути оно как константа лежит и во время рантайма не меняется
Блин, сложна
@fes0r помоги

Sergei
25.08.2017
15:10:23

F01134H
25.08.2017
15:12:23
но изменить значение коунтера ты при этом можешь

Sergei
25.08.2017
15:13:47

F01134H
25.08.2017
15:13:58
кстати вопрос в тему, а является ли иммутабельная переменная - константой?

Sergei
25.08.2017
15:23:45

Aleh
25.08.2017
15:26:27
инкапсуляция на уровне модуля, никто не может трогать не за-экспорченное

Sergei
25.08.2017
15:29:42

Aleh
25.08.2017
15:29:47
да

Sergei
25.08.2017
15:30:55
да
А ну про модули я ещё не читал

Aleh
25.08.2017
15:32:03
ну и приватные переменные через # у классов https://github.com/littledan/proposal-private-methods

Sergei
25.08.2017
15:46:25
ну и приватные переменные через # у классов https://github.com/littledan/proposal-private-methods
Ну я привёл пример замыкания функции как функции с стейтом что практически то же самое что и обьект который может иметь свой стейт, единственное различие это то что функция(обьект) имеет только один метод. Ну и терминология разная ещё.
function person(personName) {
var name = personName;
return function() {
return name;
}
}
var female = person("Ada");
var male = person("Mike");
console.log(female());
console.log(male());

Aleh
25.08.2017
15:47:56

Sergei
25.08.2017
15:50:36

Aleh
25.08.2017
15:51:50

Sergei
25.08.2017
15:54:36
пример ж рабочий)
как тогда правильно принять два возвращаемых значения?
var a, b = person("Mike");
a();
b("Bob");
a();
не работает

Google

Aleh
25.08.2017
15:55:05
это ж простой объект, можно разыменованием
const { showName, changeName } = person(“Bob”)

Sergei
25.08.2017
15:57:35

Aleh
25.08.2017
15:58:13
что именно не то?

Sergei
25.08.2017
15:59:47
да не всё верно, я затупил) возвращается же обьект {}
у меня ещё первая мысль была что если несколько значений возвращается то значит это будет или массив или еще что то в этом роде, но потом что то я вспомнил про lua, а так как js вроде бы брал некоторые концепции от этого языка я подумал что и здесь так.

Артур Евгеньевич
28.08.2017
07:24:41
Пацаны. Можно ли юзать валидацию в дто?

Sergey
28.08.2017
07:27:48
да
только не "в дто", а просто валидировать дто

Max
29.08.2017
12:55:08
Всем привет. Дано: 1) Есть доменная модель, которую вынесли в отдельную репу и по всем канонам DDD она не знает ничего о внешнем мире. 2) Есть проект в котором эта модель используется. 3) Есть некое правило (которое я до конца не постиг и могу понимать неверно) которое гласит, что каноническое DDD не должно тупо иметь перечень геттеров и сеттеров, или этот перечень надо минимизировать. Вопрос: В отсутствии (иил недостаточности) геттеров/сеттеров свойств (полей/атрибутов?) объекта доменной модели каким образом осуществлять доступ на чтение/изменение свойств этого объекта? В условиях также то, что лишь часть свойств инициализируются в конструкторе и лишь часть свойств являются VO. Спасибо за внимание!


Aleh
29.08.2017
13:00:28
через методы, которые несут смысловую нагрузку
например у юзера недолжно быть setPassword, а должны быть методы того, что реально может происходить с пользователем(resetPassword - фича, для забывших пароль, changePassword - для смены пароля из профиля)

Vladislav
29.08.2017
13:01:34
т.е. через геттеры и сеттеры)

Aleh
29.08.2017
13:03:57
зачем вы вынесли домен в отдельный репо вообще говоря вопрос, я бы такое не делал


Max
29.08.2017
13:06:42
Разработка начиналась именно с предметной области, потому она отдельно. Остальные проекты это отдельные текущие и будущие сервисы, которые просто используют этот или другой домен

Aleh
29.08.2017
13:07:31
а что собой представляла разработка предметной области?

Max
29.08.2017
13:09:26
Перенос бизнес-процессов, участников и событий с последующим расширением по мере внедрения + тесты
Правильно ли я понимаю, что то некое правило про геттеры и сеттеры просто о том, что не надо всё так называть (и именовать), а стоит выделять смысловые методы и описывать их?

Aleh
29.08.2017
13:11:23
а что такое “геттеры” и “сеттеры”?

Google

Max
29.08.2017
13:11:55
getName(), setName()

sic transit
29.08.2017
13:11:58

Aleh
29.08.2017
13:12:20

sic transit
29.08.2017
13:12:29

Aleh
29.08.2017
13:12:36

sic transit
29.08.2017
13:13:13

Max
29.08.2017
13:13:36
То есть технически я делаю геттеры и сеттеры, но стоит реализовать их условно не как setName(), а как rename() ?

Aleh
29.08.2017
13:14:08
метод должен выглядеть соответственно
changePassword(Password $old, Password $new

sic transit
29.08.2017
13:15:00
Что за язык то?

Aleh
29.08.2017
13:15:21
да любой с методами

sic transit
29.08.2017
13:15:34

Aleh
29.08.2017
13:15:47

sic transit
29.08.2017
13:16:01
А что php ныче строготипизированный?

Aleh
29.08.2017
13:16:46
тайпхинты давно есть, для ретурнов тоже, все остальное такое же говно как и раньше)

sic transit
29.08.2017
13:17:11

Aleh
29.08.2017
13:17:43

sic transit
29.08.2017
13:18:16

Google

f4rt~
29.08.2017
13:18:27
void :D

Aleh
29.08.2017
13:18:28
public function changePassword(Password $old, Password $new): bool

Dmitriy
29.08.2017
13:18:49
после Ж

Андрэ
29.08.2017
13:18:50

sic transit
29.08.2017
13:18:53