- 1
- 2
- 3
- 4
- 5
- 6
UINT aScrollMode = 0;
m_pScrollH->GetInfo(&aScrollMode, 0, 0);
if (!(aScrollMode & M_INVISIBLE))
{
...
}
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+56.1
UINT aScrollMode = 0;
m_pScrollH->GetInfo(&aScrollMode, 0, 0);
if (!(aScrollMode & M_INVISIBLE))
{
...
}
Рефакторю довольно большой проект (5 Мб исходников). Единственный способ спросить у контрола (любого из имеющихся) привожу выше.
Konstantin.Grebenschikov 22.10.2009 12:55 # 0
Barmaglot 22.10.2009 16:42 # +1
guest 22.10.2009 17:46 # −1
Делаем динамик каст контрола к классу содержащему эту функцию и возвращаем результат проверки.
Это еще очень хороший код, я успешно разгребал более худшие.
Barmaglot 22.10.2009 19:06 # 0
guest 23.10.2009 16:53 # 0
Barmaglot 23.10.2009 18:04 # +1
Отличие битовых полей от структуры - увеличение сложности и, вероятно, оптимальности кода в плане быстродействия в пользу оптимальности в плане используемой памяти. Причем жестко зашитое в код.
Отличие структуры от объекта - наличие контролируемого поведения.
Использование битовых полей вместо объектов - сумма вышеперечисленного.
guest 24.10.2009 00:05 # 0
Если только ты имеешь в виду наличие большого количества полей (десятки-сотни). Тут я согласен.
Barmaglot 24.10.2009 03:56 # +1
Практически любое битовое поле легко преобразуется в структуру. Парадокс в том, что в ООП структуры встречаются крайне редко. Как только однородные данные оказываются сосредоточенными в одном месте (info контрола в данном примере), становится видно, что их удобно наделить поведением. Хотя бы проверкой согласованности внутреннего состояния.
например, сравните с тем, что было наверху:
if ( m_pScrollH->GetInfo().Visible() )
{
...
}
Проще?
Единственный случай, когда мне приходилось применять битовые поля, и это было оправданным, подготовка структуры данных для пересылки другому устройству.
guest 24.10.2009 12:21 # 0
Покрайней мере VS 2008 это сделает хуже меня, даже без прибегания к ассемблеру(применением логических операций) Измерял.
guest 24.10.2009 12:22 # 0
guest 24.10.2009 12:22 # 0
guest 24.10.2009 12:23 # 0
guest 26.10.2009 11:42 # 0
guest 22.10.2009 19:05 # +1
guest 23.10.2009 16:31 # −1
guest 24.10.2009 12:17 # 0
nil 16.01.2010 17:25 # 0
struct bbb
{
void (*f)(void);
};
int main()
{
struct bbb s, *pd;
s.f=f;
pd=&s;
pd->f();
}
Чистый С.
striker 23.10.2009 15:08 # 0