Иллюстрированный самоучитель по практике программирования

Библиотека для распространения

Наконец мы можем модифицировать тестирующую программу и проверить эту версию библиотеки: поскольку копия строки ввода сохраняется (чего в прототипе не было), появилась возможность распечатывать сначала исходную строку, а потом уже полученные поля:

Иллюстрированный самоучитель по практике программирования › Интерфейсы › Библиотека для распространения

На этом версия на С завершена. Она обрабатывает строки произвольной длины и делает нечто осмысленное даже при некорректном вводе. В результате нам пришлось написать в четыре раза больше кода, чем в прототипе, при этом некоторые фрагменты получились довольно запутанными. Подобное увеличение объема и сложности кода – совершенно типично для перехода от прототипа к полноценному продукту.

Упражнение 4.1
При разделении полей возможно несколько уровней "ленивости" – разделять сразу все поля, но только после получения запроса на конкретное поле, выделять только запрошенное поле и, наконец, разделять все поля до запрошенного. Рассмотрите потенциальные преимущества и недостатки перечисленных способов; реализуйте их и замерьте скорость работы каждого.

Упражнение 4.2
Добавьте новые возможности в библиотеку. Сделайте так, чтобы:

  • а) разделитель мог принадлежать к произвольному классу символов;
  • б) для разных полей существовали разные разделители;
  • в) разделитель был заменен на регулярное выражение (см. главу 9). На что будет похож получившийся интерфейс?

Упражнение 4.3
В нашей реализации библиотеки мы применили статическую инициализацию, используемую в С в качестве основы для одноразового переключения: если на входе указатель есть NULL, то выполняется инициализация. Можно, однако, сделать и по-другому: заставить пользователя вызывать некоторую специальную функцию инициализации – в ней, кстати, могут содержаться некоторые рекомендованные начальные значения для массивов. Попробуйте написать версию, которая объединяла бы все достоинства обоих подходов. Какую роль в вашей версии будет играть reset?

Упражнение 4.4
Спроектируйте и реализуйте библиотеку для записи данных в формате CSV. Простейшая версия может просто брать массив строк и печатать их с кавычками и запятыми. Более интересный вариант – использовать форматные строки как printf. В главе 9 вы найдете некоторые полезные советы.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.