Змея / Говнокод #18135 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
# Мы хотели бы подключиться к базе данных. Мы не знаем, верны ли логин и пароль
# Если соединение с базой будет неуспешно, то
# Он бросит исключение. Обратите внимание, что MyDatabase и DatabaseException
# НЕ являются реальными классами, мы просто используем их в качестве примеров.

try:
    database = MyDatabase(db_host, db_user, db_password, db_database)
    database_connection = database.connect()
except DatabaseException:
    pass

if database_connection is None:
    print('The database could not connect')
else:
    print('The database could connect')

Часто вы хотите выполнить действие, которое может работать либо завершиться неудачно. Используя None, вы можете проверить успех действия. Вот пример:

Запостил: 3_14dar 3_14dar, (Updated )

Комментарии (20) RSS

  • if database_connection is None:
        connected = False
    else:
        connected = True
    
    if connected:
        print('The database could connect')
    else:
        print('The database could not connect')
    Ответить
    • if database_connection is None:
          pass
      else:
          connected = True
      
      if connected is None:
          print('The database could not connect')
      else:
          print('The database could connect')
      Ответить
      • connected = !(database_connection is None)
        
        print('The database could connect' if connected else 'The database could not connect')
        Ответить
    • Вот какие нелепости получаются, когда программист выбирает неправильный язык! Надо было сразу писать на PHP, тогда бы это выглядело органично.
      Ответить
      • Ты прав. Тем более, что бы этот код вообще заработал, автору придётся ловить уебанское исключение:
        try:
            if database_connection is None:
                print('The database could not connect')
            else:
                print('The database could connect')
        except NameError:
            print('The database could not connect')

        То ли дело PHP!
        if (is_null(@$database_connection))
            print 'The database could not connect';
        else
            print 'The database could connect';

        А если использовать шаблонизатор по назначению:
        <?php if (is_null(@$database_connection)): ?>
        The database could not connect
        <?php else: ?>
        The database could connect
        <?php endif ?>
        Ответить
        • isset($database_connection) вообще-то. У них это практически идиома 🙂
          Кстати, isset - это не функция, а специальная конструкция языка (из-за чего раньше isset($a || $b) было fatal error), так что никаких варнингов тут прятать не надо.
          Ответить
  • Все какую-то хуйню пишут. Автор зачем-то конвертирует исключение в код возврата вместо того, чтобы использовать блок try except по назначению.

    try:
        database = MyDatabase(db_host, db_user, db_password, db_database)
        database_connection = database.connect()
        print('The database could connect')
    except DatabaseException:
        print('The database could not connect')

    Кстати, правильное замечание: оно будет не none, а отсутствовать.
    Ответить
      • И MyDatabase() не кинет исклюиение? А что такое тогда DatabaseException?
        Ответить
        • Хранит параметры, кажется. А то странновато проверять пароль до подключения.
          Ответить
          • А какой от него прок тогда, если для любого действия сначала нужно вызвать connect()?
            Ответить
            • Скорее всего для пулов нужно. Чтобы несколько коннектов с одинаковыми параметрами можно было насоздавать.
              Ответить

Добавить комментарий

Где здесь C++, guest?!

    А не использовать ли нам bbcode?


    8