8.3.1. Некоторые правила хорошего стиля
8.3.1. Некоторые правила хорошего стиля
• Предложения программы должны быть короткими. Их тела, как правило, должны содержать только несколько целей.
• Процедуры должны быть короткими, поскольку длинные процедуры трудны для понимания. Тем не менее длинные процедуры вполне допустимы в том случае, когда они имеют регулярную структуру (этот вопрос еще будет обсуждаться в данной главе).
• Следует применять мнемонические имена процедур и переменных. Они должны отражать смысл отношений и роль объектов данных.
• Существенное значение имеет расположение текста программы. Для улучшения читабельности программы нужно постоянно применять пробелы, пустые строки и отступы. Предложения, относящиеся к одной процедуре, следует размещать вместе в виде отдельной группы строк; между предложениями нужно вставлять пустую строку (этого не нужно делать, возможно, только в случае перечисления большого количества фактов, касающихся одного отношения); каждую цель можно размещать на отдельной строке. Пролог-программы иной раз напоминают стихи по эстетической привлекательности своих идей и формы.
• Стилистические соглашения такого рода могут варьироваться от программы к программе, так как они зависят от задачи и от личного вкуса. Важно, однако, чтобы на протяжении одной программы постоянно применялись одни и те же соглашения.
• Оператор отсечения следует применять с осторожностью. Если легко можно обойтись без него — не пользуйтесь им. Всегда, когда это возможно, предпочтение следует отдавать "зеленым отсечениям" перед "красными". Как говорилось в гл. 5, отсечение называется "зеленым", если его можно убрать, на затрагивая декларативный смысл предложения. Использование "красных отсечений" должно ограничиваться четко определенными конструкциями, такими как оператор not или конструкция выбора между альтернативами. Примером последней может служить
если Условие то Цель1 иначе Цель2
С использованием отсечения эта конструкция переводится на Пролог так:
Условие, !. % Условие выполнено?
Цель1; % Если да, то Цель1
Цель2 % Иначе - Цель2
• Из-за того, что оператор not связан с отсечением, он тоже может привести к неожиданностям. Поэтому, применяя его, следует всегда помнить точное прологовское определение этого оператора. Тем не менее, если приходится выбирать между not и отсечением, то лучше использовать not, чем какую-нибудь туманную конструкцию с отсечением.
• Внесение изменений в программу при помощи assert и retract может сделать поведение программы значительно менее понятным. В частности, одна и та же программа на одни и те же вопросы будет отвечать по-разному в разные моменты времени. В таких случаях, если мы захотим повторно воспроизвести исходное поведение программы, нам придется предварительно убедиться в том, что ее исходное состояние, нарушенное при обращении к assert и retract, полностью восстановлено.
• Применение точек с запятой может затемнять смысл предложений. Читабельность можно иногда улучшить, разбивая предложения, содержащие точки с запятой, на несколько новых предложений, однако за это, возможно, придется заплатить увеличенном длины программы и потерей в ее эффективности.
Для иллюстрации некоторых положений данного раздела рассмотрим отношение
слить( Спис1, Спис2, Спис3)
где Спис1 и Спис2 — упорядоченные списки, а Спис3 — результат их слияния (тоже упорядоченный). Например:
слить( [2, 4, 7], [1, 3, 4, 8], [1, 2, 3, 4, 4, 7, 8] )
Вот стилистически неудачная реализация этого отношения:
слить( Спис1, Спис2, Спис3) :-
Спис1 = [], !, Спис3 = Спис2;
% Первый список пуст
Спис2 = [], !, Спис3 = Спис1;
% Второй список пуст
Спис1 = [X | Остальные],
Спис2 = [Y | Остальные],
( X < Y, !,
Z = X, % Z - голова Спис3
слить( Остальные1, Спис2, Остальные3 );
Z = Y,
слить( Спис1, Остальные2, Остальные3 ) ),
Спис3 = [Z | Остальные3].
Вот более предпочтительный вариант, не использующий точек с запятой:
слить( [], Спис, Спис).
слить( Спис, [], Спис).
слить( [X | Остальные1], [Y | Остальные2], [X | Остальные3] ) :-
X < Y, !,
слить(Остальные1, [Y | Остальные2], Остальные3).
слить( Спис1, [Y | Остальные2], [Y | Остальные3]): -
слить( Спис1, Остальные2, Остальные3 ).
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
О невозможности хорошего кода
О невозможности хорошего кода Когда в этой истории Джон спрашивает: «Хороший код стал невозможным?», в действительности он спрашивает: «Профессионализм стал невозможным?» В конце концов, в этой печальной истории пострадал не только код. Пострадала его семья, его
(8.7) Под W2k не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д..
(8.7) Под W2k не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д.. Многие программы, требующие непрерывного потока данных идущих на или с CD/DVD привод, нуждаются в
Поисковые серверы. Некоторые правила поиска
Поисковые серверы. Некоторые правила поиска Для организации поиска в Интернете существуют специализированные службы, называемые поисковыми серверами. На практике – это веб-сайты, где можно набрать в соответствующей строке ключевые слова, касающиеся интересующей темы,
7.4. Под XP не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д..
7.4. Под XP не хотят работать некоторые программы, требующие интенсивного обращения к CD приводу, такие как Audiograbber, CDEx, программы для записи CD-RW, некоторые DVD декодеры, и т. д.. Многие программы, требующие непрерывного потока данных идущих на или с CD/DVD привод, нуждаются в
9.1. Выбор хорошего пароля
9.1. Выбор хорошего пароля Многие пользователи используют пароли вроде 1, 1234, qwerty, а потом удивляются, почему их почтовый ящик или страничка в социальной сети взломана. Ответ прост – к ней подобрали пароль. Причем злоумышленнику было это сделать очень просто (точнее
§ 83. Секреты хорошего гипертекста
§ 83. Секреты хорошего гипертекста 18 февраля 2002Учебники по гипертексту обходят стороной вопросы: где именно нужно делать ссылки и сколько их должно быть.Есть несколько способов определения хорошего гипертекста (речь не идет о меню, разделах со ссылками и прочих
7.3. Некоторые правила поведения пользователя в Интернете
7.3. Некоторые правила поведения пользователя в Интернете Популярность веб-форумов, онлайн-дневников (блогов) и различных средств общения вроде электронной почты, групп новостей, различных чатов сегодня велика. Кроме добропорядочных пользователей эти сервисы привлекают
Некоторые правила использования Интернета
Некоторые правила использования Интернета В семье нужно определить, что является приемлемым при пользовании Интернетом, а что – нет. При этом поощряйте детей делиться впечатлениями, выходите в Интернет вместе, контролируйте ресурсы, которые посещает ребенок. Объясните,
Поисковые серверы. Некоторые правила поиска
Поисковые серверы. Некоторые правила поиска Для организации поиска в Интернете существуют специализированные службы, называемые поисковыми серверами. На практике – это веб-сайты, где можно набрать в соответствующей строке ключевые слова, касающиеся интересующей темы,
8.1. Общие принципы хорошего программирования
8.1. Общие принципы хорошего программирования Главный вопрос, касающийся хорошего программирования, — это вопрос о том, что такое хорошая программа. Ответ на этот вопрос не тривиален, поскольку существуют разные критерии качества программ.Следующие критерии
13-я КОМНАТА: Лучшее — враг хорошего
13-я КОМНАТА: Лучшее — враг хорошего Автор: Владимир ГуриевЧеловека очень просто сделать счастливым.Надо сначала что-то у него отнять, а потом вернуть. Мне, например, вчера вернули горячую воду, которой не было три недели, и я уже второй день нахожусь на седьмом небе. Мне до
Правила стиля
Правила стиля Исходные тексты классов в данной книге строго подчиняются основным правилам стиля. Они регламентируют отступы, шрифты, выбор имен классов и их компонент, использование нижнего и верхнего регистров.Далее этим правилам будет уделяться серьезное внимание, а
Смартфон за $20: а что хорошего? Евгений Золотов
Смартфон за $20: а что хорошего? Евгений Золотов Опубликовано 08 мая 2014 Смартфон шагает по планете. Пусть из каждых шести землян, пользующихся мобильной связью, пока лишь двое (по самым смелым оценкам — больше трёх) делают это с помощью смартфонов — с