Back-End

1 fev, 2013

Atributos de armazenamento de dados como longs primitivos?

100 visualizações
Publicidade

Eu estava lendo o item 24 deste livro e, em um dos últimos parágrafos, o autor comenta sobre o armazenamento de objetos de dados como um long primitivo. O texto é sobre como fazer cópias defensivas de objetos em seus construtores e métodos de acesso.

Então, em vez de usar

public void setDate(Date date) {

    this.date = date;

}

você deve utilizar:

public void setDate(Date date) {

    this.date = new Date(date.getTime());

}

Isso é bastante óbvio, depois de anos desenvolvendo o software OO, e explicar isso está fora do alcance deste artigo. Agora, vamos falar sobre o uso de longs primitivos. Realmente parece ser uma ideia muito interessante. Desde que você tivesse que usar o valor long dos dados locais (privado) o tempo todo para criar as cópias defensivas, armazenando-o como um long primitivo, imediatamente nos levaria a um código mais limpo e legível.

O construtor simplesmente armazenaria o dado long, e o acessor seria tão simples quanto

public Date getDate() {

    return new Date(myDateAsLong);

}

Além disso, seria mais fácil armazenar os dados no banco de dados, desde que não tenhamos que converter um objeto Date para um formato que o banco de dados entenda.

Agora, a grande questão: por que não pensei nisso antes?

***

Texto original disponível em http://jcranky.com/2009/02/10/store-date-attribute-as-primitive-longs/