Нашли или выдавили из себя код, который нельзя назвать нормальным,
на который без улыбки не взглянешь?
Не торопитесь его удалять или рефакторить, — запостите его на
говнокод.ру, посмеёмся вместе!
Антипаттерн "magic number", например, это: "(uint64_t)u * 536870912 / 125" и это "t = 125*m_Time/536871; return (uint32_t)(t&0xFFFFFFFF);"
Не делайте так...
если считать не умеешь, и не знаешь чего пытается достичь код - то все будет казатся magic, не только числа.
0.5 минуты размышлений что пытается делать код - и почитав комментарий - и я уже знаю смысл 2/3 магических чисел.
да магические константы говно. кто сказал что в часу 60 минут?? гавно!! надо исправить и заставить учебники писать, например, что "в часу Locale::Time::HOUR_MAX_MINUTE минут". и жизнь на планете сразу станет лучше! [...] и сколько в километре метров?.. правильно! - ISOStandard::NumberSystem::KILOMETER_MAX _METER. а все недоделаные кто ответили "1000" - всех немедленно уволить.
> слабо ман посмотреть
Дык проблема не в том, что сложно глянуть, что там принимает функция. Проблема в константах и переменных. Без типизации приходится их писать как delay_us, interval_ms или timeout_s, иначе легко запутаться и забыть сконвертить.
в данном контексте, константы это мелочь. `sleep( get_timeout() )` - красивые префиксы для констант - коренной проблемы не решают.
а коренная проблема: интерфейсы учить надо, это часть работы программиста.
и для продвинутых: сам педрило криворукое наплодило кривых интерфейсов, несчётное множество типов и тучи абсратных констант - сам мучайся (и учись на ошибках). на язык или иде жаловатся - это дешёвая отмазка.
у меня буквально был пример двух сетевых прикладух перед глазами. в одной задержки и таймауты в каких не попади юнитах (включая, ёпвашу, jiffies), с багами как минимум раз в месяц. в другой какой-то простой паря со светлой голово стандартизировал все в секунды - с плавающей точкой - и в принципе проблем ни разу не было.
см. https://habrahabr.ru/post/324984/
Антипаттерн "magic number", например, это: "(uint64_t)u * 536870912 / 125" и это "t = 125*m_Time/536871; return (uint32_t)(t&0xFFFFFFFF);"
Не делайте так...
0.5 минуты размышлений что пытается делать код - и почитав комментарий - и я уже знаю смысл 2/3 магических чисел.
да магические константы говно. кто сказал что в часу 60 минут?? гавно!! надо исправить и заставить учебники писать, например, что "в часу Locale::Time::HOUR_MAX_MINUTE минут". и жизнь на планете сразу станет лучше! [...] и сколько в километре метров?.. правильно! - ISOStandard::NumberSystem::KILOMETER_MAX _METER. а все недоделаные кто ответили "1000" - всех немедленно уволить.
плюсы превращаются в руби
>> мы в sleep передаем секунды или миллисекунды?
а слабо ман посмотреть?
Дык проблема не в том, что сложно глянуть, что там принимает функция. Проблема в константах и переменных. Без типизации приходится их писать как delay_us, interval_ms или timeout_s, иначе легко запутаться и забыть сконвертить.
secTimeout
dolSalary
cchSize
bytSize
См Спольски let the wrong code look wrong
а коренная проблема: интерфейсы учить надо, это часть работы программиста.
и для продвинутых: сам педрило криворукое наплодило кривых интерфейсов, несчётное множество типов и тучи абсратных констант - сам мучайся (и учись на ошибках). на язык или иде жаловатся - это дешёвая отмазка.
у меня буквально был пример двух сетевых прикладух перед глазами. в одной задержки и таймауты в каких не попади юнитах (включая, ёпвашу, jiffies), с багами как минимум раз в месяц. в другой какой-то простой паря со светлой голово стандартизировал все в секунды - с плавающей точкой - и в принципе проблем ни разу не было.
Подобный пердолинг с числами ещё актуален в наше время?
foo << 8 всегда можно записать как foo * 256, мне кажется это еще borland c 1992го года выпуска умел