Рубрики
Без рубрики

Питонский тройной мой случай против “тройного оператора” в Python

Почему мы должны избегать их. Помечено с Python, Python3.

Террийный Что?

Террические операторы, также известные как Условные выражения В Python можно использовать, чтобы сделать наш код короче:

Но я не люблю их по двум причинам:

1. Они часто ходят против дзен Питона

Если вы не знаете Дзэн Питона Начните интерпретатор Python и введите Импортировать это Отказ Zen – это набор руководящих принципов для написания кода Python.

Возможно, большая часть времени условных выражений, вероятно, сломается 3 из этих принципов:

  • Красивая лучше, чем уродливая.
    • E.G.: «Странно», если N% 2 иначе «даже» что-нибудь, но красиво
  • Резет лучше, чем плотный.
    • E.G.: «Странно», если N% 2 иначе «даже» более плотный, чем утверждение, если/else
  • Количество читаемости.
    • E.G.: «Странно», если N% 2 иначе «даже» не так читабелен как оператор IF/ELSE

И, что более важно …

2. Они часто обманывают наше тестовое покрытие

Условные выражения могут заставить нас думать, что мы охватывали все возможные ветви с тестами, когда у нас на самом деле нет. Проверьте следующий пример:

Если я запускаю тесты с Охват это выход:

Согласно изображению, я покрыл 100% линий, не пропустив никакой ветви. Но снова ищете в коде, мы видим, что нет теста на месяцы второго семестра года.

Если я использую Classic If Stake вместо этого, отсутствие покрытия будет правильно обнаружено:

Если я запускаю покрытие, экспортирую результаты к HTML, я могу на самом деле мог видеть, какое утверждение было пропущено, и какое ветвь была частично запускается во время теста:

Теперь я знаю, что я должен написать тест, который звонит Семестр С ценностью более 6, если я хочу, чтобы функция была на 100% покрыта.

Вывод

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

Уважаемый, а не каждый кусок кода, не должен быть на 100%, охватываемых тестами, но те, которые должны быть измеримыми наилучшими возможными, и мы только что видели, что условные выражения могут попасть на нашем пути, когда мы преследуем это Отказ

Оригинал: “https://dev.to/victorosilva/my-case-against-the-ternary-operator-in-python-3068”