плохо.
Я утверждаю, что если ты будешь писать коммерческий код с использованием maybe, то это приведет либо к а) чрезмерно запутанному коду, либо к б) продалбыванию сроков проекта.
Ну, банальный пример.
С сервера нам приходит модель:
setState({
name: 'John Doe'
});
Пишем обработчик формы с Maybe:
<input type="text" defaultValue={this.state.name} onChange={(event) => {
const value = Maybe(event.target.value);
this.setState({name: value}); // WTF? this.state.name будет иметь два типа: String из JSON-а, и Maybe, потому что мы его туда положили.
}} />
Придется доработать форму:
<input type="text" defaultValue={isMaybe(this.state.name) ? this.state.name.value() : this.state.name} onChange={(event) => {
const value = Maybe(event.target.value);
this.setState({name: value});
}} />
Спрашивается, нафига так делать, если и без этого все прекрасно работает?
Э, работать с мейби намного проще.
Код с maybe вообще не нужно проверять на isMaybe fromNullable(event.target.value) .map(name => this.setState({ name }))
Код, как у тебя - та же хрень, что проверка на null, функториальность и монадность мэйби позволяет работать со значением так, будто оно всегда есть, а все проблемы улетят куда-то в сторону, где мы их потом обработаем, если нужно. Иначе мэйби ничем от нала отличаться не будет
Обсуждают сегодня