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

Интерфейсы

  • Проектирование интерфейсов

    И до того, как буду строить стену, я должен знать, | Что огораживаю я: внутри или снаружи, – | И что не нарушаю чьих-то прав. | Есть нечто, что не терпит ограждений, | Ломая их. | Роберт Фрост | Починка стены | (Перевод В. Кириллова) | Суть проектирования – сбалансировать конфликтующие цели и ограничения.
  • Значения, разделенные запятой

    Значения, разделенные запятой (Comma-Separated Values – CSV), – так называется естественный и широко распространенный способ представления табличных данных. Каждая строка таблицы соответствует строке текста; поля в строке разделены запятыми.
  • Прототип библиотеки

    Вряд ли нам удастся получить удачный проект библиотеки интерфейса с первой попытки. Как написал однажды Фред Брукс (Fred Brooks), "заранее планируйте выкинуть первую версию – все равно придется". Брукс писал о больших системах, но суть остается той же и для любой нормальной программы.
  • Библиотека для распространения

    Теперь с учетом того, чему мы научились на опыте прототипа, попробуем создать библиотеку общего назначения. Наиболее очевидные требования такие: csvgetline должна быть более устойчива, то есть уметь обрабатывать и длинные строки, и большое количество полей;
  • Реализация на C++

    В этом разделе мы напишем версию библиотеки CSV на C++, в которой постараемся преодолеть некоторые ограничения, имеющиеся в С~версии. Нам придется внести некоторые изменения в спецификацию, главным из которых станет то, что функции будут теперь обрабатывать строки C++ вместо массивов символов С.
  • Принципы интерфейса

    В предыдущих параграфах мы прорабатывали детали некоего интерфейса. Сформулируем теперь в общих чертах, что же такое интерфейс. Интерфейс – это детализированная, описанная граница взаимодействия между кодом, предоставляющим некоторые возможности, и кодом, который эти возможности использует.
  • Управление ресурсами

    Одна из наиболее серьезных проблем, требующих решения при проектировании интерфейса библиотеки (а также класса или пакета), – это управление ресурсами, которыми библиотека распоряжается самостоятельно или совместно с вызывающим ее окружением.
  • Abort, Retry, Fail?

    В предыдущих главах мы использовали для обработки ошибок функции вроде eprintf и estrdup – просто выводили некие сообщения перед тем, как прервать выполнение программы. Например, функция eprintf ведет себя так же, как fprintf (stderr,…), но после вывода сообщения выходит из программы с некоторым статусом ошибки.
  • Пользовательские интерфейсы

    До сих пор мы говорили главным образом об интерфейсах между компонентами программы или несколькими программами. Но есть же и еще один, очень важный, вид интерфейса – между программой и ее пользователями-людьми.
  • Дополнительная литература

    Несмотря на то что ряд технических деталей, описанных в книге "Мистический человекомесяц" Фредерика Брукса (Frederick P. Brooks, Jr. The Mythical Man Month. Addison-Wesley, 1975; Anniversary Edition, 1995) уже устарел, она не перестала быть захватывающе интересной.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.