|
|
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
Встретил в тесте такой вопрос: Given the following code fragment: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. там также есть объяснение: авторThere are four assert statements used in this program. The statement "assert;" which has no expression is invalid. All other assert statements are valid. The question was not about validity/invalidity of assert statements - it was about "appropriate" usage of assertions.. The statement "assert args.length==0;" is NOT appropriate, because of the rule: "Using assertions to evaluate arguments of a PUBLIC method is NOT appropriate". The statement "assert flag=false;" is NOT appropriate, because? "Using assertions that can cause side effects, is NOT appropriate ". (Note that the expression flag=false does an assignment, not a conditional evaluation. Therefore, it causes a side-effect). The statement "assert i-- <=0;" also NOT appropriate because of the same reason as above. As there is no correct use of asserts used in this program, the correct answer is Answer-A Объясните, что вообще значит appropriate для assert-ов ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 01:17 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Ты зобыл опубликовать сам вопрос... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 07:46 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
MasterZiv, да)) вопрос в том какие assert-ы в коде являются "appropriate" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.03.2014, 11:31 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, неужели никто не в курсе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 15:11 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90 , Ну а вы то как сами думаете? Посмотрите код внимательнее, там два ассерта не скомпилируются вообще, а еще один кривой. Какой - подумайте сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 18:26 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
cdtyjv, ну а правильный ответ - все кривые ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2014, 23:33 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, какие критерий у "appropriate"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 00:44 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, 1) http://docs.oracle.com/javase/7/docs/technotes/guides/language/assert.html 2) Если готовитесь к OCPJP, зубрите ответ который вы сами и написали, все равно через два дня после экзамена все забудете, да и не использует никто эти ассерты как я понимаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 10:37 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
MaxNevermind, Кто ва сказал, что ассерты не используют? Это отличное средство раннего отлова багов в процессе девелопмента. Кто их не использует - сам себе злобный буратино. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 11:34 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
cdtyjv, Можете выложить часть кода где вы их использовали и когда это было? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 11:46 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
MaxNevermind, ссылка по теме: http://stackoverflow.com/questions/2758224/assertion-in-java Я читал, что это вообще очень недооцененный элемент программирования. Я не совсем понимаю чем они лучше throw new RuntimeException() может символов конечно поменьше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 11:59 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
Да, их можно отключить одной кнопкой ещё. и вроде бы в классфайлы даже ничего про них не попадёт. ИМХО это не так уж круто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 12:04 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Разве отключить? Помоему их как раз надо специально включать в параметрах jvm а так они не работают. Мб это 1 из причин почему их не используют? )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 13:38 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
no56892redwhite90, Разве отключить? Помоему их как раз надо специально включать в параметрах jvm а так они не работают. Мб это 1 из причин почему их не используют? )) имел ввиду, что если они включены.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 14:25 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
MaxNevermindМожете выложить часть кода где вы их использовали и когда это было?Пример проекта, активно использующего ассерты: https://github.com/gridgain/gridgain Например: https://github.com/gridgain/gridgain/blob/master/modules/core/java/org/gridgain/grid/kernal/processors/job/GridJobProcessor.java ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 14:48 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
redwhite90Я не совсем понимаю чем они лучше throw new RuntimeException().Они не лучше, и не хуже. Они другие. Ассерт по своей сути - это "активный комментарий". Например, у вас есть код: Код: java 1. 2. 3. 4. methodA() должен быть вызван, только когда a == null, а methodB() только когда a != null. Тогда вы берете, и запихиваете в эти методы по ассерту: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Все, теперь если ваш коллега вдруг вызовет один из этих методов, нарушив инвариант, он словит AssertionError. Обратите внимание, я пишу "ваш коллега", а не "ваш пользователь". Ассершны - это инструмент разработчика, который помогает в раннем отлове багов в коде. Их нельзя использовать, например, для валидации параметров, которые передают пользователм, так как ассершны должны быть отключены в продакшне. Ассершн - это очень легкий, простой и эффективный механизм отлова багов в коде, который надо использовать в дополнение к обычным тестам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 14:58 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
no56892Разве отключить? Помоему их как раз надо специально включать в параметрах jvm а так они не работают. Мб это 1 из причин почему их не используют? ))По дефолту они отключены. Включать их надо только на этапе разработки для отладки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 14:59 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
cdtyjvredwhite90Я не совсем понимаю чем они лучше throw new RuntimeException().Они не лучше, и не хуже. Они другие. Ассерт по своей сути - это "активный комментарий". Например, у вас есть код: Код: java 1. 2. 3. 4. methodA() должен быть вызван, только когда a == null, а methodB() только когда a != null. Тогда вы берете, и запихиваете в эти методы по ассерту: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Все, теперь если ваш коллега вдруг вызовет один из этих методов, нарушив инвариант, он словит AssertionError. Обратите внимание, я пишу "ваш коллега", а не "ваш пользователь". Ассершны - это инструмент разработчика, который помогает в раннем отлове багов в коде. Их нельзя использовать, например, для валидации параметров, которые передают пользователм, так как ассершны должны быть отключены в продакшне. Ассершн - это очень легкий, простой и эффективный механизм отлова багов в коде, который надо использовать в дополнение к обычным тестам. ну допустим чем так хуже? void methodA() { if (a!=null ) throw new RuntimeException("a must be null"); assert a == null : "a must be null"; ... } void methodB() { f (a==null ) throw new RuntimeException("a cannot be null"); ... } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 17:31 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 17:32 |
|
||
|
Что есть appropriate для assert-ов ?
|
|||
|---|---|---|---|
|
#18+
блин. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2014, 17:33 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38581735&tid=2127531]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
180ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 522ms |

| 0 / 0 |
