All streams
Search
Write a publication
Pull to refresh
22
0
Маланюк Михаил @CJay

Пользователь

Send message

Попытка оставить один return выльется в большую вложенность. Код внутри if/else, внутри которых ещё if/else, а там ещё ветка else, и ещё одна… только для того, чтобы завершить выполнение функции одним return. А ещё это может быть вложено в циклы. Кошмар.


Выбросив из головы странное предубеждение иметь один return вы уже неплохо упростите чтение кода и сделаете его чище.

Если у функции имеется какой-то контракт на входные данные, то разве не логично ли использовать ранний return?


function makeSomeAction(items, action){
    if (items.isEmpty())
        return;
    if (action == null)
        return;

    ... какой-то код
   return;
}

Как это сделать с одним return?

А почему тогда не так?


if (isAdmin()) 
    return admin;

return user;

А если ветвей больше, то ещё нагляднее, как мне кажется:


if (isAdmin()) 
    return admin;

if (isManager()) 
    return manager;

if (isOwner()) 
    return owner;

if (isAuthorizedUser())
   return user;

return anonimUser;

Русскоязычный канал Madman поражает безумно динамичным и креативным монтажём. Очень качественные как ролики, так и реализации каких-либо идей. Именно на этом канале было интересно смотреть даже то, как человек убирается у себя в гараже.

Спасибо за перевод. Хорошо, что продолжили.

Шейдер эффекта дождя от 1 капли?! Ожидал чего-то большего. Какой-то трюк, хитрость с частицами, искажение нормалей для "бликов" без затрагивания геометрии. Но тут всего этого нет. Есть лишь уравнение окружности, тригонометрическая функция и много тэгов.

может речь о том, что вирей и для блендера есть?
https://www.chaosgroup.com/vray/blender

Не зарабатываю на жизнь майкой, могу иметь ошибочное представление. Но не знаю, в каком ещё пакете кроме гудини флюиды лучше, чем в майке. Они и раньше были более менее, но после интеграции бифроста можно забыть про realflow. Разве нет!?
P.S. Realflow и Phoenix FD я не рассматриваю, так как это не пакеты общего назначения.

Что-то вы в один ряд поставили продукты с разными задачами. Гуди используется для процедурной анимации и генерации. Персонажей в нём не лепят. Сильная сторона Maya — анимация, риггинг, флюиды. Если речь о моделлинге, то тут макс, модо, блендер. Если моушн графика, то раньше синема4д, сейчас процедурные ништяки и в майку подвезли. Если речь об архивизе, то тут только Макс. Скульптинг — блендер, зебра, 3д коат, мад бокс. То есть, практически у каждого продукта своя ниша.
Но если говорить про лайтвэйв… Можете назвать студии, которые используют lightwave? Под него даже vray нет (хотя это один из основных рендеров в студиях).
Вы точно только на половину в режиме троля написали?

Знания — однозначно сила. А вот в какой цвет вы эту силу окрасите, зависит от вас.
Завтра попробую пул реквесты поотправлять с предложениями об улучшении кода.
Думаю, мне удастся показать, как избавиться от globals и сделать код стройным и понятным не только интерпретатору.

Почему не лучшая мысль?! Нормальная мысль.
Вы хотите узнать, как сделать этот код лучше?! Если да, то создавайте.

Да, посмотрел. Только вы в гист сохранили, а это, как я понял, сервис снипетов. Я же советую в сам github залить, чтобы разные версии коммитить.

зачем вам методы setXXX и viewXXX? Почему не обращаться к полю непосредственно? В питоне же всё открыто, подобное сокрытие не имеет смысла.


И ещё, попробуйте отделить данные от представления. Пусть данные хранятся в массиве (списке) как целые числа. Откажитесь от класса Pole. Вам не нужно у каждой клетки иметь список соседних (это легко подсчитать и так). Как вариант — вообще отказаться от массива всех ячеек. Можно иметь лишь список с координатами бомб.


Да, и ещё. Всё-таки классы нужно называть с большой буквы.

Globals совсем не вариант.
Вы написали свою первую версию программы. Теперь её перепишите так, чтобы она работала так же, но без globals.


И циклы for j in range(len(buttons[i])) нужно менять на просто for button in buttons.


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


Советую почитать книгу "Чистый код" Роберта Мартина. Там, правда, не питон, но основные советы годятся.

А почему вы объект QQuickView() присвоили переменной appLabel? Почему это appLabel? Label — это же подпись. Может лучше было бы view = QQuickView()?

Несложный. Процесс создания компонент немного напоминает работу с React на js. Ссылку на исходники я написал в комментарии чуть выше.
Статью писать смысла особо нет, так как в официальной документации сказано обо всём том же.
А код… залил на Bitbucket. Но код очень далёк от совершенства (заранее предупреждаю):
https://bitbucket.org/mmalanuck/qmaterial

Так же пытался описать свои компоненты в виде документации, может тоже будет интересно пробежаться глазами:
https://mmalanuck.bitbucket.io/material_ui/
У стороннего наблюдателя, глядя на все эти зелёные прямоугольники с синим контуром и закруглёнными краями, может возникнуть ассоциация с рисованными на flash интерфейсами. И может показаться, что это что-то несерьёзное.
Но на самом деле, на qml очень хорошо получается сделать компоненты в том же стиле Material Design. Так что, на мой взгляд, если знаешь питон и нужно писать GUI приложение, стоит обратить внимание на эту технологию.
Мой пример qml-интерфейса


Нет, пока не применил. Пытаюсь постичь. В том числе смотрю и на DDD. Спасибо за подборку.
Если это поле нигде не учитывается в коде, то ничего нигде и не сломается. Новое поле просто будет игнорироваться.
А, к примеру, если в де/сериализаторе учитывалась контрольная сумма по полученным полям, и с новым полем у вас получаются другие суммы, то, скорее всего, неверен код сериализатора. Или же он ожидал конкретную структуру, значит, вы должны строго придерживаться её, значит, должна быть валидация получаемых данных. Приложение ругнётся, но вылетать ему необязательно.

Information

Rating
Does not participate
Location
Курск, Курская обл., Россия
Date of birth
Registered
Activity