Более краткий код, который подтверждает, что l oop был запущен, по крайней мере, один раз - PullRequest
1 голос
/ 11 января 2020

У меня здесь есть фрагмент кода, над которым я работал для программы, которую я буду оказывать поддержку (надеюсь) долгие годы.

Здесь я должен подтвердить, все ли файлы изображений (они определенно являются изображениями) Файлы подушек, поддерживаемые на данном этапе) действительны и не повреждены.

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

    to_analysis_files = \
        map(lambda img_file: Image.open(img_file),
            itertools.chain(
                a_path.glob(file.stem + '.*'),
                b_path.glob(file.stem + '.*'),
                c_path.glob(file.stem + '.*'),
            )
        )
    files_were_found = False

    try:
        for im in to_analysis_files:
            files_were_found = True
            im.verify()
    except Exception as e:
        LOG.warning("Faulty image. Got exception %s", str(e), exc_info=True)
    else:
        if files_were_found:
            LOG.info("Images exist and pass. %s", file)
            continue

Примечание:
continue есть, потому что это часть относительно большого for l oop. На самом деле я мало что могу сказать по этому поводу, я в основном застрял с этим.

Требования здесь следующие:

  1. Если хотя бы одно изображение неисправно, запускается основная часть программы
  2. Если там нет изображений, запускается основная часть программы
  3. Если есть хотя бы 1 изображение и они не являются неисправными, то программа не должна запускаться

У меня нет контроля над требованиями.
Приведенный выше код работает и выполняет свою работу.

** My main беспокойство. **

Это переменная files_were_found, которая является просто флагом и, кажется, ничего не делает, кроме того, что она снова и снова устанавливается в true, просто если это приходит позже Мне кажется, что это замедляет скорость, так что программист может прочитать этот кусок кода.

Есть ли какие-либо рекомендации или идеи о том, как удалить files_were_found или, по крайней мере, иметь его в пути он не использует строки, подобные приведенному выше коду?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...