This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
https://toster.ru/q/276441 | |
Отсюда, есть и другие рекомендации от др авторов. | |
Я когда делаю Code Review критерии следующие: | |
* Безопасность: | |
- Каждый аргумент метода простого типа должен проверяться на тип в случае его проксирования и на граничные значения в случае обработки. Чуть что не так - бросается исключение. Если метод с кучкой аргументов на 80% состоит из поверки из аргументов - это вполне норм)) | |
- Никаких trigger_error, только исключения. | |
- Исключения ДОЛЖНЫ быть человеко-понятны, всякие "Something went wrong" можно отдавать пользователю, но в лог должно попасть исключение со стектрейсом и человеко-понятным описанием, что же там пошло не так. | |
- Каждый аргумент (объект) метода должен быть с тайпхинтингом на этот его класс, или интерфейс. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT | |
idstat.relname AS TABLE_NAME, | |
indexrelname AS index_name, | |
idstat.idx_scan AS index_scans_count, | |
pg_size_pretty(pg_relation_size(indexrelid)) AS index_size, | |
tabstat.idx_scan AS table_reads_index_count, | |
tabstat.seq_scan AS table_reads_seq_count, | |
tabstat.seq_scan + tabstat.idx_scan AS table_reads_count, | |
n_tup_upd + n_tup_ins + n_tup_del AS table_writes_count, | |
pg_size_pretty(pg_relation_size(idstat.relid)) AS table_size |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@pytest.fixture(autouse=True) | |
def mute_signals(request): | |
# Skip applying, if marked with `enabled_signals` | |
if 'enable_signals' in request.keywords: | |
return | |
signals = [pre_save, post_save, pre_delete, post_delete, m2m_changed] | |
restore = {} | |
for signal in signals: | |
restore[signal] = signal.receivers |