• Что выбрать: наглядность или краткость логических условий?

    Явное лучше, чем неявное.
    Код чаще читается, чем пишется.
    Так что лучше второй вариант.
    Ответ написан
    3 комментария
  • Насколько мой код читабелен?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Еще комментарии. Это же С++, а не С?

    Вместо набора функций, которые возвращают и принимают IntList1D, стоит завести класс, который содержит в себе указатель на начало списка. У этого класса должны быть методы initalize, is_initialized, pushBack, и т.д. Это сократит код немного и сделает его гораздо более логичным.

    Тип элемента списка вы объявляете как приватный класс-член в классе списка, и он не будет засорять пространство имен пользователей вашей библиотеки. Им о нем вообще знать не надо, они хотят в ваш список класть int и получать назад int.

    Далее, вы пишите контейнер, в идеале его стоит сделать по образу и подобию стандартных контейнеров. С итераторами и т.д. Чтобы с ними было можно работать точно также. Но, если не потянете, то хоть обзовите методы также, как у стандартных (push_back(), empty(), см std::vector, например).

    Стек и очередь могут или наследоваться от списка, или (так наверное понятнее будет) держать внутри себя экземпляр списка.

    Потом, часть функций называется частично большими буквами, частично строчными. Это вообще зачем? APPEND_FRONT_Link? Соблюдайте единый стиль хотябы в одном названии. Если они отличаются от appendFront тем, что они не предназначены для пользователей библиотек, ну так это как раз аргумент в пользу использования классов. Делаете эту функцию приватным методом. И такие обычно называются с суффиксом Impl (от implementation) - appendFrontImpl.

    И вообще чисто большими буквами обычно обзывают макросы, ну или константы на худой конец. Возьмите за основу какой-то стандартный стиль и предерживайтесь его.
    Ответ написан
    Комментировать
  • Насколько мой код читабелен?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Это все конечно очень хорошо, но в репе лежат симлинки вместо файлов. Так что пока оценка -10/10 - достигнут предельный радиус кривизны рук.
    Ответ написан
    3 комментария
  • Насколько мой код читабелен?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    С ходу же:
    try
    {
        if (from > to)
            throw "Incorrect couple 'from - to' for generating random numbers";
    }
    catch (const char *message)
    {
        std::cerr << message << '\n';
        exit(1);
    }
    Зачем нужен такой изврат, если вы ловите исключение сразу же? Чем хуже
    if (from > to)
    {
        std::cerr << message << '\n';
        exit(1);
    }


    bool init(IntList1D &list, int number)
    {
        if (list == nullptr || *list == nullptr)
        {
            if (list == nullptr)
                list = new IntList1D_element *;
            *list = new IntList1D_element(number);
            return true;
        }
        return false;
    }
    Чем меньше глубина вложенности, тем лучше. Ранний выход из функции лучше, чем выход в самом конце. Сравните
    bool init(IntList1D &list, int number)
    {
        if (is_initialized(list))
        {
            return false;  
        }
        if (list == nullptr)
        {
            list = new IntList1D_element *;
        }
        *list = new IntList1D_element(number);
        return true;
    }


    bool is_inited(const IntList1D list)
    {
        if (list == nullptr || *list == nullptr)
            return false;
        else
            return true;
    }
    Здесь и название функции кривоватое и чересчур усложнена сама функция.
    bool is_initialized(const IntList1D list)
    {
        return (list != nullptr && *list != nullptr)
    }

    Не соблюдаете единый стайлгайд. В некоторых местах одиночные строки после if взяты в фигурные скобки, в некоторых нет. Выберите один какой-либо стиль и придерживайтесь его. (Hint: добавлять строки гораздо проще, если всегда используются фигурные скобки).
    Ответ написан
    7 комментариев