Я хотел бы добавить к ответу AndreyT (если кто-то наткнулся на эту страницу, ища дополнительную информацию по этой теме):
Когда я начинаю больше играть с этими объявлениями, я понимаю, что есть основной гандикап, связанный с ними в C (по-видимому, не в C ++). Достаточно распространено иметь ситуацию, когда вы хотели бы предоставить вызывающему абоненту const указатель на буфер, в который вы вложили. К сожалению, это невозможно при объявлении такого указателя на C. Другими словами, стандарт C (6.7.3 - параграф 8) не согласуется с чем-то вроде этого:
int array[9];
const int (* p2)[9] = &array; /* Not legal unless array is const as well */
Это ограничение похоже, не присутствует в C ++, что делает эти типы объявлений более полезными. Но в случае C необходимо вернуться к регулярному объявлению указателя всякий раз, когда вам нужен указатель const на буфер фиксированного размера (если только сам буфер не был объявлен как const). Вы можете найти больше информации в этой почтовой цепочке: текст ссылки
Это серьезное ограничение, на мой взгляд, и это может быть одной из основных причин, почему люди обычно не объявляют указатели например, в C. Другой факт заключается в том, что большинство людей даже не знают, что вы можете объявить такой указатель, как указал AndreyT.
Хорошо вот некоторые лучшие практики от кого-то, кто не делает модульного теста так, как он должен... кашлять.
Вы могли бы хотеть посмотреть TDD на Трех Учетных карточках и Три Учетных карточки для легкого Запоминания Сущности Разработки через тестирование :
Карта № 1. Дядя Bob’s Три Закона
Карта № 2: ПЕРВЫЕ Принципы
Карта № 3: Ядро Красного TDD
Так называемое платформа xUnit широко используется. Это было первоначально разработано для Smalltalk как SUnit, развилось в JUnit для Java, и теперь имеет много других реализаций, таких как NUnit для.Net. Это - почти фактический стандарт - если Вы скажете использование модульных тестов то большинство других разработчиков предположит, что Вы имеете в виду xUnit или подобный.
Большой ресурс для 'лучших практик' Google Testing Blog , например, недавнее сообщение на , Пишущий Тестируемый Код является фантастическим ресурсом. Конкретно еженедельные сообщения серии их 'Testing on the Toilet' являются большими для регистрации вокруг Вашего куба или туалета, таким образом, можно всегда думать о тестировании.
NUnit является хорошим инструментом для любого из языков.NET.
Модульные тесты могут использоваться различными способами:
Не забывайте осуществлять рефакторинг поддержку. ReSharper на.NET обеспечивает автоматический рефакторинг и быстрые исправления для пропавших без вести кода. Это означает, пишете ли Вы вызов во что-то, что не существует, ReSharper спросит, хотите ли Вы создать недостающую часть.
xUnit семья является оплотом поблочного тестирования. Они интегрируются в подобных Netbeans, Eclipse и многим другим IDE. Они предлагают простое, структурированное решение поблочного тестирования.
Одна вещь я всегда пытаюсь сделать при записи, что тест должен минимизировать внешнее использование кода. Этим я имею в виду: Я пытаюсь минимизировать установку и код разрушения для теста как можно больше и постараться не использовать другие блоки модулей/кода как можно больше. Правильно написанный модульный код не должен требовать слишком большого количества внешнего кода в, он - установка и разрушение.