- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
if value == '' or value == None or value == False or value == 0:
...
if count(data) <= 0:
...
# так же он еще умеет рефакторить это
if post_data is None:
...
# вот в это
if not post_data:
...
Сколько тебе лет? Судя по страничке вконтакте, ты моложе меня. Что явно не в мою пользу.
и
if not post_data:
одинаковой говнистости конструкции.
В чем говно?
if post_data is None только если post_data это экземпляр объекта None.
Не стоит писать хуйню.
Значит то оба НЕ говно.
Вот нахрена нужно "рефакторить" одну конструкцию в другую, если:
1. Они дают неэквивалентные результаты.
2. По написанию и эффективности не сильно отличаются.
Я понимаю
x = [1, 2, 3, 4, 5, 6, 7, 8, ..., 100]
отрефакторить в
x = [i for i in range(1,101)]
Но заменить "x is None" на "not x" это не рефакторинг, а хуйня какая-то.
>x = [i for i in range(1,101)]
Что рефакторится в x = range(1,101) потому что range() возвращает список в отличие от xrange().
[/зануда]
>Но заменить "x is None" на "not x" это не рефакторинг, а хуйня какая-то.
Если x может принимать эквивалентно ложные значения помимо None. Если не может, то разницы не будет.
> Но заменить "x is None" на "not x" это не рефакторинг, а хуйня какая-то.
В этом и суть поста, иначе ОП бы об этом и не упомянул.
Рефакторилка чесалась.
Тут, вполне возможно, источник говна выше по течению (т.е., код, который присваивает такие разные значения), а это - уже калоуловитель.
> if count(data) <= 0:
Устойчивый код, на случай если вдруг count отрицателен. (это не совсем сарказм, скорее объяснил бы привычкой, оставшейся от C)
if not value:
оптимизируем