Executando verificação de segurança...
1

É que eu me empolgo rsrsrs, mas entendo, sempre me falam que preciso ser mais objetivo.

  • Ao escrever funções, minimize os "side effects" e faça com que suas funções retornem valores sempre que possível. Assim, você pode testar as funções de forma isolada, constituindo a base para os seus testes unitários.

Essa parte do side effect que você se refere, só para ter certeza, é:

A function is said to have a side-effect when the function changes a non-local state or when its output is not deterministic

Nesse caso de fato é uma coisa que é um pouco problemática. Pois normalmente as funções que a gente desenvolve alteram arrays que são fornecidos por referência. Mas entendo a motivação da sugestão, vou pensar em algumas formas de lidar com isso.

Codifique pensando em interfaces (ou algo semelhante, como traits ou classes abstratas). Dessa forma, nos seus testes, você pode trocar um objeto/classe real, como as câmeras, por outros de teste (como uma câmera virtual, por exemplo), através da injeção de dependência.

Bem interessante essa sua sugestão, acho que isso vai ser uma das minhas primeiras abordagens para começar a desenvolver testes.

Muito obrigado!

Carregando publicação patrocinada...
2

Nesse caso de fato é uma coisa que é um pouco problemática. Pois normalmente as funções que a gente desenvolve alteram arrays que são fornecidos por referência. Mas entendo a motivação da sugestão, vou pensar em algumas formas de lidar com isso.

Correto, isso é mesmo um side-effect. No entanto, é um side-effect que podemos testar. Por exemplo, passe um array para a função e depois verifique se o array contém o conteúdo esperado depois que a função for executada, assumindo que que o array resultante tem um valor deterministico.

Uma das maneiras teóricas de remover o side-effect desta função é fazê-la retornar outro array com o resultado esperado. Mas acredito que, no seu caso, não seria uma boa ideia, pois isso duplicaria o espaço em memória; esta técnica funciona melhor quando os objetos retornados são leves.