![]() |
ДЕБАГ: вопросы к профессионалам
Программируя на Яве, мы получаем великолепное средство отловки ошибок. В 7ом флэше появились зачаточные методы, напоминающие Яву:
try { // ... try block ... } catch(error[:ErrorType1]) { // ... catch block ... } [catch(error[:ErrorTypeN]) { // ... catch block ... }] [finally { // ... finally block ... }] Но всё равно нет автоматической отловки таких ошибок, как IndexArrayOutOfBoundsException, NullPointerException, CastException, IOException... Парсер кода не может найти такие ошибки. При создании класса мы на шаг приближаемся к наиболее быстрому нахождению ошибки: парсер уже может указать нам, что метод ссылается на отсутствующее поле класса или метод класса. Появилась неплохая сигнатура методов и полей, возможность строгой типизации, но нельзя поставить брейпоинты в классе. Нет методов для копирования объектов, поэтому возможно ошибки из-за непонимания, что копируется по значению, а что по ссылке. String ведь например в Яве сложный объект. firstArray = new Array(10,20,30); secondArray = firstArray; secondArray[0] = 20; trace(firstArray); // firstString = "flash"; secondString = firstString; secondString += " string"; trace(firstString); Ну ладно там массив, а что если нужно было клонировать более сложный объект? Персистенции и сериализации тут нет... Если инклудить файлы, то там должен быть заведомо правильный код, потому что дебагить его невозможно. Вопрос достаточно пространный к профессионалам. Если Вы считаете, что ситуация с дебагом не так плоха, то какие аргументы Вы можете привести в пользу того, что на флэше можно успешно дебагить. И как можно бороться с проблемой брейкпоинтов в классах и внешних файлах? с проблемой отсутствия сообщений о таких ошибках как NullPointerException или IndexArrayOutOfBoundsException. |
Для IndexArrayOutOfBoundsException можно попробовать попереписывать встроенный класс array, но это дубовое и не факт что разумное решение :) Других не вижу.
Про копирование - класс стринг в яве не имеет к флешу ровно никакого отношения, равно как и ява вообще. Так, похожи друг на друга, как монета и канализационный люк. Копирование объектов можно сделать отдельной процедурой, определять тип члена и поступать соответственно. Кстати, сериализация под flash портирована ( http://www.sephiroth.it/test/unserializer/ ), но работает заметное время и возникают проблемы с языком (с юникодом, чтоб его) при обмене данными, например, с php. |
погу только посоветовать ASUnit навскидку,
хотя сам его не использовал .... во вторых нужно поставить дебаг-плеер и выводить логи в файл, еще профайлер от FLEX заюзать не помешает, но все это плюшечки, реальной работы как в Java тут сложно добиться.... |
Я насчёт явы не знаю, но с C++ никакого сравнения. Могу предположить, что NullPointerException и IndexArrayOutOfBoundsException не доступны т.к. флэш ведь просто не работает с памятью... Вообще было бы удобнее если бы хотя бы выводились предупреждения хотя бы о использовании неопределённых функций и переменных.
|
Цитата:
Так что мы тут еще очень много кушать... |
Ну да, я имел ввиду Visual Studio :)
|
ну это уже совсем много кушать :)
|
| Часовой пояс GMT +4, время: 12:20. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.