Да, это довольно субъективно... Но вот мои 2 цента:
SELECT
Column1,
Column2
FROM Table1
WHERE
Column3 IN (
SELECT Column4
FROM Table2
JOIN Table3 ON
Table2.Column1 = Table3.Column1
)
, Но, действительно, я, вероятно, переписал бы его без В:
SELECT
Column1,
Column2
FROM Table1
JOIN Table2 ON
Table1.Column3 = Table2.Column4
JOIN Table3 ON
Table2.Column1 = Table3.Column1
В основном, мои правила:
В общем, следующая конструкция вполне подходит:
try:
import module
except ImportError:
# Do something else.
В вашем конкретном случае, возможно:
try:
from hashlib import md5
except ImportError:
from md5 import md5
В случае, когда модули имеют тот же интерфейс, что и здесь, решение, которое вы описали, подходит. Вы также можете изолировать импорт в отдельный модуль следующим образом:
hash.py
----
try:
import hashlib.md5 as md5mod
except ImportError:
import md5 as md5mod
-----
prog.py
-----
from hash import md5mod
....
В случае, если у них разные интерфейсы, вам нужно будет написать адаптер для выравнивания интерфейсов, как вы указали.