6.2.2. Программирование, обеспечивающее прозрачность и воспринимаемость
6.2.2. Программирование, обеспечивающее прозрачность и воспринимаемость
Прозрачность и воспринимаемость, подобно модульности, в основном являются свойствами конструкции, а не кода. Не достаточно получить правильные низкоуровневые элементы стиля, такие создание отступов в коде ясным и последовательным способом или использование хороших соглашений по именованию переменных. Данные качества гораздо сильнее связаны со свойствами кода, которые менее очевидны при просмотре. Ниже приводятся некоторые из них.
• Какова максимальная глубина иерархии вызова процедур? Т.е., не считая рекурсии, сколько уровней вызова человеку придется мысленно смоделировать, для того чтобы понять работу кода? Совет: будьте предельно внимательны, та как наличие более четырех уровней явно свидетельствует о возникшей проблеме.
• Имеются ли в коде инвариантные свойства[62], строгие и видимые одновременно? Инвариантные свойства помогают человеку анализировать код и обнаруживать проблемные случаи.
• Являются ли вызовы функций в API-интерфейсах индивидуально ортогональными, или имеют ли они чрезмерное количество "магических" флагов и битов режима, которые заставляют один вызов выполнять несколько задач? Полный отказ от флагов режима может привести к созданию загроможденного API-интерфейса с чрезмерным количеством почти идентичных функций. Но еще шире распространена противоположная ошибка (множество флагов режима, которые легко забыть или перепутать).
• Существует ли несколько выступающих структур данных или одна глобальная таблица, собирающая высокоуровневые данные о состоянии системы? Просто ли визуализировать и проверить данное состояние, или оно рассеяно среди множества индивидуальных глобальных переменных или объектов, которые трудно найти?
• Существует ли в программе четкое, точное соответствие между структурами данных или классами и объектами реального мира, которые представлены ими?
• Просто ли отыскать часть кода, ответственную за любую заданную функцию? Как много внимания было уделено читабельности не только отдельных функций и модулей, но и кода в целом?
• Создает ли код частные случаи или избегает их? Каждый частный случай мог бы взаимодействовать со всеми остальными частными случаями, и все эти потенциальные коллизии являются ошибками, ожидающими своего часа. Но еще более важно то, что частные случаи усложняют понимание кода.
• Каково количество "магических" чисел (необъяснимых констант) в коде? Просто ли обнаружить ограничения реализации (такие как критические размеры буферов) путем просмотра?
Лучше всего, если код будет простым. Однако если проверка кода дает хорошие ответы на приведенные выше вопросы, то код может быть весьма сложным и вместе с тем не создавать невыполнимой когнитивной нагрузки на кураторов.
Читатели могут найти полезным сравнение данных вопросов с контрольным списком вопросов, касающихся модульности в главе 4.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКДанный текст является ознакомительным фрагментом.
Читайте также
Полное сопротивление нагрузки, обеспечивающее максимальную передаваемую мощность
Полное сопротивление нагрузки, обеспечивающее максимальную передаваемую мощность На рис. 2.9 главы 2 показан последовательный контур, предназначенный для определения полного сопротивления нагрузки, при котором в ней обеспечивается максимальная мощность. Используем
Прозрачность и цветовой охват
Прозрачность и цветовой охват В данной категории настроек выбирают размер сетки (шахматной доски), которой обозначается альфа-канал (прозрачные участки изображения), а также цвета ячеек этой сетки.Вы также можете выбрать цвет, которым будут отмечаться участки, цвет
Сетчатая прозрачность
Сетчатая прозрачность По многочисленным просьбам пользователей в девятой версии в системе КОМПАС-3D был доработан механизм расчета и отображения полупрозрачных объектов. Теперь в программе можно выбирать один из двух видов отображения прозрачности: сетчатая или
6 Прозрачность: да будет свет
6 Прозрачность: да будет свет Красота в вычислениях более важна, чем в любой другой области технологии, поскольку программное обеспечение очень сложное. Красота — основная защита против сложности. Machine Beauty: Elegance and the Heart of Technology (1998) —Дэвид Гелентер (David Gelernter) В предыдущей
6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость
6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость Для того чтобы проектировать программы с учетом прозрачности и воспринимаемости, необходимо применять все тактические приемы для сохранения простоты кода, а также уделять особое внимание способам,
6.3. Проектирование, обеспечивающее удобство сопровождения
6.3. Проектирование, обеспечивающее удобство сопровождения Программное обеспечение удобно в сопровождении в той мере, в которой люди, не являющиеся его создателями, могут его понять и модифицировать. Для обеспечения удобства сопровождения требуется не просто хорошо
17.5. Программирование, обеспечивающее переносимость
17.5. Программирование, обеспечивающее переносимость Переносимость программ обычно рассматривается в квази-пространственных понятиях: возможно ли перенести данный код на существующее аппаратно-программное обеспечение, отличное от того, для которого код создавался?
6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость
6.2. Проектирование, обеспечивающее прозрачность и воспринимаемость Для того чтобы проектировать программы с учетом прозрачности и воспринимаемости, необходимо применять все тактические приемы для сохранения простоты кода, а также уделять особое внимание способам,
6.2.2. Программирование, обеспечивающее прозрачность и воспринимаемость
6.2.2. Программирование, обеспечивающее прозрачность и воспринимаемость Прозрачность и воспринимаемость, подобно модульности, в основном являются свойствами конструкции, а не кода. Не достаточно получить правильные низкоуровневые элементы стиля, такие создание отступов
6.3. Проектирование, обеспечивающее удобство сопровождения
6.3. Проектирование, обеспечивающее удобство сопровождения Программное обеспечение удобно в сопровождении в той мере, в которой люди, не являющиеся его создателями, могут его понять и модифицировать. Для обеспечения удобства сопровождения требуется не просто хорошо
17.5. Программирование, обеспечивающее переносимость
17.5. Программирование, обеспечивающее переносимость Переносимость программ обычно рассматривается в квази-пространственных понятиях: возможно ли перенести данный код на существующее аппаратно-программное обеспечение, отличное от того, для которого код создавался?
2.2.9.2 Прозрачность расположения данных
2.2.9.2 Прозрачность расположения данных Если в сети имеется несколько серверов баз данных, то, в целях повышения эффективности доступа к данным или из других соображений, администраторы могут перемещать или дублировать базы данных или таблицы с одного сервера на другой.
Прозрачность для конечных пользователей
Прозрачность для конечных пользователей Жизненно важным свойством всеобъемлющей инфраструктуры является ее почти полная прозрачность для пользователей. Такой прозрачностью обладает, например, инфраструктура сетевых коммуникаций, большинству пользователей