В этой заметке хочу написать об околозагрузочных вещах, которые мы делали в рамках нашего проекта на основе камня от Analog Devices BF-537 (семейство Blackfin). Постараюсь писать не сильно заумно, чтобы картина была более менее понятна не только специалистам, но и особо пытливым гражданским
(
Read more... )
Reply
это осознанно.
> который похоже посылает все в деструкторе
такой подход бывает удобен, не нужно дергать лишний метод
> не увидел обработки ошибок выделения памяти
о чем речь? о bad_alloc?
> Простыня из ифов вместо свитча
это осознанно.
> Довольно неуклюжая конструкция Utils::RawCRC32::InitialValue
http://dl.dropbox.com/u/490401/src/RawCRC32.h
> В остальных функциях тоже самое. Кстати SendCompressed - тоже не const, а должен
const часто теряется по причине банальной невнимательности.
> Тестовое задание ты точно получил-бы)
не сказал бы, что мне это сильно польстило.
по факту, почти весь код не мой, а моей бывшей подчиненной :)
Reply
CRC не убедил. Претензия в большей части относилась к слову RawCRC32. Че еще за raw, а что не raw тогда? И если константа называется raw, то почему функция не называется UpdateRawCRC32?
Насчет исключений - странно видеть, что в цикле обработки вызывается функция, что-то аллоцирующая, но нет никакой защиты от ошибок выделения памяти. Наверное я хотел услышать что-нибудь типа "у нас тут ембеддед, так что маллок или возвращает память, или все вообще падает". Тут возникает вопрос, как это сказывается на железке - перезагрузка, или еще что?
Насчет const такое дело - ты (или твоя подчиненная) или пишешь сразу с const, и тогда это существенно влияет на дизайн, или ты сначала пишешь, а потом расставляешь const туда, где забыл. Результат, конечно, получается разный.
Кстати, может выложишь немного своего кода? Ожидаю увидеть там буст, про который я часто слышал)
Reply
знаешь, это часто приходится слышать от людей, которые запрещают тебе ковыряться в носу (с)
switch короче if'ов, но делать что-то полезное в деструкторе почему-то плохо :)
> а что не raw тогда?
так сложилось исторически, не raw это код, который основан на boost, кэп подсказывает, что класс назывался просто Utils::CRC32.
с какого-то момента появился raw как переносимая версия.
> у нас тут ембеддед
у нас тут embedded, который мало чем отличается от десктопа и имеет мало общего с онанизмом программирования каких-то 8-ми разрядных PIC'ов.
> Насчет const такое дело
я знаю как правильно.
но почему-то от раза к разу путаю "тся" и "ться".
мне убить себя оп стену? :)
> Ожидаю увидеть там буст, про который я часто слышал)
ты никогда не видел живых смартпоинтеров? :)
или ты думаешь, что я, как всякий порядочный священник, проповедаю то, чем сам не занимаюсь каждый день?
Reply
Я не имел в виду восьмибитные пики, скорее OOM Killer. В андроиде, например он есть, поэтому они могут себе позволить stl без исключений - так как или все с памятью зашибись, или кто-то умирает.
Reply
есть мнение, что банально потому, что его нет под используемую платформу и компилятор (Analog Device/VDK)
> скорее OOM Killer
а причем тут это?
мы говорим о среде, где вообще работает одно единственное приложение и такого понятия как процесс вообще нету.
памяти всегда хватает.
если нет, либо попадем в отладку, либо перезапустимся в kernel panic. что тут, блин, обрабатывать?
Reply
Reply
http://cd-riper.livejournal.com/171595.html
Reply
Кстати, из той же серии - ошибки в примитивах синхронизации. Никак нормально обработать ошибку из mutex.lock() невозможно.
Reply
ну, есть еще Erlang :)
там, на самом деле, немного о другом. и совсем не обязательно о многопоточном приложении.
Reply
Reply
Leave a comment