Size: a a a

F# Flood: ПДД made functional, making illegal state INGIBDDdale

2020 May 12

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Nikolay M
Явно вот это пахнущий код:
if a = b then
printf "a = b"
else if b = a then
printf "b = a"
else
printf "b <> a"
Этот пример - нет
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Я не говорю, что линтер должен всё расставлять
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
автоформаттер может вам помочь с косметикой, но не поможет с багами
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Я не говорю, что линтер должен такой код:
if a = b then
printf "a = b"
doSomeWork


должен превращать в такой

if a = b then
 printf "a = b"
 doSomeWork


А он должен превращать его в такой:

if a = b then
 printf "a = b"
doSomeWork


Чтобы программист видел ошибку свою
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
поэтому твоя изначально озвученная претензия про то, что "а потом вылезают баги" не решится.
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
а, вот оно че
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ура
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Если тебе линтер будет на лету править код так, при переводе каретки например, ты же сразу баг заметишь
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Но тебя будет скорее всего бесить линтер, и ты будешь его ругать)
источник

КП

Крылатый Пегас... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Nikolay M
Я не говорю, что линтер должен такой код:
if a = b then
printf "a = b"
doSomeWork


должен превращать в такой

if a = b then
 printf "a = b"
 doSomeWork


А он должен превращать его в такой:

if a = b then
 printf "a = b"
doSomeWork


Чтобы программист видел ошибку свою
По идее он не превращать должен, а ругаться на это.
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
тогда осталось найти рабочую пежню под райдер
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Ну дык там Фантомас
источник

оГ

отец Григорий... in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Nikolay M
Я не говорю, что линтер должен такой код:
if a = b then
printf "a = b"
doSomeWork


должен превращать в такой

if a = b then
 printf "a = b"
 doSomeWork


А он должен превращать его в такой:

if a = b then
 printf "a = b"
doSomeWork


Чтобы программист видел ошибку свою
А где тут ошибка, простите?
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
но неужели с Васей не договориться на этот счет? Это же сугубо практичное и логичное требование
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Рабочая пежня
источник

AH

Ayrat Hudaygulov in F# Flood: ПДД made functional, making illegal state INGIBDDdale
отец Григорий
А где тут ошибка, простите?
Программист ожидал что ворк будет пож условием
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
отец Григорий
А где тут ошибка, простите?
doSomeWork должен выполняться в блоке if
источник

R

Roman in F# Flood: ПДД made functional, making illegal state INGIBDDdale
отец Григорий
А где тут ошибка, простите?
ошибки компиляции нет. Просто очень легко неправильно понять, что делает код
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Линтер тебе не исправит баг, но укажет на него по крайней мере
источник

NM

Nikolay M in F# Flood: ПДД made functional, making illegal state INGIBDDdale
Явно выделит так сказать
источник