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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Компактность и красота кода, Примеры 
:(
    Опции темы
drZmeu
  Дата 5.2.2007, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 1



Есть вопрос… Точнее даже предложение скидывать в этой теме свои примеры:
Что имеется в виду:
А имеется в виду преобразование допусти ERROR в 0xBAD или
DWORD ver = MAKEWORD(2,2);
WSAStartup(ver,&wsa);
В:
WSAStartup(0x0202,&wsa);


Это сообщение отредактировал(а) drZmeu - 5.2.2007, 22:55
--------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code]
PM MAIL   Вверх
bilbobagginz
Дата 5.2.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 3
Всего: 317



DWORD ver = MEKAWORD(2,2);
ты наверное имел в виду:
Код

DWORD ver = MAKEWORD(2,2);


и что-же по-твоему красивее и компактнее ?



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Kuvaldis
Дата 5.2.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


механик-вредитель
***


Профиль
Группа: Участник Клуба
Сообщений: 1189
Регистрация: 16.6.2006
Где: Минск

Репутация: 11
Всего: 61



ИМХО, по теме есть хорошая книжка
Керниган, Пайк "Практика программирования"


--------------------
Помни - когда ты спишь, враг не дремлет
Спи чаще и дольше, изматывай врага бессоницей
PM MAIL ICQ   Вверх
drZmeu
Дата 5.2.2007, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 1



Я имел в виду
замену DWORD ver = MAKEWORD(2,2); на 0x0202 ...
--------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code]
PM MAIL   Вверх
Vyacheslav
Дата 5.2.2007, 15:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



это типа, что красиввее
Код

int a = 4* 4;

или
Код

int a = 16;

smile


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
V.A.KeRneL
Дата 5.2.2007, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vadim A. Kazantsev
**


Профиль
Группа: Участник
Сообщений: 291
Регистрация: 3.12.2006
Где: Moscow, Russia

Репутация: 1
Всего: 14



Имхо, дело вкуса. А больше контекста (кода, в котором находится строчка/строки). Главное, в общем случае, чтобы было максимально понятно и прозрачно именно в данном конкретном случае.



--------------------
«C'est un pense-creux d'ici. C'est le meilleur et le plus irascible homme du monde...» © Ф.М. Достоевский, «Бесы»
---/)/)---(\.../)---(\(\
--(':'=)---(=';'=)---(=':')
(")(")..)-(").--.(")-(..(")(")

PM MAIL IM ICQ AOL YIM MSN   Вверх
drZmeu
Дата 5.2.2007, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

Репутация: нет
Всего: 1



V.A.KeRneL -> Я с тобой полностью согласен  smile 
--------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code]
PM MAIL   Вверх
EvgenZ
Дата 5.2.2007, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Freedom in me
**


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

Репутация: 1
Всего: 11



Дяденька Дьюхэрст.
Код

if(a < b)
    a = val();
else if(b < c)
    b = val();
else
    c = val();

что эквивалентно:
Код

(a < b ? a : b < c ? b: c) = val();



--------------------
<удалено администрацией форума>
PM MAIL   Вверх
Sartorius
Дата 5.2.2007, 23:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



Цитата

(a < b ? a : b < c ? b: c) = val();

 Читать такое невозможно, а код порождается ИМХО такой же как в if-ах
PM MAIL ICQ   Вверх
Fixin
Дата 5.2.2007, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ёжик
***


Профиль
Группа: Комодератор
Сообщений: 1357
Регистрация: 6.1.2004

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



Получение максимально короткого, правильного и быстрого кода - все это оптимизация, которая, в конечном счете в любом случае необходима, т. к. конечного пользователя всегда интересует производительность.
PM MAIL ICQ   Вверх
zkv
Дата 5.2.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(Sartorius @  5.2.2007,  23:05 Найти цитируемый пост)
а код порождается ИМХО такой же как в if-ах 

ни с кем не спорю, просто интересный, на мой взгляд, пример:
Код

    srand( (unsigned)time( NULL ) );
    int iNum = rand();

    //это компилится
    const int a = ( iNum % 2 ) ? 1 : 0;

    //это, естественно, нет
    const int b = 0;
    if( iNum % 2 )
    {
        b = 1;
    }
    else
    {
        b = 0;
    }

как считаете, насколько красиво варьировать значение константы при инициализации? Мне кажется, что это может лишь запутать код, интересно зачем тогда оставлена такая возможность? Побочный эффект?
PM MAIL   Вверх
nickless
Дата 6.2.2007, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Гентозавр
****


Профиль
Группа: Участник Клуба
Сообщений: 2976
Регистрация: 29.8.2005
Где: Germany

Репутация: 19
Всего: 181



Цитата(zkv @ 5.2.2007,  22:42)
как считаете, насколько красиво варьировать значение константы при инициализации?

Дурное дело нехитрое...  smile 
Хотя с другой стороны, может я хочу иметь случайное число, которое генерируется во время старта и не должно изменяться после этого?
Константы вообще константны тем, что их нельзя изменить после инициализации, а как их инициализируют, это дело программиста.


--------------------
user posted image

Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies
- Linus Torvalds
PM MAIL   Вверх
bilbobagginz
Дата 6.2.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


Профиль
Группа: Экс. модератор
Сообщений: 8813
Регистрация: 2.3.2004
Где: Israel

Репутация: 3
Всего: 317



я могу сказать в соторону MAKEWORD(2,2), а не в сторону 0х202
что она читабельнее, и независима от платформы, т.е. более переносима.
( если оставим факт, что MAKEWORD - макро из винды )
даже более, я бы сделал вообще так:
Код

#ifdef MAKEWORD
#define MKVERSION(rel,sub) MAKEWORD((rel),(sub))
#else
#define MKVERSION(rel,sub) ((sub)+((rel)<<16)))
#endif


вот.

читабельность в 99% важнее, чем мнимая оптимальность кода на высоком языке - как Си/Си++, так как компилятор занимается оптимизацией кода. Ессно, что алгоритмически должна быть оптимальность, но не в таком направлении как здесь: и читабельный и нечитабельный код соберутся в идентичный бинарник, поэтому нет смысла код запутывать ( а потом через пару лет шаманить с бубном, пытаясь понять его )


вот вам мои 5 коп.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Vyacheslav
Дата 6.2.2007, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

Репутация: 9
Всего: 59



Цитата(bilbobagginz @  6.2.2007,  01:04 Найти цитируемый пост)
я могу сказать в соторону MAKEWORD(2,2), а не в сторону 0х202

Коллеги. Кокой вопрос здесь может идти о красоте кода, когда реальный код просто напросто подменяется его результатом, подсчитанным в "уме"? Если придерживаться этого принципа, то в идеале любая расчетная задача сначала подсчитывается в уме, а потом  вместо алгоритма просто пишем код по выводу готового ответа и заявляем:"Это очень красивый и лаконичный код" 



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Voldemar2004
Дата 6.2.2007, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

Репутация: нет
Всего: 23



Цитата(Fixin @  6.2.2007,  00:17 Найти цитируемый пост)
Получение максимально короткого, правильного и быстрого кода - все это оптимизация, которая, в конечном счете в любом случае необходима, т. к. конечного пользователя всегда интересует производительность.
Современные компиляторы и так все хорошо оптимизируют. И писать надо так, чтобы код максимально легко читался (человеком).



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
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.1320 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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