╔══════════════════════════════╗
║▒▒▒▒▒▒▒▒▒▒▒▒ СТИЛЬ ▒▒▒▒▒▒▒▒▒▒▒║
╚══════════════════════════════╝
(С) 1996 Феськов Кузьма
Здравствуйте! Вновь с вами
рубрика СТИЛЬ.
Частенько в речи программис-
тов можно услышать такое слово,
как "глюк", то есть ошибка, неб-
режность в программе, а знаете
ли вы, многоуважаемые читатели,
что на свете был такой компози-
тор? Кристофор Виллибальд Глюк.
Однажды он гулял по улице и не-
нароком разбил окно в магазинчи-
ке. Спросил у хозяина, сколько
стоит стекло. Оказалось - полто-
ра франка. Глюк дал экю (три
франка), и, когда хозяин начал
отсчитывать сдачу, композитор
остановил его:
- Не трудитесь, любезный, я
лучше разобью еще одно стекло...
* * *
Ну, скажем,
что это было
лирическое от-
ступление в на-
шей рубрике,
впрочем, можно
открыть от-
дельный раздел,
если подобной
информации на-
берется много,
дело за вами!
* * *
Если вы пом-
ните, в прош-
лый раз мы с
Вами говорили
о структурном программировании и
научились распределять свою ра-
боту так, чтобы затрачивать на
нее как можно меньше времени.
Поскольку я рассказал тогда о
структурном программировании
достаточно, то сегодня я не бу-
ду говорить о нем в целом, но я
все же остановлюсь на некоторых
моментах, которые не были затро-
нуты в прошлый раз.
Как и любая другая схема,
схема программы подчиняется не-
которым правилам:
1.Ответвления от головной
программы идут строго в порядке
выполнения подпрограмм (странно
бы выглядела схема программы пе-
чати спрайта, если бы мы снача-
ла нарисовали блок рисования
спрайта, а затем блок расчета
адреса в экране). Такое подчине-
ние называется равноправным и
изображается в виде:
┌────────────┐ Как видите, на
│главный блок│ этой схеме блок 1
└─┬────────┬─┘ и блок 2 равноп-
┌─┴───┐┌───┴─┐ равны. И изобра-
│1 бл.││2 бл.│ жены в порядке
└─────┘└─────┘ следования в про-
грамме.
2.Следующий вид подчинения,
это соподчинение:
┌────────────┐ Как видно из
│главный блок│ этой схемы, глав-
└──────┬─────┘ ным здесь являет-
┌───┴───┐ ся блок 2, а блок
│1 блок│ 1 служит связую-
└───┬───┘ щим звеном (под-
┌───┴───┐ готавливает дан-
│2 блок│ ные и др.).
└───────┘
3.И третий вид подчинений -
вложенное подчинение:
┌────────────┐ Как вид-
│главный блок│ но из этой
└──────┬─────┘ схемы, блок
┌───┴───┐┌──────┐ 2 является
│1 блок├┤2 блок│ вложенным
└───────┘└──────┘ для блока
1, то есть находится внутри него
(это может быть какой-то цикл
внутри процедуры).
Я рассмотрел здесь основные
виды схем, очевидно, что при по-
мощи этих (базовых) конструкций
можно получать более сложные,
думаю пример приводить не нужно.
Опять же хочу напомнить, не ув-
лекайтесь черезмерным структури-
рованием, лучше выделяйте от-
дельные подпрограммы и пишите их
схему отдельно!
* * *
А темой нашего сегодняшнего
разговора станет дизайн ваших
программ.
Да, да, об этом стоит погово-
рить и очень серьезно, ведь на
сегодняшний день эта проблема
стала камнем преткновения для
многих наших программистов. Вот
потому-то и появляются у нас
программы от целых групп (кто-то
рисует, кто-то музицирует, а
кто-то пишет саму программу).
Сегодня я затрону наиболее
важные вопросы, касающиеся этой
проблемы. И поскольку эта тема
практически неисчерпаема, мы бу-
дем говорить о ней практически в
каждой статье из цикла "Стиль".
Наиболее острой и важной
проблемой, стоящей перед прог-
раммистами на
первом этапе соз-
дания программы,
это проработка
интерфейса прог-
раммы. Вспомните,
сколько раз вам
приходилось часа-
ми просиживать
перед экраном пы-
таясь разоб-
раться в ка-
кой-нибудь программе, даже если
у вас под рукой было ее описа-
ние? На это тратится уйма драго-
ценного времени, а в результате,
либо вы откладываете эту прог-
рамму в дальний угол, либо сов-
сем от нее избавляетесь, а меж-
ду тем, это может быть велико-
лепная по своим возможностям
программа.
Рассмотрим наиболее часто ис-
пользуемые интерфейсы:
1.Стрелочный. Это прекрасный
вид общения с пользователем сис-
темных программ. Здесь все ясно
и понятно. Казалось бы нет ни
каких недостатков у этого интер-
фейса, но, как показывает прак-
тика, увлекаясь красотой, прог-
раммист нередко забывает о са-
мой программе, о ее цели. И вот
стрелка уже мигает, переливает-
ся, там она большая, здесь ма-
ленькая. А что же программа,
скажите пожалуйста, зачем, нап-
ример такие навороты для прог-
раммы форматирования (например)?
По моему, достаточно было бы на-
личие самой стрелки. Надо отме-
тить так же, что некоторые ста-
раются использовать один и тот
же интерфейс во всех своих прог-
раммах, не обращая при этом на
то, ПОДХОДИТ ли этот интерфейс
программе? Да, да, именно
ПОДХОДИТ ли, программа, как и
человек, крайне чувствительна к
тому, в какую "одежду" она оде-
та. Недавно мне попалась прог-
рамма, что-то типа DIZZY, где
герой управлялся той самой
стрелкой, поясню, вам надо
ткнуть стрелкой в ту сторону,
куда хотите пойти, ну и прочее.
Скажу вам, играть было чистое
мучение.
2.Меню с передвигающейся по-
лоской. Этот вид интерфейса (он
используется в оболочке журнала)
самый приемлемый из всех. Он
подходит практически к любой
программе, будь-то система, иг-
ра, или еще что-нибудь. Этот ин-
терфейс всегда аккуратен, а так
же прост в обращении.
3.К третьему виду интерфейса
я отнесу меню, где за каждым
пунктом закреплена какая-то кла-
виша (вы могли встретить его,
когда программа спрашивала вас
"1-Бессмертие 2-Нормальная
игра".).Так же с подобным интер-
фейсом знакомы владельцы
СКОРПИОНОВ. Что можно сказать об
этом интерфейсе, так же как и
стрелку, его надо применять ак-
куратно, не рекомендую использо-
вать его, если таких пунктов у
вас больше 5-7, так как это тре-
бует от пользователя усиленного
внимания, а так же затрудняет
работу программы. Из этой ситуа-
ции есть выход - сделайте двой-
ное управление, как от ключевых
букв, так, например, и при помо-
щи меню с передвигающейся полос-
кой. Это позволит пользователю
вызывать наиболее часто ис-
пользующиеся опции при помощи
клавиш, а остальные курсором.
Существуют конечно и много
других интерфейсов, но они, как
правило, носят в себе элементы
вышеперечисленных. Предлагаю
провести конкурс "Самая друже-
любная программа". Напишите нам,
работа с какими программами дос-
тавила вам удовольствие и не
вызвало затруднений.
Следующий, не менее важный
аспект в
написании
программы -
это способ
общения с
пользовате-
лем.
Как мно-
го на се-
годняшний
день прог-
рамм рос-
сийских ав-
торов, ко-
торые
изъесняют-
ся с нами
на англий-
ском языке.
Это крайне печально, я бы даже
назвал это паталогией. Дорогие
мои, ну скажите, кому нужен этот
ваш английский язык, я, напри-
мер, крайне сомневаюсь, что на
западе охотятся за вашими прог-
раммами, а вот отечественный
пользователь страдает. Вот си-
дишь дома, переводишь какую-ни-
будь игру, а тут тебе диск от
фирмы Инфорком приходит, даже
руки опускаются, когда передом-
ной прекрасные русские програм-
мы на английском языке. Я вам
так скажу - ЖИВЕШЬ В РОССИИ,
ГОВОРИ ПО РУССКИ!!!
И, наконец, последнее, о чем я
хочу сегодня с вами поговорить,
это шрифтовое оформление прог-
рамм.
Взгляните на программы зару-
бежных программистов, никогда вы
не увидите там в программе про
похождения в замке с привидения-
ми эдакого "веселого" шрифта, а
в программе о
приключениях
мультиплика-
ционного пер-
сонажа шрифта
"грозного",
что нередко
встречается в
программах
отечественных
программистов.
В программе,
особенно игро-
вой, все дол-
жно соответ-
ствовать сюжету, в том числе и
шрифт, благо, сегодня это позво-
ляют сделать такие программы,
как Turbo font editor Старкова
Павла, Professional font editor
разработанная мною, а так же
программы, содержащие в себе уже
готовые шрифты. Они открывают
перед вами огромные просторы для
творчества, и бытующее мнение,
что в формате 8 на 8 нельзя соз-
дать ничего хорошего, это вовсе
неправда, вы просто не пробова-
ли!
Говоря о шрифтах, следует
сказать об их эргономичности, то
есть о том, насколько легко их
читать. Не стоит увлекаться раз-
ного рода завитками и прочими
наворотами, так как этот шрифт
затем будет крайне плохо чи-
таться, такой шрифт можно ис-
пользовать при написании назва-
ния программы, при вставке ка-
ких-либо незначительных сообще-
ний, но их стоит избегать при
печати большого объема текста.
Сравните для примера, сколько вы
потратите времени на чтение пер-
вого текста и второго.
Давайте на сегодня остановим-
ся, но тема эта все еще открыта,
я жду ваших писем по адресу
662613, г.Абакан, ул.Ленинского
Комсомола, дом 3, квартира 16,
телефон (39022) 6-42-63