5
respostas

Declaração de variáveis " Globais "

Boa noite, vamos supor que tenho um projeto que tem 2 cadastros, cadastro de cliente e cadastro de usuário, ambos os cadastros vão ter as informações NOME, ENDEREÇO, CPF. A duvida é ... sendo o mais usual possível eu não poderia criar apenas uma classe com os campos.. tipo public string campo_string_00, public string campo_string_01, public string campo_string_02, para aproveitar para todos os meus cadastros sem ficar " importando " com o nome dos campos, uma vez que se eu quiser utilizar qualquer um dos campos eu não preciso ficar criando as variáveis para cada campo do banco por exemplo.. ou seja, como usual no c# eu para cada " tela " ou cadastrado sendo mais especifico terei uma classe para a mesma?

5 respostas

Opa, na minha opinião o melhor ter as classes mais específicas possível. Criar essa generalização parece uma boa saída agora, mas com o tempo você perde a ideia do que é cada campo e ainda gera a tendência de achar que tudo é meio comum e ir acumulando informações nessa super classe.

Não sei se entendi exatamente o que você quer. Entendi que você quer aproveitar 3 propriedades para 2 classes diferentes. Uma coisa que poderia ser utilizada é herança, por exemplo:

public class Dados
    {
        public string Nome { get; set; }
        public string CPF { get; set; }
        public string Endereco { get; set; }
    }
    public class Cliente : Dados
    {

    }
    public class Usuario : Dados
    {

    }

Assim Cliente e Usuario herdam as 3 propriedades da classe Dados.

bom dia, então a questão toda, é boa pratica de programacao, ou seja, é usual para cada cadastro que eu tiver no sistema, ter sua classe correspondente, com cada " informacao " de tabela do banco? exemplo.. no meu banco de dados tenho os campos.. nome, cpf, identidade...

quando eu for fazer o CRUD, eu necessariamente crio tres variaveis string para cada um dos campos.. so que.. eu tenho 700 cadastros, entao para cada cadastro eu tenho que criar uma classe distinta? muitos cadastros so muda o nome da tabela, os campos sao os mesmos, tipo.. id, descricao, nessa eu sei que posso aproveitar, mas cadastros mais complexos .. terei uma classe para cada cadastro entao ?

É difícil responder isso sem saber quais são suas tabelas, mas de forma geral, sim, cada tabela de cadastro precisa de uma classe. Mesmo que duas tabelas tenham exatamente os mesmos campos, quando você precisar fazer um insert via script no DAL, ainda precisarão ser 2 métodos diferentes pois os scripts vão ter o nome da tabela diferente. Se for via Entity Framework, ele mapeia as tabelas pelo nome da propriedade DbSet do contexto, aí sim talvez você pudesse ter duas propriedades do mesmo tipo de DbSet e nomes diferentes, um para cada tabela. Então via script acho que não é possível/boa prática, e via EF acho que é possível, desde que as tabelas sejam IDENTICAS apenas com nomes diferentes. Mas nesse caso não sei quanto a ser boa prática.

É uma boa prática a Reutilização de Códigos, se no teu caso possuir 700 cadastros diferentes com propriedades em comum: utilize a herança, se algum deles vier a sofrer alteração, novas classes devem ser geradas para que atendam a solicitação.

Para isso é necessário que tu formule a segregação dos componentes para circundar as propriedades obrigatórias.

Por exemplo:

Obrigatórios(Que todas as classes terão):

Classe PropriedadesPessoas

Nome;

Sobrenome;

DataCadastro;

Específicos(Que somente algumas classes terão):

Classe PropriedadesCarros : PropriedadesPessoas

Veículo;

Placa;

Outro exemplo:

Classe PropriedadesJogadores : PropriedadesPessoas

Time;

TipoJogo;

Ademais, verifique tua estrutura e veja se ela pode ou está atendendo ao formato de Interface.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software