Ответы пользователя по тегу Code review
  • Можете оценить уровень кода?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Навскидку:
    1. В проектах по-хорошему использовать типизацию TypeScript, Flow. PropTypes в таком случае использовать не надо.

    2. Тут в коде бессмысленное условие:
    render() {
        const { report = {} } = this.props;
        return (
          <Fragment>
            <Head>
              <title>Doctor problem with {report.doctor.name}</title>
            </Head>
            {report && <ReportDetail showDetailButton={false} data={report} />}
          </Fragment>
        );
      }

    report у вас существует всегда. Надеюсь понимаете, что пустой объект кастуется в true.

    3. Про ESLint/TSLint уже писали.

    4. Ваши редьюсеры не имеют ключей состояния. Какой-то запрос может быть в процессе, а ваши компоненты об этом не знают.

    5. Логику работы с куками лучше вынести в actions.

    6. Нет смысла разделять импорты отступами, просто соблюдайте очередность и смотрите пункт 3.

    7. Компонент __app можно декомпозировать.

    8. Неясно зачем тут геттер
    get renderReports() { /* ... */ }

    9. Для сортировки можно использовать меморизацию.

    10.
    handleChange = (e, key) => {
        const value = e.target.value;
        this.setState({
          [key]: value,
        });
      };

    <Input
      id="outlined-name" //  зачем?
      placeholder="Problem Summary"
      value={reportTitle}
      onChange={e => handleChange(e, "reportTitle")}
    />

    Можно заменить на:
    handleChange = e => {
        const { name, value } = e.target;
        this.setState({
          [name]: value,
        });
      };

    <Input
      id="outlined-name" //  зачем?
      placeholder="Problem Summary"
      name="reportTitle"
      value={reportTitle}
      onChange={handleChange}
    />


    11. /components/ReportDetail/constants.js зачем?

    12. Где-то запросы в экшенах, где-то в компонентах.

    Не знаком с next.js поэтому ничего объективного по организации кода сказать не могу, так как не до конца понимаю как этот фреймворк работает. Вижу, что авторизованных запросов пока нет. Запросы к API у вас будут происходить только на стороне клиента?
    Ответ написан
    Комментировать
  • ООП в моём тестовом задании, code review?

    rockon404
    @rockon404
    Frontend Developer
    1. Вы инкапсулируете модуль Form, но при этом он зависит от глобальных переменных, а не получает нужные параметры при создании экземпляра.
    2. Сам объект Form это ни что иное, как наглядная демонстрация антипаттерна God Object . Почему, не имеющий никакого отношения к форме, список является ее частью остается загадкой. Как и то почему в модуле инкапсулировано состояние приложения.
    3. Насчет аргумента "e" уже не раз написали. Насколько я понимаю, вы видели на просторах интернета, что так часто называют аргумент функции, но, видимо, не поняли почему. Один аргумент имеет говорящее название user, но и оно вводит в заблуждение, так как на вход ожидается массив пользователей.
    4. Почему не использованы возможности ES6 остается загадкой.
    5. Попробуйте сами догадаться, что не так с этим отрывком кода.
    users.push(this.user);
    
    let lastUser = users[users.length - 1];

    6. У вас почти все переменные в методах объявлены свойствами объекта, при том, что в этом нет никакой необходимости и это может стать причиной ошибок в дальнейшем. Почему не использованы локальные переменные остается загадкой.
    Ответ написан
    Комментировать