- Цель настоящего раздела
- Сбор и публикация информации о "подводных камнях" в программировании
вообще и на Delphi в частности.
- Определение
- "Камнем" считается любая нестандартная ситуация,
- когда инструмент разработчика (будь то компилятор, IDE, библиотека или
операционная система) ведет себя неадекватно.
- Когда проблема возникает там, где ее не должно быть, если бы все
работало идеально.
- "Когда попытка решения задачи _верными_ методами не приводит к
ожидаемому результату" (с) Алексей Вуколов.
- Когда случается сбой на ровном месте, при том что программист формально
сделал все правильно.
-
Материалы ПК разбиваются по следующим категориям (на основании
признака "кто виноват"):
- КОМПИЛЯТОР
- Ошибки генерации кода, а также internal error и ложные сообщения об
ошибках, возникающие при компиляции.
- IDE (оболочка Delphi и других применяемых инструментов
разработчика)
- Сбои и отказы, возникающие в среде разработки.
- БИБЛИОТЕКА
- Ошибки в коде VCL и других применяемых библиотек и пакетов компонентов.
- СИСТЕМА
- Ошибки, связанные с операционной системой, ее сервисами. Если проблема
зависит от версии ОС или ее подсистем (например - DirectX), то камушек должен
быть брошен сюда.
- ПРОЕКТИРОВАНИЕ
- Ошибки стратегического уровня, допущенные программистом по причине
недостатка знаний и опыта, в результате чего задача не решена либо решена
неэффективно, либо с недопустимыми побочными эффектами. Например - неумелое
использование потоков, или наоборот, неиспользование этой возможности
распараллеливания вычислений там, где задача того требует.
- ПРОГРАММИСТ
- Ошибки программиста тактического уровня. Причины - те же, что и в
категории ПРОЕКТИРОВАНИЕ. Неправильное решение локальных задач. То, что было
разрешено в более ранних версиях языка, в новых может стать "камнем" - как,
например, обращение S[0], где S:string. Неочевидные и недокументированные
особенности средств разработки, воспринимаемые как ошибки.
- ПОЛЬЗОВАТЕЛЬ
- Случаи неадекватной реакции пользователя на программу, и наоборот.
Программист не предусмотрел, как пользователь будет работать с программой.
Неудачно выбранные действия/установки по-умолчанию, неправильно
спроектированный интерфейс, и т.п.
- HARDWARE
- Нештатные ситуации, обусловленные аппаратурой.
- ПРОЧЕЕ
- Проблемы, не попадающие ни в одну из вышеперечисленных категорий.
Список камней по категориям
| Статус и правила проекта Подводные
Камни. | Это не конференция.
Раздел премодерируемый. Содержание пополняется за счет материалов,
присылаемых в адрес Королевства.
Присылаемые сообщения подвергаются жесткому входному контролю и обработке.
Вопросы не принимаются и ответы на них не даются - для этого
есть Круглый Стол. Допускаются только ПРОБЛЕМЫ, отвечающие правилам раздела,
вместе с РЕШЕНИЯМИ. Пусть даже это будет не самое удачное решение, или просто
рекомендация - что не надо делать.
Координатор проекта имеет право корректировать текст описания "камня" и/или
добавлять свои комментарии. Имя автора сообщения указывается при публикации
обязательно.
В первую очередь, автор должен, насколько это возможно, всесторонне проверить
найденный "камень", выяснить условия, необходимые и достаточные для его
возникновения. Контрольное тестирование выполняет координатор проекта, а также
жители Королевства, заинтересовавшиеся данной проблемой и имеющие желание,
компетенцию и технические возможности для проведения экспертизы.
"Камни" желательно проверять в разных версиях Delphi и Windows, при разных
опциях компилятора (во многих случаях актуально наличие оптимизации) -
для выяснения влияющих обстоятельств. Тестирование требует времени, а также
знаний и опыта в соответствующей области программирования. В связи с этим
полноценную проверку возможно осуществить только коллегиальным методом.
Опубликованные "камни" обсуждаются в форуме по той же технологии, что и
статьи и вопросы Круглого Стола. Приглашаются эксперты! Обсуждение работы
раздела ведется в теме Базарной площади "Подводные
камни".
| Требования по форме присылаемых
материалов |
- Письма присылаются на адрес Королевства с
темой STONES. В одном письме может быть описано несколько "камней". Каждое
описание начинается с заголовка и заканчивается разграничительной линией
"----".
- Заголовок должен давать общее представление о проблеме при максимальной
краткости. Он представляет собой ряд идентификаторов, разделенных точкой.
Первый из них обязательный - наименование категории, остальные зависят от
контекста.
Пример: БИБЛИОТЕКА.VCL.TStringList.Неустойчивость сортировки.
- Текст сообщения состоит из двух основных частей.
1) Описание проблемы и условий ее проявления. Конфигурации компьютера,
версии Delphi, Windows, опции компилятора (если результат от них зависит),
при которых она была обнаружена. Контрольный пример - максимально
упрощенный кусок кода, воспроизводящий проблему. Допускается прилагать
проекты в архиве zip и другие документы, имеющие отношение к проблеме.
2) Варианты решения или рекомендации по обходу "подводного камня". Анализ
причин возникновения проблемы.
- Стиль изложения - грамотным техническим языком в безличной форме, как
пишется техдокументация или курсовой/дипломный проект. Здесь не нужен
художественный рассказ от первого лица о том, как вы боролись с "глюком".
Никаких эмоций - здесь не Базарная площадь, и не Круглый стол. Постарайтесь
воздержаться от жаргона.
Внимание! Всем, кто давал в конференциях Королевства
сообщения о проблемах программирования, подходящие для данного проекта,
просьба повторить, оформив материалы в виде "камушков", согласно настоящим правилам.
Список камней по категориям
Координатор проекта "Подводные камни" Александр
Малыгин
Сопутствующие ресурсы:
The Delphi Bug List -
старый проект, собирающий информацию о багах в Delphi, которым руководит
Jordan Russell, известный как автор
хорошего фриварного инсталлятора Inno Setup и библиотек компонентов Toolbar97,
Toolbar2000.
|