• Какой код лучше?

    @Gentlee Автор вопроса
    Степан Зубашев, вы все пытаетесь рассуждать о каком то другом методе, но только не этом. Вы так сильно расстроились что никому не нравится 2 реализация за которую вы топили? ))
  • Какой код лучше?

    @Gentlee Автор вопроса
    Степан Зубашев, это для меня не секрет :) поэтому я и говорю не про карму, в про содержание комментариев.
  • Какой код лучше?

    @Gentlee Автор вопроса
    mayorovp, где? я не вижу. Покажите где дублирование, срочно исправлю.
  • Какой код лучше?

    @Gentlee Автор вопроса
    Степан Зубашев, речь скорей не о нажатии дизлайк, а об оценке моего и другого подхода.
  • Какой код лучше?

    @Gentlee Автор вопроса
    Степан Зубашев это не мягкое с теплым, это очень конкретный вопрос про то, как бы кто реализовал конкретную функцию printStream. Не пудрите мозги. Вы защищали второй подход, а я первый. Не обижайтесь что большинство с вами не согласно.
  • Какой код лучше?

    @Gentlee Автор вопроса
    Да верно, вы тот самый минусатор))
  • Какой код лучше?

    @Gentlee Автор вопроса
    Вопрос конкретно про данную функцию, а не про потоковую обработку аудио/видео или еще чего то. Сюда написал так как на хабре меня с 1 вариантом дико заминусовали, а второй заплюсовали. Хотелось все таки точно узнать мнение других. Вы случайно не один из минусаторов оттуда? ))
  • Какой код лучше?

    @Gentlee Автор вопроса
    Вопрос скорей об организации кода, а не отдельных багах. То есть по вашему второй подход лучше? И где же он в 1 случае разбросан по проекту если там одна строчка в одном методе? Был бы разбросан - был бы отрефакторен.

    То есть имеет смысл каждую строчку кода выделять в отдельную функцию чтобы локализовать потенциальную ошибку в одной функции? :)
  • Как использовать High-Order-Reducer, react/redux?

    Антон Спирин это лишь пример который я накидал за минуту, чтобы было понятно насколько все проще, и можно еще больше упрощать. Общий или не общий loadingProp легко подгоняется под нужны. Более того, видно что и интерфейс, и реализация очень простые и гибкие.

    В приведенном вами коде только один абсолютно негибкий интерфейс (без реализации) в жесточайшем вакууме, с кучей непонятно зачем кому то нужных нагенерированных объектов.

    Собственно спорить больше не буду, свою позицию показал, код показал, всем пока.

    PS. Ах да, очень глаза мозолили фразы про то что нарушается flux, так вот он не нарушается.
  • Как использовать High-Order-Reducer, react/redux?

    Антон Спирин, смотрю я на ваш код и слезы текут)) а надо то такую ерунду сделать)) Про вашу бессмысленную критику даже говорить не хочется.

    cester redux этим и плох, что ради простых вещей нужно извращаться. С redux-light надо было бы всего лишь написать один helper метод и использовать примерно так:

    // users.js
    
    async function getUser(id) {
    	await helper.load({
    		type: 'GET_USER',
    		func: () => api.getUser(id),
    		rootProp: 'users'
    	});
    }
    
    async function editUser(id, value) {
    	await helper.load({
    		type: 'EDIT_USER',
    		func: () => api.editUser(id, value),
    		rootProp: 'users'
    	});
    }
    
    
    // helpers.js
    
    async function load({ type, func, rootProp, loadingProp = 'isFetching', resultProp='data', errorProp='error' }) {
    	if (getState()[rootProp][loadingProp]) return;
    	
    	setState({
    		type: type + '_STARTED',
    		[rootProp]: { [loadingProp]: true }
    	});
    
    	let data;
    	try {
    		data = await func();
    	}
    	catch (error) {
    		setState({
    			type: type + '_ERROR',
    			[rootProp]: {
    				[loadingProp]: false,
    				[errorProp]: error
    			}
    		});
    		return;
    	}
    
    	setState({
    		type: type + '_SUCCESS',
    		[rootProp]: {
    			[loadingProp]: false,
    			[resultProp]: data
    		}
    	});
    }
  • Как использовать High-Order-Reducer, react/redux?

    Антон Спирин, по порядку:

    это в продакшене в двух проектах? Не смешите. Вы же написали это в середине декабря.

    В середине декабря я решил оформить это в одтельный модуль и залить на гитхаб / добавить в npm.

    При этом, эта шляпа даже не работает.

    Чтобы она заработала, во второй ваш пример добавьте

    import createStore from 'redux-light';

    У меня сразу все работает. Если же вы используете require, то надо писать так:

    var createStore = require('redux-light').default;

    Можно в будущем добавить модуль babel-plugin-add-module-exports...

    <пропускаю пустословие>

    1.Зачем тут вообще redux?

    Чтобы хранить состояние и автоматически обновлять React компоненты при его изменении. (для этого использую react-redux).

    2. Зачем тут типы действий?

    Так как библиотека основана на оригинальном redux, то они уже там есть. Я мог бы убрать необходимость добавлять type (и я собственно так и сделал в первом проекте), но все же у каждого изменения состояния должна быть причина, чтобы было намного проще дебажить, я понял что лучше ее оставить. Но у меня есть ветка, где redux переписан полностью, и там можно отключить. (пока еще в разработке + react-redux-light)

    3. Как правильно получить текущее состояние?

    Вот так:

    let state = store.getState()

    Исходя из ваших вопросов и прочих размышлений могу сделать вывод, что вы сами не понимаете что такое redux и что он конкретно решает. Ведь вы даже не смогли привести ни одного реального недостатка этой библиотеки, а ведь они там есть (как и в оригинальном redux конечно же).
  • Как использовать High-Order-Reducer, react/redux?

    Антон Спирин, а конструктивная критика будет или только гав-гав?
    Это глумление отлично работает в двух проектах в продакшене.
  • Как сделать сайт, достойный магистерской диссертации?

    Кандидатский проект хуже? то есть чтобы стать кандидатом наук достаточно сделать долбаный сайт? )))
  • Как сделать сайт, достойный магистерской диссертации?

    Dioved, на них можно сделать, например, копию toster? без программирования.