- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
// А
if (x) {
...
doStuff (x);
...
// Б
if (x) {
...
doStuff (true);
...
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+127
// А
if (x) {
...
doStuff (x);
...
// Б
if (x) {
...
doStuff (true);
...
что меньшее говно? А или Б?
в случае А приходится напрягать мысль на строчке doStuff(x) чему же там равно х. но при этом эту строчку можно безболезненно вынести за if(x), если понадобится.
myaut 27.03.2015 16:36 # 0
makc3d 27.03.2015 16:59 # 0
myaut 27.03.2015 17:36 # 0
guest 27.03.2015 16:38 # +3
makc3d 27.03.2015 17:03 # −1
makc3d 27.03.2015 17:06 # −1
guest 27.03.2015 17:17 # +4
gost 30.10.2020 16:50 # 0
wvxvw 27.03.2015 18:29 # 0
makc3d 06.04.2015 19:49 # 0
some.width = 123;
doStuff(some.width); // A
или
some.width = 123;
doStuff(123); // Б
и тут уже мало кто скажет, что Б менее говнист.
> при условии, что х, который проверяется и х, который передается в функцию, отвечают за разные вещи
но как могут значения булевых переменных быть принципиально разными? true всегда равен другому true.
wvxvw 06.04.2015 20:59 # +3
Дело в том, что т.н. material implication (т.е. отношение следования, которое используется в математической логике) - это не то же самое, что и т.н. real implication (т.е. отношение следования в настоящем мире). Например, с точки зрения математической логики если завтра взойдет солнце и у меня есть пять пальцев на каждой руке, то Волга впадает в Каспийское море - это вполне легитимное умозаключение. Более того, если у меня что-то случится с пальцами, то судьба Каспийского моря будет под вопросом.
Существует множество попыток найти формальную систему, которая бы лучше описывала настоящее следование (модальная логика, системы S1..S5, отказ от аксиомы несуществующего третьего, более строгие требования к участникам формул и т.д.), но хорошей системы таки нет.
То, что используется во многих ЯП - это "классическая" логика предикатов (нулевого порядка), и поэтому в них проблема следования не решена, поэтому в них может случиться причинно-следственная связь между вещами совсем не связаными (как в примере выше). В таком случае можно сказать, что разные переменные булевого типа, со значением true, имеют разный смысл.
makc3d 06.04.2015 22:02 # 0
guest 27.03.2015 21:41 # 0
// if
bormand 28.03.2015 06:56 # +3
LispGovno 28.03.2015 19:30 # 0
kegdan 28.03.2015 21:17 # 0