Ответы пользователя по тегу Android
  • Как эффективно использовать GIT одному человеку в разных проектах?

    @heahoh
    Full stackoverflow developer
    Посмотрите на SourceTree: разделение на проекты, ветки под фичи и баги да и вообще удобный и приятный в использовании GUI для Git. И почитайте про git flow
    Ответ написан
    Комментировать
  • Код ревью или что не так с моим тестовым заданием?

    @heahoh
    Full stackoverflow developer
    Мнение относительно оформления, так как скилзами в java не обладаю, - код, конечно, пишется для машины, и ей без разницы, как он написан - лишь бы работал, но читать человеку и разбираться для сопровождения и расширения функционала - человеку.

    adapter/TaskListAdapter.java
    public boolean areItemsTheSame(Task item1, Task item2) {
                    return !(item1 == null || item2 == null) && item1.getId() == item2.getId();
                }

    Если не (item1 или item2 равны null) и id итемов одинаковы...
    Как я понимаю, если в метод передать item1 = null, то у вас будет nullPointerException или что-то подобное?
    Почему бы не изменить конструкцию на item1 != null && item2 != null && item1.getId() == item2.getId(), мне кажется будет читабельней. Возможно покажется глупым использовать длинные названия переменных, вроде originalTask и taskToCompare, но они явно лучше, чем item1 и item2, да и автокомплит IDE поможет в наборе названий

    Тернарный оператор внутри if пугает также, как и if без открытия скобок
    model/Task.java
    if (ActualEndDate != null ? !ActualEndDate.equals(task.ActualEndDate) : task.ActualEndDate != null)
                return false;

    Поясню - замыленный глаз, конец рабочего дня и голова совсем не варит. Нужно срочно закрыть таску - открываем код и видим необходимый участок, который собираемся закомментить
    ...
    if (длинное условие)
                doSomething();
    doAnotherThing();
    ...


    ...
    if (длинное условие)
    //            doSomething();
    doAnotherThing();
    ...

    и теперь наш doAnotherThink выполняется не всегда, а лишь при выполнении условия.
    Вот пример такой ошибки в реальном проекте (пункт "Неправильно закомментированная строка")

    Ну и
    result = 31 * result;
    Где 31 используется несколько раз. По мне удобней завести локальную переменную с адекватным значению названием.

    Почитайте "Совершенный Код" Макконнелла - шикарнейшая книга для разработчиков
    Ответ написан
    2 комментария