Dados ou Objetos

Um post interessante do stackoverflow que me indicaram refere a questão de funções ou apis devolverem objetos ou arrays

A principal reação foi de estranheza… um objeto é uma coisa tão diferente de um array… um array, mesmo considerando um array associativo em php, não é muito mais do que um par de valores com n posições… um objeto pode ter uma propriedade que é um array… pode ser uma coleção de outros objetos e, principalmente, pode ter comportamentos implementados dentro de si, ou seja não são só dados…

“An object has state (data) and behavior (code)”

…de outra forma mais valia usar o equivalente aos structs de C.

Outra questão tem a ver com o facto de estarmos a considerar o cenário de resultado de funções e neste caso funções de uma api web.

Considerando que hoje em dia na maior parte das vezes já não estamos a pensar em Remoting ou RMI, como pensavamos há uns dez anos, como por exemplo “objects living in different AppDomains, in different processes, and in different machines” ou “mechanism that enables an object on one Java virtual machine to invoke methods on an object in another Java virtual machine” mas sim pedaços de JSON que são trocados via web então basicamente confirmamos que são só dados que andam de um lado para o outro…

Ou seja, pensando melhor nesta questão o que estamos a falar é se devemos usar arrays ou DTO (Data Transfer Objects) que são objetos cujo propósito é precisamente servir de encapsulamento de dados para transferência entre sistemas. E neste caso podemos pensar que a API que está a fornecer os dados é um sistema e aquilo que vai utilizar os dados é outro sistema.

Assim sendo, e se a nivel de performance estivermos a falar de custos negligenciáveis, parece-me que a escolha será feita somente pela legibilidade que a linguagem seleccionada proporcionar ao código desenvolvido.

Versão em EN no stackoverflow.

(imagem retirada de  http://objectorientedcoldfusion.org/procedural-vs-object-oriented.html)

por Vitor Silva



Leave a Reply