Загрузочное

Mar 15, 2011 11:54

В этой заметке хочу написать об околозагрузочных вещах, которые мы делали в рамках нашего проекта на основе камня от Analog Devices BF-537 (семейство Blackfin). Постараюсь писать не сильно заумно, чтобы картина была более менее понятна не только специалистам, но и особо пытливым гражданским ( Read more... )

c++, programming

Leave a comment

мои 5 коппек anonymous March 15 2011, 16:22:44 UTC
Что мне не понравилось в коде ( ... )

Reply

Re: мои 5 коппек cd_riper March 15 2011, 17:00:58 UTC
> int повсюду вместо size_t

это осознанно.

> который похоже посылает все в деструкторе

такой подход бывает удобен, не нужно дергать лишний метод

> не увидел обработки ошибок выделения памяти

о чем речь? о bad_alloc?

> Простыня из ифов вместо свитча

это осознанно.

> Довольно неуклюжая конструкция Utils::RawCRC32::InitialValue

http://dl.dropbox.com/u/490401/src/RawCRC32.h

> В остальных функциях тоже самое. Кстати SendCompressed - тоже не const, а должен

const часто теряется по причине банальной невнимательности.

> Тестовое задание ты точно получил-бы)

не сказал бы, что мне это сильно польстило.

по факту, почти весь код не мой, а моей бывшей подчиненной :)

Reply

Re: мои 5 коппек anonymous March 15 2011, 17:26:48 UTC
Чтож, осознанный код - это хорошо. Собственно, и ногу отстрелить себе можно тоже осознанно.

CRC не убедил. Претензия в большей части относилась к слову RawCRC32. Че еще за raw, а что не raw тогда? И если константа называется raw, то почему функция не называется UpdateRawCRC32?

Насчет исключений - странно видеть, что в цикле обработки вызывается функция, что-то аллоцирующая, но нет никакой защиты от ошибок выделения памяти. Наверное я хотел услышать что-нибудь типа "у нас тут ембеддед, так что маллок или возвращает память, или все вообще падает". Тут возникает вопрос, как это сказывается на железке - перезагрузка, или еще что?

Насчет const такое дело - ты (или твоя подчиненная) или пишешь сразу с const, и тогда это существенно влияет на дизайн, или ты сначала пишешь, а потом расставляешь const туда, где забыл. Результат, конечно, получается разный.

Кстати, может выложишь немного своего кода? Ожидаю увидеть там буст, про который я часто слышал)

Reply

Re: мои 5 коппек cd_riper March 15 2011, 17:57:17 UTC
> Собственно, и ногу отстрелить себе можно тоже осознанно.

знаешь, это часто приходится слышать от людей, которые запрещают тебе ковыряться в носу (с)

switch короче if'ов, но делать что-то полезное в деструкторе почему-то плохо :)

> а что не raw тогда?

так сложилось исторически, не raw это код, который основан на boost, кэп подсказывает, что класс назывался просто Utils::CRC32.
с какого-то момента появился raw как переносимая версия.

> у нас тут ембеддед

у нас тут embedded, который мало чем отличается от десктопа и имеет мало общего с онанизмом программирования каких-то 8-ми разрядных PIC'ов.

> Насчет const такое дело

я знаю как правильно.
но почему-то от раза к разу путаю "тся" и "ться".
мне убить себя оп стену? :)

> Ожидаю увидеть там буст, про который я часто слышал)

ты никогда не видел живых смартпоинтеров? :)
или ты думаешь, что я, как всякий порядочный священник, проповедаю то, чем сам не занимаюсь каждый день?

Reply

Re: мои 5 коппек anonymous March 15 2011, 18:16:22 UTC
Т.е. я так понимаю, что у вас в железке не используется буст (по крайней мере CRC из него)? Почему?

Я не имел в виду восьмибитные пики, скорее OOM Killer. В андроиде, например он есть, поэтому они могут себе позволить stl без исключений - так как или все с памятью зашибись, или кто-то умирает.

Reply

Re: мои 5 коппек cd_riper March 15 2011, 18:27:36 UTC
> Т.е. я так понимаю, что у вас в железке не используется буст

есть мнение, что банально потому, что его нет под используемую платформу и компилятор (Analog Device/VDK)

> скорее OOM Killer

а причем тут это?
мы говорим о среде, где вообще работает одно единственное приложение и такого понятия как процесс вообще нету.

памяти всегда хватает.
если нет, либо попадем в отладку, либо перезапустимся в kernel panic. что тут, блин, обрабатывать?

Reply

Re: мои 5 коппек anonymous March 15 2011, 18:53:50 UTC
А, так у вас там всего один "процесс". Я не в теме, не знал.

Reply

Re: мои 5 коппек cd_riper March 15 2011, 18:30:42 UTC
если тебе интересно, мое видение проблемы отказа в выделении памяти
http://cd-riper.livejournal.com/171595.html

Reply

Re: мои 5 коппек anonymous March 15 2011, 19:02:16 UTC
Согласен. Психологически сложно убить весь процесс, поймав исключение в потоке, но это наверное самое правильное, что можно сделать.

Кстати, из той же серии - ошибки в примитивах синхронизации. Никак нормально обработать ошибку из mutex.lock() невозможно.

Reply

Re: мои 5 коппек cd_riper March 15 2011, 19:12:21 UTC
> Психологически сложно убить весь процесс, поймав исключение в потоке

ну, есть еще Erlang :)

там, на самом деле, немного о другом. и совсем не обязательно о многопоточном приложении.

Reply

Re: мои 5 коппек ssimonov3 March 15 2011, 17:02:05 UTC
Исколючение в ембеддед, да еще в критической штуке?..

Reply


Leave a comment

Up