Информация об изменениях

Сообщение Re[7]: И вот feedback от них и мои им ответы от 09.03.2019 11:16

Изменено 09.03.2019 11:22 arth

Re[7]: И вот feedback от них и мои им ответы
Здравствуйте, binnom, Вы писали:

...

A>>я, строго говоря, им ничего не должен, как и они мне. вот если бы я на них работал, было бы другое дело.

B>Ты к ним и не попадешь, если будешь и впредь продолжать жить в парадигме совковой настырности. Это не оскорбление, а констатация факта, я сам был таким же, и это стоило мне довольно дорого.

так я и не собираюсь к ним попадать.

A>>>>>>If we transfer negative amount money, author don’t throw exceptions, it takes abs value of this amount and transfer positive amount of money.

A>>>>>>transferring negative amount is something which is odd. So it's a
A>>>>>>convention. It either has to be documented or exception should be
A>>>>>>thrown. So I partially agree.
B>>>>>ИМО это эпичный фэйл, а не partially agree.
A>>>>эпичный фейл это отсутствие abs. а с abs это просто другая культура
B>>>Мде.
A>>ну да. где-то -1 — это "все хорощо", а где-то 0. но я в целом согласен, что тут лучше с exception. я не согласен с тем, что это major
B>Понимаешь в чем проблема, тебе было очевидно, что надо сделать Abs, а мне — нет. Я, как пользователь API, не должен додумывать за его создателя, я должен получить ясный ответ, в чем моя проблема. Не надо делать странные манипуляции с инпутом, надо просто кидать кастомный эксепшен с объяснением проблемы.

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

A>>>>>>Author don't know how to catch exceptions in junit

A>>если по теме, то я не совсем понял суть предложения "Author don't know how to catch exceptions in junit". как ловить эксепшены вне Junit я, кажется, знаю)
B>Я не джавист, но полагаю что речь вот об этом:

B>
B>    @Test
B>    fun testFailedAdd() {

B>        val s = WalletImpl( StorageImpl())
B>        try {
B>            s.add("1", (-1).toBigDecimal())
B>        }
B>        catch (e: Exception) {
B>            Assert.assertTrue(s.list().count() == 0)
B>            return
B>        }

B>        Assert.assertTrue(false)
B>}
B>


B>Это собственно, очень печально, поскольку такой функционал появился, судя по release notes, появился в 2006 году. Ты должен был объявить кастомный эксепшен для этой ситуации, и кидать его, а юнит-тест, полагаю, должен был быть таким:


B>
B>    @Test(expected = WhateverCustomException.class)
B>    fun Add_should_fail_when_negative_input_value_provided() {
B>        val s = WalletImpl( StorageImpl())

B>        s.add("1", (-1).toBigDecimal())
B>    }
B>


почему печально? я просто этого не знал. может быть потому, что на джаве в прод писал я меньше года. и это как-бы публичная инфа на работодателя.

B>Улучшенная версия, разумеется, не должна содержать конкретной имплементации депенденсис, потому что ты тестируешь поведение твоего кода в контролируемом окружении (повторяю — я не джавист):


B>
B>    @BeforeClass
B>    public void setUpClass() throws Exception {
B>    // тут инициализация абстракций
B>    _storage = Substitute.For<Storage>() // хз как это делать в джаве
B>    }

B>    @Test(expected = WhateverCustomException.class)
B>    fun testFailedAdd() {
B>        val s = WalletImpl(_storage);

B>        s.add("1", (-1).toBigDecimal())
B>    }
B>


у меня прям в коде есть коммент "mock Storage?". Я просто не стал этого делать
Re[7]: И вот feedback от них и мои им ответы
Здравствуйте, binnom, Вы писали:

...

A>>я, строго говоря, им ничего не должен, как и они мне. вот если бы я на них работал, было бы другое дело.

B>Ты к ним и не попадешь, если будешь и впредь продолжать жить в парадигме совковой настырности. Это не оскорбление, а констатация факта, я сам был таким же, и это стоило мне довольно дорого.

так я и не собираюсь к ним попадать.

A>>>>>>If we transfer negative amount money, author don’t throw exceptions, it takes abs value of this amount and transfer positive amount of money.

A>>>>>>transferring negative amount is something which is odd. So it's a
A>>>>>>convention. It either has to be documented or exception should be
A>>>>>>thrown. So I partially agree.
B>>>>>ИМО это эпичный фэйл, а не partially agree.
A>>>>эпичный фейл это отсутствие abs. а с abs это просто другая культура
B>>>Мде.
A>>ну да. где-то -1 — это "все хорощо", а где-то 0. но я в целом согласен, что тут лучше с exception. я не согласен с тем, что это major
B>Понимаешь в чем проблема, тебе было очевидно, что надо сделать Abs, а мне — нет. Я, как пользователь API, не должен додумывать за его создателя, я должен получить ясный ответ, в чем моя проблема. Не надо делать странные манипуляции с инпутом, надо просто кидать кастомный эксепшен с объяснением проблемы.

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

A>>>>>>Author don't know how to catch exceptions in junit

A>>если по теме, то я не совсем понял суть предложения "Author don't know how to catch exceptions in junit". как ловить эксепшены вне Junit я, кажется, знаю)
B>Я не джавист, но полагаю что речь вот об этом:

B>
B>    @Test
B>    fun testFailedAdd() {

B>        val s = WalletImpl( StorageImpl())
B>        try {
B>            s.add("1", (-1).toBigDecimal())
B>        }
B>        catch (e: Exception) {
B>            Assert.assertTrue(s.list().count() == 0)
B>            return
B>        }

B>        Assert.assertTrue(false)
B>}
B>


B>Это собственно, очень печально, поскольку такой функционал появился, судя по release notes, появился в 2006 году. Ты должен был объявить кастомный эксепшен для этой ситуации, и кидать его, а юнит-тест, полагаю, должен был быть таким:


B>
B>    @Test(expected = WhateverCustomException.class)
B>    fun Add_should_fail_when_negative_input_value_provided() {
B>        val s = WalletImpl( StorageImpl())

B>        s.add("1", (-1).toBigDecimal())
B>    }
B>


почему печально? я просто этого не знал. может быть потому, что на джаве в прод писал я меньше года. и это как-бы публичная инфа для работодателя.

B>Улучшенная версия, разумеется, не должна содержать конкретной имплементации депенденсис, потому что ты тестируешь поведение твоего кода в контролируемом окружении (повторяю — я не джавист):


B>
B>    @BeforeClass
B>    public void setUpClass() throws Exception {
B>    // тут инициализация абстракций
B>    _storage = Substitute.For<Storage>() // хз как это делать в джаве
B>    }

B>    @Test(expected = WhateverCustomException.class)
B>    fun testFailedAdd() {
B>        val s = WalletImpl(_storage);

B>        s.add("1", (-1).toBigDecimal())
B>    }
B>


у меня прям в коде есть коммент "mock Storage?". Я просто не стал этого делать