| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Оцените код Си |
| Автор: gggl 18.11.2011, 16:50 | ||
| Посмотрите, пожалуйста, хорошо ли оформлен код, может есть какие неточности? Задание было: Реализовать структуру данных хеш-массив на основе CRC32, метод решения коллизий: связный список
|
| Автор: bsa 18.11.2011, 17:38 |
| Не вижу ни одной причины, по которой необходимы вложенные функции. Тем более, что в общем случае их вызов значительно сложнее, чем вызов обычных. Поэтому, вынеси их наружу. Не пиши на одной строчке больше одного действия (касается в первую очередь конструкций if(...) continue;). Давай переменным осмысленные названия. l - плохое название для переменной. Короткие имена имеет смысл давать только переменным-счетчикам циклов и пр. Причем в том случае, если нет других переменных с короткими именами. Иначе будешь путаться. |
| Автор: baldina 18.11.2011, 17:52 |
| неплохо оформлена функция CRC32(). не хуже, чем в википедии ;-) |
| Автор: gggl 18.11.2011, 19:39 | ||||
| bsa Поправил код в первом посте; переименовал list в hash_list а l в list лучше, что то, несмог придумать; насчет continue мне кажется выглядит как то не очень красиво
вынес функции наружу, но поивились странные ворнинги, хотя вроде все работает
baldina А зачем изобретать велосипед |
| Автор: gggl 19.11.2011, 16:53 |
| fish9370 Вы предлагаете мне написать свою inline функцию для выделения памяти? а (1) исправил, на счет стиля оформления, так велел препод.. ну и всетаки мне не нравятся поивившиеся ворнинги, откуда они могли взяться? |
| Автор: gggl 19.11.2011, 17:25 | ||||
И еще как правильно
или фигурные скобки обязательны?
|
| Автор: alexvs11 19.11.2011, 18:15 |
| читабельней второй вариант |
| Автор: fish9370 19.11.2011, 18:20 | ||||
нет, я просто рассказал как обычно делают, в этом случае это на твое усмотрение мне больше нравится так:
обычно в проекте есть специальный документ, с названием что-то типа CODING STYLE, в котором и описываются правила оформления кода |
| Автор: math64 19.11.2011, 22:27 |
| ворнинги из-за того, что: 1. Нет #include <string.h> 2. Eсли функция вызывается до её определения, нужно сделать предварительное объявление. Чтобы не думать - делается объавление всех функций, можно с вынесением в заголовок. 3. Результат malloc/calloc лучше привести к нужному типу - если придётся компилировать C++, будет Ok. 4. Если в if части есть фигурные скобки, в else ставь тоже и наоборот. Если есть if внутри if - ставь фигурные скобки, иначе если понадобится else, он присоединится к внутреннему if. |
| Автор: fish9370 20.11.2011, 17:15 | ||
я все же настаиваю, что в Си так не принято. Если понадобится потом скомпилить с Си++ на это есть extern "C". |