реклама на сайте
подробности

 
 
3 страниц V  < 1 2 3 >  
Reply to this topicStart new topic
> Привдите пример хорошо написанного встроенного софта
_Pasha
сообщение Mar 24 2009, 09:59
Сообщение #16


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(kurtis @ Mar 24 2009, 12:34) *
А как отличить хорошую программу от плохой ? Плохая будет кусаться и ругаться матом ?

Плохая программа - с недальновидной концепцией.
Go to the top of the page
 
+Quote Post
kurtis
сообщение Mar 24 2009, 10:03
Сообщение #17


Местный
***

Группа: Свой
Сообщений: 466
Регистрация: 21-06-05
Пользователь №: 6 205



А что Вы понимаете под программной с "недальновидной концепцией" ? Можно несколько примеров ?
Go to the top of the page
 
+Quote Post
Legotron
сообщение Mar 24 2009, 16:46
Сообщение #18


инопланетянин
***

Группа: Свой
Сообщений: 236
Регистрация: 24-12-06
Из: Питер
Пользователь №: 23 832



Цитата(_Pasha @ Mar 24 2009, 12:04) *
Вы написали ерунду, а все это пропустили мимо. Это не стиль, а формат документа.

Ну зачем так сразу "Вы написали ерунду"...??
Я написал что думаю, а именно считаю постановку скобок именно частью стиля..
Почитайте Макконела "Совершенный Код".. там много чего интересного на эту тему написано, правда не претендую на принципиальность сего момента до мозга костей.. smile.gif так, к сведению..

Цитата(_Pasha @ Mar 24 2009, 12:04) *
В том же Code::Blocks можно отформатить как угодно любой исходник.

Не знаю как ваш Code::Blocks, никогда в нем не работал..
А вот вам пример уважаемого редактора SLickEdit, что они понимают под словом "style" (в т.ч.)..
Прикрепленное изображение


P.S. Хороший стиль - понятие весьма растяжимое, но когда он присутствует, это сразу заметно..
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 24 2009, 18:07
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(Rst7 @ Mar 24 2009, 12:33) *
Один из лично мне понравившихся стилей написания (не как скобочки форматировать,

С такими "скобочками" исходники у меня сразу в форматер попадают перед чтением - у меня здоровья не хватить лицезреть такое форматирование sad.gif. Особенно "радует" выпендреж с табуляциями и парой пробелов в одном флаконе... Такие
Код
    
while ( p != endfn ) putc(*p, out), p++;

изыски тоже расстраивают своей никчемностью.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 24 2009, 20:16
Сообщение #20


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
С такими "скобочками" исходники у меня сразу в форматер попадают перед чтением - у меня здоровья не хватить лицезреть такое форматирование .


Я же специально обратил внимание, что не в форматировании дело. Табуляции, скобочки и прочее - это достаточно интимные пристрастия, при необходимости - переформатируется.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 27 2009, 02:07
Сообщение #21


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(Rst7 @ Mar 24 2009, 22:16) *
Я же специально обратил внимание, что не в форматировании дело. Табуляции, скобочки и прочее - это достаточно интимные пристрастия, при необходимости - переформатируется.

а это чудо:
Код
putc(*p, out), p++;

зачем так писать, ведь можно
putc(*p++, out);

while ( p != endfn ) putc(*p, out), p++;
Несколько разношерстных операторов в одной строке - обычно пишут люди которые не знают, что такое пошаговая отладка. Вот сами скажите, как при использовании такого стиля поставить точку останова на putc, а не на while( p != endfn)

ну и ...
Код
GLOBAL(void)
jpeg_start_compress (j_compress_ptr cinfo, boolean write_all_tables)
{

тип с маленькой буквы, и не в начале а в конце пишется, что этот тип - указатель. Плохо читаемо, не видно где типы, а где переменные.
Природа переменных не понятна по их имени - т.е. сам указатель, тобиш cinfo в данном случае, никак не показывает, что он указатель, а не экземпляр....
Докучи в исходниках еще и все коментарии с "/*" - клиника.
короче стиль imho очень далек от идеала.

Я бы предпочел хотя бы так:
Код
void JPEG_StartCompress( PJPEG_COMPRESS pCompressInfo, BOOL write_all_tables)
{

По крайней мере так легко можно сразу отличить функции от типов, типы от переменных, структуры от указателей на структуры.
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Mar 27 2009, 06:42
Сообщение #22


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Цитата(BSVi @ Mar 23 2009, 09:35) *
Хотелось бы посмотрить на исходники действительно качественно написанного софта (в особенности на C и для встроенных применений).

...ядро minix3 с комментами на русском. Нельзя сказать, что шедевр, но хороший пример того, сколько и где нужно комментариев чтобы человек прочитавший дополнительно книгу на 600 страниц за вами что-нибудь понял biggrin.gif . Есть еще UNIX V6 в комментах на англицом. Тоже шедевр без которого эта ОС вряд ли бы получила такое распространение. Кстати, насколько помню, именно с "зажатия" этой книжицы началась история BSD.

А словом "встроенные применения" не кидайтесь - это сейчас манечка кадровых агенств. Берете материнку VIA, лепите к ней эранчеГ, ставите XP и запитываете все от батареек - и вот оно - "встроенное применение". А еще "встроенное" бывает и на asm, и на FORTH и на FPGA(бу-га-га-га-га biggrin.gif )
Цитата(BSVi @ Mar 23 2009, 09:35) *
Может у вас бывало такое - читаешь прогу и понимаешь - да, это очень хорошо написанно. Хочется поучится на чужом хорошем примере.

ммм...нет 07.gif . Даже не представляю себе такого. src это все-таки не литература. Для меня программирование это посредник меду миром идей и реальной жизнью, оно не может быть самодостаточно.

Кстати о стиле - наверное я бы назвал стилем
1) программирования разбиение задачи на функции(для языка C) - архитектурный стиль,
2) применение языковых конструкций(терпеть не могу "олимпиадного" стиля программирования - это тупо) - синтаксический стиль
3) использование имен переменных, функций и нотаций - на порядок может облегчить "вникание в проект" - стиль оформления.

А уж никак не форматирование...
Но раз уж форматирование таки затронуто попугаю людей и я.

Все исходники форматирую утилитой AStyle стиль GNU. Она отлично работает и рекурсивно - отформатит любой по сложности проект. smile.gif Правда я извращенец, сознаюсь rolleyes.gif , определения функций у меня выглядят так

Код
/*============================================================================*/
/*
идея алгоритма помещенного в функцию в очень развернутом виде. Может кому-то
легко потом "наглаз парсить" исходник кем-то когда-то написанного адаптивного
фильтра, например, то мне даже свой бывает тяжело понять. А я не верю, что можно
использовать исходник не понимая идею туда помещенную. Имеется ввиду другим
программистом, а не для того чтобы собрать приложение если нет rpm, разумеется.
*/
fn_foo                                                        /* идея кратко, идет потом в .h */
(
type arg,                                                        /* это аргумент отвечающий за "a" */
type brg,                                                        /* это аргумент отвечающий за "b" */
type crg,                                                        /* это аргумент отвечающий за "c" */
...
)
/*----------------------------------------------------------------------------*/
{
  bla-bla-bla;                                                           /* 1 */
/*----------------------------------------------------------------------------*/
  blo-blo-blo;                                                           /* 2 */
}
/* 1 - ая сноска  */
/* 2 - ая сноска */


И чем ближе к основной функции тем больше нотации, использую чуть доработанную
венгерскую (что бы там не пищали линуксоиды-в-вере). Очень неплохо иногда
понимать передаешь ли ты(она, она, оно, они) указатель на указатель или массив массивов
- прямо из названия переменной.

Да, выглядит дико rolleyes.gif . Но... очень хорошо читается даже через годы, и очень быстро позволяет в
"нажитое непосильным трудом" вникать. Но это только "свое". Чужое я так не коверкаю,
разве только то, что уж очень подробно разбираю - т.е. нужны внутренности, а не просто вызов.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 27 2009, 07:10
Сообщение #23


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
while ( p != endfn ) putc(*p, out), p++;
Несколько разношерстных операторов в одной строке - обычно пишут люди которые не знают, что такое пошаговая отладка. Вот сами скажите, как при использовании такого стиля поставить точку останова на putc, а не на while( p != endfn)


Вот прицепились вы все к этой строчке smile.gif Для любителей пошаговой отладки такого кода два раза нажимаем enter и получаем
Код
while ( p != endfn )
putc(*p, out),
p++;


Короче, мне нравится. А точка зрения - она как дырка в дупе, у каждого своя biggrin.gif


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Mar 27 2009, 07:20
Сообщение #24


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Legotron @ Mar 24 2009, 19:46) *
Не знаю как ваш Code::Blocks, никогда в нем не работал..

А вот как:
Прикрепленное изображение


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
DRUID3
сообщение Mar 27 2009, 07:25
Сообщение #25


山伏
*****

Группа: Свой
Сообщений: 1 827
Регистрация: 3-08-06
Из: Kyyiv
Пользователь №: 19 294



Добавлю, что code::block просто использует утилитку ASyle которая живет и сама по себе и во множестве других сред и приложений.


--------------------
Нас помнят пока мы мешаем другим...
//--------------------------------------------------------
Хороший блатной - мертвый...
//--------------------------------------------------------
Нет старик, это те дроиды которых я ищу...
Go to the top of the page
 
+Quote Post
dch
сообщение Mar 27 2009, 07:31
Сообщение #26


Профессионал
*****

Группа: Участник
Сообщений: 1 179
Регистрация: 15-09-04
Из: 141070 г. Королев МО, улица Горького 39-121
Пользователь №: 661



любой лоадер, например bios-lt
Go to the top of the page
 
+Quote Post
777777
сообщение Mar 31 2009, 09:42
Сообщение #27


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(defunct @ Mar 27 2009, 06:07) *
а это чудо:
Код
putc(*p, out), p++;

зачем так писать, ведь можно
putc(*p++, out);

Я знаю зачем так писать. Вероятно это программа для Кейла, а он кодирует постинкремент очень неэффективно. Но достаточно инкремент вынести в отдельное выражение и код становится в три раза короче. Так что не надо заранее считать всех идиотами.
Go to the top of the page
 
+Quote Post
Rst7
сообщение Mar 31 2009, 11:07
Сообщение #28


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Цитата
Вероятно это программа для Кейла


Чернила для восьмого класса smile.gif

Это кроссплатформенная библиотека.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
AlexandrY
сообщение Mar 31 2009, 11:26
Сообщение #29


Ally
******

Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050



Хм, на EDN нас услышали. Секреты технологии bug-killing! т.е. предлагаю новый критерий "хорошести" кода

http://www.embedded.com/216200567?cid=NL_embedded



Цитата(Rst7 @ Mar 31 2009, 14:07) *
Чернила для восьмого класса smile.gif

Это кроссплатформенная библиотека.
Go to the top of the page
 
+Quote Post
777777
сообщение Apr 1 2009, 10:05
Сообщение #30


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(Rst7 @ Mar 31 2009, 15:07) *
Чернила для восьмого класса smile.gif

Не смешно.
Цитата(Rst7 @ Mar 31 2009, 15:07) *
Это кроссплатформенная библиотека.

Значит разработчики этой библиотеки знали об особенностях Кейла и сделали так, чтобы и он генерил эффективный код - а другие от отделения инкремента хуже код не сделают. И библиотека стала действительно (а не теоретически) кроссплатформенной.
Go to the top of the page
 
+Quote Post

3 страниц V  < 1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 17:38
Рейтинг@Mail.ru


Страница сгенерированна за 0.01534 секунд с 7
ELECTRONIX ©2004-2016