Создание сайтов и программирование Создание сайтов и программирование
Приветствую.
Я достаточно давно увлекаюсь программированием, но так... на уровне говнокодинга.
Всегда во всех учебниках встречал, что итогом успешного выполнения функции обычно является return 0;
Но ведь логичнее было бы возвращать 1 в качестве успешного сигнала, так как ноль интерпретируется как "ложь", и ноль возвращать при ошибке, а единицу при успешном выполнении. Таким образом можно конструкцию if сделать более простой и интуитивно понятной:
Я достаточно давно увлекаюсь программированием, но так... на уровне говнокодинга.
Всегда во всех учебниках встречал, что итогом успешного выполнения функции обычно является return 0;
Но ведь логичнее было бы возвращать 1 в качестве успешного сигнала, так как ноль интерпретируется как "ложь", и ноль возвращать при ошибке, а единицу при успешном выполнении. Таким образом можно конструкцию if сделать более простой и интуитивно понятной:
if(myfunc()) {
// Код, выполняемый в случае успешного выполнения функции если она вернула 1
} else {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 0
}
Но принято всё совсем наоборот. Так как обычно при успешном выполнении функции возвращают ноль, а при ошибке - единицу, то приходиться усложнять конструкцию if, вроде этого:if(myfunc() == 0) {
// Код, выполняемый в случае успешного выполнения функции если она вернула 0
} else {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 1
}
или сначала обрабатывать ошибку, а потом успешное выполнениеif(myfunc()) {
// Код, выполняемый в случае ошибки при выполнении функции если она вернула 1
} else {
// Код, выполняемый в случае успешного выполнения функции если она вернула 0
}
Почему так? Спросил чатЖПТ - она не знает. Сказала мне, что исторически так сложилось и что б я ей не задавал такие вопросы, делай как хочешь... Последний раз редактировалось id60527438 24 мая в 00:36
0 1 0
Комментарии (23)
ChernobylNPP
ответил babycbka888
Зачем ты оставляешь комментарий ради комментария, когда ну точно сказать нечего по существу темы?
Потому что 0 это код результата выполнения программы без ошибок. Так повелось ещё с C++.
Если программа выполняется с ошибкой то возвращается вместо 0 код ошибки.
Касаемо, того, что проще было бы возвращать 1, то возможно, но эти коды существуют для проверки именно для ловцов ошибок.
Т.е. 0 больше ориентирован на подобный код:
Если программа выполняется с ошибкой то возвращается вместо 0 код ошибки.
Касаемо, того, что проще было бы возвращать 1, то возможно, но эти коды существуют для проверки именно для ловцов ошибок.
Т.е. 0 больше ориентирован на подобный код:
function bool hasErrors() {
return myFunc();
}
return myFunc();
}
ответил Narnia
Ты рофлишь? Return это основной оператор при работе с функциями без него код будет линейным, что довольно плохо в плане проектирования.
ответил Dadadam
но создать программу его не использующую в разы сложней, поэтому такой код и уважают больше, но это из среды програмистких гуру и красоты кода, простому программисту это знать небязательно
ответил Narnia
Если использовать функции или методы класса без return то мы будем иметь процедурное программирование со спагетти кодом.
Если же говорить о computer science то тру программирование без return, как и без if с for например это кодить на ЯП семейства ассемблера. Там вместо всех операторов есть только move to.
Если же говорить о computer science то тру программирование без return, как и без if с for например это кодить на ЯП семейства ассемблера. Там вместо всех операторов есть только move to.
ответил Dadadam
да получается процедурное програмировние, пытался я погиковать когда то таким свособом ничего у меня не вышло, зеленый еще слишком для такого программирования
Для добавления комментариев необходимо авторизоваться
Легенды Крови
Удивительный мир фантазий, сражений и тайн... Битв