Показать сообщение отдельно
Непрочитано 18.04.2012, 17:47   #23
Пользователь

По умолчанию Re: Java - ваш итог(недостатки, прочее)

Цитата:
Сообщение от Array Посмотреть сообщение
Скобки же, или нет?
x1 = (( new Double4k( 0.0 ) ).sub( Double4k::sqrt ( d ) )).div( a ).div( new Double4k( 2.0 ) );
Code: Java
Может быть, без IDE не понятно, если честно. Но ошибка не в этом. Да и для вызова функций вроде как последовательность однозначна, слева направо.

Цитата:
Сообщение от Azagthtot Посмотреть сообщение
"Неймспейсы" в java отделяются . а не ::
А вообще, перегруз операторов - палка о двух концах. Я с вами согласен.
Да, это тоже косяк, но я не про эту ошибку, я про ошибку в логике кода говорил (пример-то на читабельность кода).

О, пока отвечал, еще одну ошибку нашел

Ошибки (это к вопросу чтения кода):
1. x1 и x2 вычисляются одинаково, хотя это должно быть не так
x1 = new Double4k( 0. ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


2. Потерял b в формуле для корней:
x1 = new Double4k( 0. ).sub( b ).sub( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );
x2 = new Double4k( 0. ).sub( b ).add( Double4k.sqrt ( d ) ).div( a ).div( new Double4k( 2. ) );


Кстати, перегрузка операторов легко решается на уровне препроцессора (по крайней мере для себя я это делал так: если после переменной-объекта есть +-*/, то поискать у нее метод __operatorAdd(...) и заменить + на его вызов).
И препроцессор простенький для дублирования/генерации кода для себя тоже делал сам (кое-что удобно генерировать, а не писать руками), build.xml для ant-а + php-скрипт для предобработки классов перед компиляцией. Один в таком решении косяк - код перестает валидироваться в IDE.
Blakkky вне форума Ответить с цитированием