Определение глупых очевидных ошибок при компиляции
От: Artifact  
Дата: 30.09.11 09:14
Оценка:
Например в Java хотелось бы определения сравнения одинаковых значений вот здесь
if (a.equals(a)) {
 // do smth
}


Причём для == , если я не ошибаюсь это есть а для equals нет. Я понимаю, что это проблема Java, что там == не сравнивает значения переменных и нужен equals, но хотел узнать есть языки, где можно сделать скажем вот так.

@compile_time_assert(this != a)
boolean equals(Object a) {
}


Спасибо
__________________________________
Не ври себе.
Re: Определение глупых очевидных ошибок при компиляции
От: Lloyd Россия  
Дата: 30.09.11 09:21
Оценка:
Здравствуйте, Artifact, Вы писали:

A>Причём для == , если я не ошибаюсь это есть а для equals нет. Я понимаю, что это проблема Java, что там == не сравнивает значения переменных и нужен equals, но хотел узнать есть языки, где можно сделать скажем вот так.


Для .Net-а можно написать правило для fxcop-а.
Re: Определение глупых очевидных ошибок при компиляции
От: 0x7be СССР  
Дата: 30.09.11 09:29
Оценка:
Здравствуйте, Artifact, Вы писали:

A>
A>@compile_time_assert(this != a)
A>boolean equals(Object a) {
A>}
A>

A>Спасибо
Это называется design by contract.
здесь
Re: Определение глупых очевидных ошибок при компиляции
От: avpavlov  
Дата: 30.09.11 12:46
Оценка: +1
A>Например в Java хотелось бы определения сравнения одинаковых значений вот здесь
A>
A>if (a.equals(a)) {
A> // do smth
A>}
A>


метод equals много где используется, например, в мэпах. И там сравнение с самим собой очень распространённая ситуация. Так что навешеивание аннотации на метод equals плохая идея, практически бесполезная.

Напиши правило для findbugs (ты же его используешь уже, раз такими вещами озаботился) — правило там будет на 30 строк включая отступы и скобки.
Re[2]: Определение глупых очевидных ошибок при компиляции
От: avpavlov  
Дата: 30.09.11 12:50
Оценка:
да и вообще это уже придумано для тебя

для локальных переменных
http://findbugs.sourceforge.net/bugDescriptions.html#SA_LOCAL_SELF_COMPARISON

для полей класса
http://findbugs.sourceforge.net/bugDescriptions.html#SA_FIELD_SELF_COMPARISON
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.