Костерин В В
Шрифт:
4.6. Инверсия приема.
4.7. Произвести декомпозицию модуля на несколько. Данный прием позволяет распределить выполняемые функции между отдельными функциями.
4.8. Объединить несколько модулей в один. Данный прием дает возможность сэкономить время на производство вычислений; дает особый эффект, когда позволяет исключить дублирование одних и тех же процессов в разных модулях.
4.9. Оформить модули, связанные между собой единой логикой, в библиотеку.
4.10. Использовать в проектировании системы стандартные модули системы программирования.
4.11. Использовать библиотечные модули, разработанные другими программистами.
5. ПРЕОБРАЗОВАНИЕ СТРУКТУРЫ МОДУЛЯ
5.1. Заменить линейную структуру команд циклической. (Повышает компактность кода программы.)
5.2. Инверсия приема.
5.3. Заменить ветвящуюся структуру циклической.
5.4. Инверсия приема.
5.5. Заменить ветвящуюся структуру if — then — else вариантом оператора case.
5.6. Заменить ветвящуюся структуру case цепочкой операторов if — then.
5.7. Инверсия приема.
5.8. Заменить цикл repeat — until циклом while.
5.9. Инверсия приема.
5.10. Заменить цикл repeat— until циклом for.
5.11. Инверсия приема.
5.12. Заменить цикл while циклом for.
5.13. Инверсия приема.
5.14. Выделить тело цикла в отдельную подпрограмму. Данный прием повышает читабельность программы, но его следует использовать только тогда, когда это не нарушает внутренней логики цикла.
5.15. Использовать рекурсию.
5.16. Заменить подпрограмму-процедуру подпрограммой-функцией. Данный прием позволяет получить дополнительный параметр, выдаваемый подпрограммой (например, код ошибки).
5.17. Инверсия приема. Позволяет избежать резервирования места под переменную, воспринимающую значение подпрограммы-функции.
5.18. Полностью исключить или минимизировать использование оператора goto. Улучшает структуру программы, ее читабельность и логику.
5.19. Использовать оператор goto для быстрой передачи управления. Позволяет быстро без привлечения дополнительных средств передавать управление другому процессу. Следует применять только в тех случаях, когда переход является наиболее лаконичным, простым и ясным средством.
5.20. Использовать процедуру exit для выхода из подпрограммы. Позволяет обходиться без оператора goto и без усложнения логики подпрограммы.
5.21. Использовать директиву компилятора для безболезненного использования процедур в качестве функций и функций в качестве процедур.
5.22. Использовать процедурный тип данных.
5.23. Использовать указатели на процедуры и функции.
5.24. Увеличить размерность массива.
5.25. Инверсия приема.
5.26. Использовать тип данных множество set вместо массивов.
5.27. Инверсия приема.
5.28. Замена записи фиксированной длины записью с вариантом.
5.29. Инверсия приема.
5.30. Заменить обычные строки (тип String) строками с нулевым окончанием.
5.31. Инверсия приема.
5.32. Использовать оператор with для упрощения работы с записями.
5.33. Использовать преобразование типов данных.
5.34. Использовать типизированные константы.
5.35. Давать переменным, константам и типам данных содержательные обозначения.
5.36. Широко использовать комментарии для пояснения вычислительных алгоритмов.
6. ОРГАНИЗАЦИЯ И ХРАНЕНИЕ ДАННЫХ
6.1. Заменить типизированный файл нетипизированным файлом.
6.2. Инверсия приема.
6.3. Заменить типизированный файл текстовым файлом.
6.4. Инверсия приема.
6.5. Заменить нетипизированный файл текстовым файлом.
6.6. Инверсия приема.
6.7. Заменить носитель данных.
6.8. Проводить сортировку данных с целью облегчения поиска.
6.9. Использовать индексированные массивы данных для организации поиска по вторичным ключам.
6.10. Исключить избыточность данных.
6.11. Декомпозировать данные на несколько файлов.