понедельник, 11 декабря 2017 г.

Понятный код. Совет 2. Досрочный выход их функции

Работая над проектами, очень часто приходится видеть подобный код

function someFunction($a, $b) {
    if (($a->someMethod('someString1' && $a->someMethod('someString2')) || $b->someMethod('someString')) {
        $b->someMethod($a);
        if ($b->someMethod3('someString4')) {
            $b->someMethod4();       
        }
    } 
} 

В принципе это обычная практика, противозаконного в ней ничего нет, но читать и поддерживать подобные вещи сложновато.

В данном коде есть 2 проблемы:
1. Сложное комплексное условие;
2. Необоснованная вложенность условий;

Благо, существует прием, который позволяет устранить эти проблемы. Название ему - досрочный выход из функции. Суть приема заключается в том, что нужно пытаться выйти (возврящать return) из функции как можно раньше.

function someFunction($a, $b) {
    if (!($a->someMethod('someString1' && $a->someMethod('someString2'))) {
        if (!$b->someMethod('someString')) {
            return;
        }
    }

    $b->someMethod($a);

    if ($b->someMethod3('someString4')) {
        $b->someMethod4();       
    }
} 


Конечно есть очевидные минусы этого подхода:
1. Увеличение количества строк кода;
2. Иногда приходится перемещать большое количество строчек кода при добавлении нового условия;

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

Комментариев нет:

Отправить комментарий