![]() |
|
Модераторы: Daevaorn |
![]()
|
|
||
|
|
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
у меня возник небольой спор, выберите, то, что вы бы использовали в своем проекте. Комментарии приветсвуются.
Заранее спасибо. |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
vinter, ответ "создам структуру(класс)" не принимается?
с помощью класса можно будет передавать оба варианта (в конструкторах) и в том же конструкторе можно будет проверить "правильность" данных + это может очистить код и ускорить работу проги (так как часто проверки на "правильность" данных дублируются в каждой из функций) |
|||
|
||||
| ama_kid |
|
|||
![]() АСУТП-кодер ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1460 Регистрация: 5.3.2007 Где: Москва Репутация: 2 Всего: 95 |
имхо, очень сильно зависит от формализованности и законченности списка параметров. Если список параметров четко оговорен и типизирован - тогда предпочту параметры раскидать. Если же преполагается плавающий механизм списка параметров (а особенно, если etc подразумевает неоконченный и неизвестный на момент разработки хвост) - тогда лучше строкой...
Создавать класс ради сиюминутной единичной задачи - не всегда оправдано. -------------------- самурай без меча подобен самураю с мечом, но только без меча |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
ama_kid, я и не говорю, что всегда нужно делать так
точнее я имел в виду, что так нужно делать только в случае достаточно больших прог но в вопросе о "сиюминутности" ничего не говорится, потому я предложил еще 1 вариант. |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| vinick |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 285 Регистрация: 9.6.2005 Репутация: 3 Всего: 22 |
Если нет объективных причин, то предпочту второй вариант. Т.к. лень парсить строку
|
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
выбрал второй вариант, однако в таком виде :
foo ("192.168.0.2:3456", "i ***","etc") ; каждая строка представляет собой определенную структуру, предназначенную для хранения данных для определенной задачи. т.е конечный вид функции условно такой
имхо парсить строку меж этих задач (Connect и SendIdentify) , да и так же применять один и тот же вид "протокола" хранения данных для каждой задачи на мой взгляд нецелесообразно. Это сообщение отредактировал(а) mes - 5.12.2008, 19:07 |
|||
|
||||
| shara |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 29.6.2004 Где: печенье? Репутация: нет Всего: 2 |
просто лень разбирать строку
-------------------- с точки зрения аэродинамики шмель не может летать |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
я бы создал класс ip::tcp::endpoint, для хоста, и класс auth::user для имени-пароля и передавал бы их, это технологичней
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
народ вы на названия переменных не заморачивайтесь, это просто пример
|
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
ну ты меня понял, текстовая строка это текстовая строка, тем более если она получена откуда-то извне. она должна пройти какую-то валидацию, потом должна быть проанализирована, а потом на ее основе должны быть созданы объекты, с которыми работает программа.
Но если ф-я о которой идет речь это ф-я, которая и должна создать эти объекты, то лучше передавать одну строку, так-как это эффективней(меньше фрагментация памяти, меньше разных участков памяти должно быть загружено в кэш), плюс, одно строку можно целиком обработать регулярным выражением |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
ну с точки зреняи эффективности первый вариант в любом случае проигрывает:
1. В С++ нет регулярных, а значит надо писать свой парсер, или юзать boost(который тоже не Святым Духом питается). 2. Парсинг это затраты, и эти затраты куда больше, чем затраты на фрагментацию(сомневаюсь, что она будет иметь место), к тому же я думаю лежать то они как раз убдут так же как и цельная строка, не вижу причин компилятору поступить по другому. |
|||
|
||||
| Lazin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3820 Регистрация: 11.12.2006 Где: paranoid oil empi re Репутация: 41 Всего: 154 |
ну если нужно получить в результате не строку, а скажем число, то парсить все-равно будет нужно строки в памяти размещает не компилятор а менеджер памяти, представь что у тебя over 9000 таких строковых параметров, думаешь фрагментации не будет? хотя на самом деле это не важно в 99.9% случаев, нужно руководствоваться логикой работы программы, в одном месте более правильным может быть 1-й вариант в другом 2-й |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
разве в данном случе все не будет просто лежать последовательно в стеке? ага |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
||||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |