|
Модераторы: bsa |
|
gggl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
Посмотрите, пожалуйста, хорошо ли оформлен код, может есть какие неточности?
Задание было: Реализовать структуру данных хеш-массив на основе CRC32, метод решения коллизий: связный список
Это сообщение отредактировал(а) gggl - 19.11.2011, 16:58 |
|||
|
||||
bsa |
|
|||
Эксперт Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Не вижу ни одной причины, по которой необходимы вложенные функции. Тем более, что в общем случае их вызов значительно сложнее, чем вызов обычных. Поэтому, вынеси их наружу.
Не пиши на одной строчке больше одного действия (касается в первую очередь конструкций if(...) continue;). Давай переменным осмысленные названия. l - плохое название для переменной. Короткие имена имеет смысл давать только переменным-счетчикам циклов и пр. Причем в том случае, если нет других переменных с короткими именами. Иначе будешь путаться. |
|||
|
||||
baldina |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 15 Всего: 101 |
неплохо оформлена функция CRC32(). не хуже, чем в википедии ;-)
|
|||
|
||||
gggl |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
bsa
Поправил код в первом посте; переименовал list в hash_list а l в list лучше, что то, несмог придумать; насчет continue мне кажется выглядит как то не очень красиво
вынес функции наружу, но поивились странные ворнинги, хотя вроде все работает
baldina А зачем изобретать велосипед Это сообщение отредактировал(а) gggl - 18.11.2011, 22:45 |
||||
|
|||||
fish9370 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
1) в Си при выделении памяти, не принято приводить к какому-либо типу данных 2) поскольку ошибка выделения памяти всегда критическия, выделение памяти обычно заворачивают в обертку, где выполняются все проверки что-то типа того:
еще бы посоветовал, использовать стить Кернигена и Ритчи, чтобы проще потом было чужие исходники читать и послушайся совета bsa, насчет одна команда - одна строка -------------------- undefined |
||||
|
|||||
gggl |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
fish9370
Вы предлагаете мне написать свою inline функцию для выделения памяти? а (1) исправил, на счет стиля оформления, так велел препод.. ну и всетаки мне не нравятся поивившиеся ворнинги, откуда они могли взяться? Это сообщение отредактировал(а) gggl - 19.11.2011, 16:57 |
|||
|
||||
gggl |
|
||||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 22.9.2007 Репутация: нет Всего: нет |
И еще как правильно
или фигурные скобки обязательны?
|
||||
|
|||||
alexvs11 |
|
|||
hell is here Профиль Группа: Участник Сообщений: 518 Регистрация: 21.8.2010 Репутация: 2 Всего: 10 |
читабельней второй вариант
|
|||
|
||||
fish9370 |
|
||||
Опытный Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
нет, я просто рассказал как обычно делают, в этом случае это на твое усмотрение мне больше нравится так:
обычно в проекте есть специальный документ, с названием что-то типа CODING STYLE, в котором и описываются правила оформления кода -------------------- undefined |
||||
|
|||||
math64 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 12 Всего: 72 |
ворнинги из-за того, что:
1. Нет #include <string.h> 2. Eсли функция вызывается до её определения, нужно сделать предварительное объявление. Чтобы не думать - делается объавление всех функций, можно с вынесением в заголовок. 3. Результат malloc/calloc лучше привести к нужному типу - если придётся компилировать C++, будет Ok. 4. Если в if части есть фигурные скобки, в else ставь тоже и наоборот. Если есть if внутри if - ставь фигурные скобки, иначе если понадобится else, он присоединится к внутреннему if. |
|||
|
||||
fish9370 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: 1 Всего: 1 |
я все же настаиваю, что в Си так не принято. Если понадобится потом скомпилить с Си++ на это есть extern "C". -------------------- undefined |
|||
|
||||
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |