Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> если нужно сделать функцию, возвращающую bool 
:(
    Опции темы
 
если нужно сделать функцию, возвращающую bool, как вы поступите?
Так и напишу bool Name(/*arguments*/). Больше и думать не о чем. Надо будет что-то изменить - поменяю прототип. [ 29 ]  [78.38%]
Не раз уже наступал на грабли изменчивости требований к функциям. Особенно к количеству возвращаемых значений. Сделаю enum и буду возвращать его. [ 3 ]  [8.11%]
Все равно bool, а все, что потом может добавиться - это ошибки - их выбрасываю исключением. [ 4 ]  [10.81%]
Все равно bool, а все, что потом может добавиться - это ошибки - их записываю в глобальную переменную, а потом, если надо, юзер использует мой GetLastError(). [ 1 ]  [2.70%]
Функция void, а возвращаемые значения выбрасываются исключением. [ 0 ]  [0.00%]
Всего проголосовавших: 37
В этом опросе возможен один вариант ответа
Гости не могут голосовать 
Mayk
Дата 22.2.2008, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Earnest @  22.2.2008,  18:42 Найти цитируемый пост)
Что касается 3 последних вариантов - это просто абсурд и конец ООП. 

Цитата

Все равно bool, а все, что потом может добавиться - это ошибки - их записываю в глобальную переменную, а потом, если надо, юзер использует мой GetLastError().

имхо that depends. Если ф-ция принадлежит какому-либо классу, то от ООП не убудет если в этот же класс ввести "interruptionReason()"/"wasInteruptedByUser()".
Если же она не принадлежит классу, то ООП уже был мёртв  smile 



--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
marcusmae
Дата 22.2.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



поддерживаю тз Mayk-а.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Alek86
Дата 22.2.2008, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Lazin, Mayk, почти убедили smile

правда значит есть еще один вариант - возвращать bool, но под тайпдефом

ибо когда в логике много отаких от булов, очень удобно, когда компилятор вместо тебя следит, чтобы в функцию
Код

typedef bool IsRed;
typedef bool IsRound;
void func(IsRed i_is_red, IsRound i_is_round);

передаваются результаты функций
Код

IsRed Red();
IsRound Round();

именно в том порядке, в каком нужно

Это сообщение отредактировал(а) Alek86 - 22.2.2008, 16:47


--------------------
user posted image    user posted image
PM MAIL   Вверх
Mayk
Дата 22.2.2008, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



Цитата(Alek86 @  22.2.2008,  20:45 Найти цитируемый пост)
1:
2:
3:
    
typedef bool IsRed;
typedef bool IsRound;
void func(IsRed i_is_red, IsRound i_is_round);

передаваются результаты функций
Выделить всёкод C++
1:
2:
    
IsRed Red();
IsRound Round();

именно в том порядке, в каком нужно

Так ведь фокус в том что не следит.
Код

typedef bool IsRed;
typedef bool IsRound;
void f( IsRed r, IsRound rr );
int main(){
    IsRed red;
    IsRound round;
    f( round, red ); //съедаеццо
}

хотя в данном примере разумеццо следует делать структуры/enum'ы Color и Shape.

Это сообщение отредактировал(а) Mayk - 22.2.2008, 17:15


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
JackYF
Дата 22.2.2008, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



bel_nikita, не поддерживаю, костыль, имхо.

Первый вариант, конечно же.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
marcusmae
Дата 22.2.2008, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


stravaganza
**


Профиль
Группа: Участник
Сообщений: 874
Регистрация: 26.3.2006

Репутация: 5
Всего: 39



JackYF, если что

Код

typedef int BOOL


- это в WINAPI так сделано.


--------------------
ἀπὸ μηχανῆς θεός
PM MAIL ICQ GTalk   Вверх
Alek86
Дата 22.2.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1299
Регистрация: 30.1.2007
Где: Киев

Репутация: 21
Всего: 25



Цитата(marcusmae @  22.2.2008,  18:55 Найти цитируемый пост)
- это в WINAPI так сделано.

то есть чистые C


Mayk, и правда
тогда только енамы smile


--------------------
user posted image    user posted image
PM MAIL   Вверх
JackYF
Дата 22.2.2008, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



Цитата(marcusmae @  22.2.2008,  17:55 Найти цитируемый пост)
это в WINAPI так сделано. 

я WinAPI не уважаю.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
Lazin
Дата 22.2.2008, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

Репутация: 41
Всего: 154



Цитата(marcusmae @  22.2.2008,  18:55 Найти цитируемый пост)
это в WINAPI так сделано. 

там так сделано для совместимости с Си, в котором нет bool  smile 
PM MAIL Skype GTalk   Вверх
MAKCim
Дата 22.2.2008, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



Цитата(Lazin @  22.2.2008,  23:45 Найти цитируемый пост)
там так сделано для совместимости с Си, в котором нет bool

смотря какая версия С рассматривается  smile 
Цитата(JackYF @  22.2.2008,  22:01 Найти цитируемый пост)
я WinAPI не уважаю.

чего так?


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
JackYF
Дата 23.2.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 18
Всего: 162



 smile 
Цитата(MAKCim @  22.2.2008,  22:52 Найти цитируемый пост)
чего так? 

так получилось (с)  smile Костылей много. И за макросы типа LPSCWTSTR.

Помню, прикол был... есть функция API, которая возвращает список сетевых адаптеров... так вот, порядок выдачи самих адаптеров определялся настройкой из гуя в експлорере, что чётко записано в MSDN. Я долго недоумевал...


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
MAKCim
Дата 23.2.2008, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



 smile 
JackYF, 
ясно
для меня в WinAPI букаф много, пальцы болят  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
vadiml
Дата 26.2.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 27.7.2007

Репутация: 2
Всего: 7



проголосовал за enum, хотя именно в С на такие грабли не наступал, а вот в базах данных -- несколько раз было, теперь там использую только int
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0587 ]   [ Использовано запросов: 24 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.