Читаемость кода: несколько классов ошибок в одном файле? - PullRequest
0 голосов
/ 27 февраля 2020

Я попытался создать один файл, содержащий классы ошибок. Предполагается, что этот файл необходим для того, чтобы кто-то нуждался в пользовательском классе ошибок, который должен находиться в пределах блока catch.

Фрагмент выглядит следующим образом:

class FooError extends Error {
    constructor() {
        this.name = 'FooError';
    }
}

class BarError extends Error {
    constructor() {
        this.name = 'BarError';
    }
}

module.exports = FooError;
module.exports = BarError;

Я должен используйте ошибку, подобную этой:

async function doSomething() {
    const requestResult = await doRequest();
    if (requestResult.error) {
        const errorName = requestResult.error.name;
        if (errorName === 'Foo') { throw new FooError('some error message #1'); }
        if (errorName === 'Bar') { throw new BarError('some error message #2'); }
        throw new Error('unhandled error');
    }
    return requestResult.data;
}

Но тогда Эслинт жалуется, что лучше создать 1 класс на 1 файл, что понятно, так как несколько классов с логикой в ​​нем засорят его за короткое время, сделав его читабельностью катастрофа.

Но тогда, если этим классам ошибок нужен по 1 файлу для каждого, я чувствую, что это перебор. Не говоря уже о том, что поддерживать эти файлы 1 к 1 совсем не весело, когда их много в одной папке.

Исходя из ruby, я обычно собираю эти классы ошибок в один файл, поскольку просто 1-вкладыш и рубокоп, похоже, тоже не жалуются на это.

Есть мысли по этому поводу? Я рассматриваю возможность отключить правила для этого указанного c файла, хотя я не знаю, подходит ли это к лучшему

Будет ли читаемость страдать с точки зрения других, если я это сделаю?

Если так, есть ли лучший способ организовать это лучше без создания 1 файла для каждого класса ошибок?

Заранее спасибо.

1 Ответ

1 голос
/ 27 февраля 2020

Я не думаю, что иметь два файла для двух классов - это излишне. Я не думаю, что размер класса должен даже быть критерием, чтобы определить, могут ли классы быть в одном файле или в отдельном.

Только представьте, что вам нужно только одно сообщение об ошибке в другом классе. То, как вы этого захотите, в конечном итоге потребует всего файла, а вам нужен только один.

Вы можете рассмотреть возможность создания папки для ошибок и иметь все ваши классы в отдельном файле. Затем есть индексный файл, который экспортирует эти классы.

...