Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   ДЕБАГ: вопросы к профессионалам (http://www.flasher.ru/forum/showthread.php?t=59494)

Geniot 17.06.2004 18:51

ДЕБАГ: вопросы к профессионалам
 
Программируя на Яве, мы получаем великолепное средство отловки ошибок. В 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.

Смольный (Smolniy) 17.06.2004 23:03

Для IndexArrayOutOfBoundsException можно попробовать попереписывать встроенный класс array, но это дубовое и не факт что разумное решение :) Других не вижу.

Про копирование - класс стринг в яве не имеет к флешу ровно никакого отношения, равно как и ява вообще. Так, похожи друг на друга, как монета и канализационный люк. Копирование объектов можно сделать отдельной процедурой, определять тип члена и поступать соответственно.

Кстати, сериализация под flash портирована ( http://www.sephiroth.it/test/unserializer/ ), но работает заметное время и возникают проблемы с языком (с юникодом, чтоб его) при обмене данными, например, с php.

john 18.06.2004 00:17

погу только посоветовать ASUnit навскидку,
хотя сам его не использовал ....

во вторых нужно поставить дебаг-плеер
и выводить логи в файл,

еще профайлер от FLEX заюзать не помешает,

но все это плюшечки, реальной работы как в Java тут сложно добиться....

Nucer 18.06.2004 23:58

Я насчёт явы не знаю, но с C++ никакого сравнения. Могу предположить, что NullPointerException и IndexArrayOutOfBoundsException не доступны т.к. флэш ведь просто не работает с памятью... Вообще было бы удобнее если бы хотя бы выводились предупреждения хотя бы о использовании неопределённых функций и переменных.

Смольный (Smolniy) 19.06.2004 00:34

Цитата:

Оригинал написал(а) Nucer
Я насчёт явы не знаю, но с C++ никакого сравнения.
Скорее, с билдерами никакого сравнения. Обычный компилятор си нихрена не выдает, и анси это не предусмотрено, если я не ошибаюсь. Помнится, обнулял я массив, а когда счетчик элементов перехлестнулся в минусы (знаковый тип), прогулялся я по памяти чуть не до резидентов... :) И ничего, молчок. Просто тачка виснет и видеопамять гадится. На юнихе та же картина - дамп памяти и привет...
Так что мы тут еще очень много кушать...

Nucer 19.06.2004 16:33

Ну да, я имел ввиду Visual Studio :)

Смольный (Smolniy) 19.06.2004 21:47

ну это уже совсем много кушать :)


Часовой пояс GMT +4, время: 12:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.