У меня здесь есть фрагмент кода, над которым я работал для программы, которую я буду оказывать поддержку (надеюсь) долгие годы.
Здесь я должен подтвердить, все ли файлы изображений (они определенно являются изображениями) Файлы подушек, поддерживаемые на данном этапе) действительны и не повреждены.
В рамках этого процесса. В этом процессе я попытался найти хороший баланс между производительностью и легкостью чтения.
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 изображение и они не являются неисправными, то программа не должна запускаться
У меня нет контроля над требованиями.
Приведенный выше код работает и выполняет свою работу.
** My main беспокойство. **
Это переменная files_were_found
, которая является просто флагом и, кажется, ничего не делает, кроме того, что она снова и снова устанавливается в true, просто если это приходит позже Мне кажется, что это замедляет скорость, так что программист может прочитать этот кусок кода.
Есть ли какие-либо рекомендации или идеи о том, как удалить files_were_found
или, по крайней мере, иметь его в пути он не использует строки, подобные приведенному выше коду?