Васин Д.Ю. - Язык программирования Си. Курс лекций - 2003. Руководство для начинающих. М. Мир, 1988г. 512 с. Трой Д. Программирование на языке Си для персонального компьютера ibm pc Пер с англ. М. Радио и связь, 1991г. 432 с
Скачать 1.1 Mb.
|
3.7.Читайте кодВсе писатели — это читатели. Вы учитесь, когда смотрите, что делают другие писатели. Удивительно, но программисы — писатели на С++ и С — часто не читают код. Тем хуже. Я настоятельно рекомендую, чтобы, как минимум, члены группы программирования читали код друг у друга. Читатель может найти ошибки, которые вы не увидели, и подать мысль, как улучшить код. Идея здесь — не формальная «критика кода», имеющая довольно сомнительный характер: никто не хочет наступать на ногу коллеге, поэтому шансы получить полезную обратную связь в формальной ситуации малы. Для вас лучше присесть с коллегой и просто разобрать код строка за строкой, объясняя что как делается и получая какую-то обратную связь и совет. Для того, чтобы подобное упражнение принесло пользу, автор кода не должен делать никаких предварительных пояснений. Читатель должен быть способен понимать код в процессе чтения. (Всем нам приходилось иметь дело с учебниками, столь трудными для понимания, что нельзя было ни в чем разобраться без объяснения преподавателя. Хотя это и гарантирует, что преподаватель не останется без работы, но никак не отражается на авторе учебника.) Если вам пришлось объяснять что-то вашему читателю, то это значит, что ваше объяснение должно быть в коде в качестве комментария. Добавьте этот комментарий, как только вы его произнесли; не откладывайте этого до окончания просмотра. 3.7.1. В цехе современных программистов нет места примадоннамЭто следствие правила чтения. Программисты, которые думают, что их код совершенен, которые отвергают критику, вместо того, чтобы считать ее полезной, и которые настаивают на том, что они должны работать 'втихомолку, вероятно, пишут тарабарщину, не поддающуюся сопровождению даже если кажется, что она работает. 3.8. Разлагайте сложные проблемы на задачи меньшего размераНа самом деле это также и правило литературного стиля. Если очень трудно объяснить точку зрения за один раз, то разбейте изложение на меньшие части и по очереди объясняйте каждую. То же самое назначение у глав в книге и параграфов в главе. В качестве примера программирования возьмем прошитое бинарное дерево, отличающееся от нормального дерева тем что указатели на узлы-потомки в конечных узлах на листочках указывают на само дерево. Фактическим преимуществом прошитого дерева является то, что его легко просмотреть нерекурсивно при помощи этих дополнительных указателей. Проблема заключается в том, что сложно выйти из алгоритмов просмотра (в особенности при обратном просмотре). С другой стороны, имея указатель на узел, легко написать алгоритм поиска последующего элемента в обратном порядке. Путем изменения формулировки с «выполнить просмотр в обратном порядке» на «начав с самого отдаленного узла, искать последующие элементы в обратном порядке, пока они не закончатся» получаем разрешимую задачу. 3.9. Используйте язык полностью3.9.1. Используйте для работы соответствуюший инструментДанное правило является спутником правила «Не путайте привычность с читаемостью», представленного ниже, но, скорее всего, больше касается проблем руководства. Мне часто говорят, что студентам не разрешается использовать некоторые аспекты С или С++ (обычно это указатели), потому что они «нечитабельны». Обычно это правило навязывается руководителями, знающими ФОРТРАН, БЕЙСИК или какой-то другой язык, не поддерживающий указатели, и их не оченьто заставишь изучать С. Вместо того, чтобы признать изъяны в своих знаниях, такие руководители будут предпочитать калечить своих программистов. Указатели превосходно читаются программистами на С. И, наоборот, я видел ситуации, где руководство требовало, чтобы программисты перешли с языка программирования типа КОБОЛ на С, но не желало оплачивать переподготовку, необходимую для перехода. Или еще хуже, руководство платило за переподготовку, но не предоставляло времени, необходимого для действительного изучения материала. Переподготовка является занятием, требующим всего рабочего дня. Вы не можете одновременно выполнять «полезную» работу, а если попытаетесь, то ваши деньги будут выброшены на ветер. Так или иначе, после того, как руководители видят, что их штат не был превращен в гуру программирования на С++ после 3-дневного краткого курса, они реагируют наложением ограничений на использование некоторых компонентов языка. Фактически они говорят: «Вы не можете использовать ту часть С++, которая не похожа на язык, который мы использовали до перехода на С++». Естественно, что окажется невозможным эксплуатировать ни одну из прогрессивных особенностей языка (которые прежде всего и являются главной причиной его использования), если вы ограничите себя «простейшим» подмножеством особенностей. Глядя на эти ограничения, мне в первую очередь интересно знать, зачем понадобилось менять КОБОЛ на С. Принуждение программистов на языке КОБОЛ использовать С всегда поражало меня своей большой глупостью. КОБОЛ — великолепный язык для работы с базами данных. У него есть встроенные примитивы, упрощающие выполнение задач, которые довольно трудны для С. С, в конце концов, был разработан для создания операционных систем, а не приложений баз данных. Довольно просто дополнить КОБОЛ, чтобы он поддерживал модный графический интерфейс пользователя, если это единственная причина перехода на С. |