Re[3]: Вариант 0K
От: 0K Ниоткуда  
Дата: 01.09.10 10:06
Оценка:
Здравствуйте, Neco, Вы писали:

N>- первое что бросается в глаза — очень неявный код presentation layer'а. Т.е. в нём основное, что видно — танцы вокруг исключений, а никак не собственно работа. Причём это в принципе касается не только presentation'а — вы вообще мало где пишете больше чем две строчки эфективного кода подряд. Это очень тяжело читать. На продакшн код мало похоже.


Ну а как-же? Предлагаете ваш вариант с делегатами использовать (это у вас было?)? Это слишком запутано. А если я изменю на Win или Web-приложение? Гораздо удобнее отловить мое UserFriendly Exception и вывести информацию пользователю в удобном виде.

N>- текст исключения (например "Ошибка при получении значения счетчика") вы храните в классе-пользователе. Это в принципе ставит крест на том, чтобы делать без оборачивания больше, чем одно действие. Хотелось бы в связи с этим взглянуть на код, в котором класс Counter будет использоваться хотя бы раза три (в разных местах).


Вот за это спасибо. Я уже когда спать вчера лег -- как раз об этом подумал. Правильное замечание -- у меня получилось дублирование кода.

N>- также хотелось бы посмотреть на более развитую иерархию классов — как работать в таком случае? Предположим между консолью и Counter'ом вписался некий класс, ответсвенность которого просто выдавать уникальное увеличивающееся значение. Как будет выглядеть код этих трёх классов?


Собственно в чем проблема? Можно сделать наследника Counter -- там конструктор даже без параметров есть.

N>- вы обернули все методы кроме Increment. Почему так? Смею предположить, что это из-за того, что в аннотациях у него сказано, что он может что-либо выбрасывать. А как это может жить в развивающемся коде? Ведь невозможно помнить и обновлять все места, где используется некий метод.


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

0K>>Весь смысл кода -- обернуть эту гармошку в одно простое исключение, ясно отражающее причину ошибки и содержащее всю необходимую информацию.

N>гм. а не могли бы вы показать, где вы выполняете "оборачивание в одно просто исключение"? а то я вижу как гармошка разворачивается, а где сворачивается не могу понять.

Сворачивается в 2-х местах и получается CounterException.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.