Jump to content

Organização e facilidade em ler um código


donutLukke

Recommended Posts

Boa noite pessoal, tenho uma dúvida a respeito de organização e facilidade em ler um código, suponhamos que eu queria salvar um dado do tipo Produto.

typedef struct_produto
{
  int codigo[9];
  char nome[30];
  char marca[20];
}Produto;


E eu também queira salvar um dado do tipo Colaborador.

typedef struct_colaborador
{
  int id[7];
  char nome[30];
  char cpf[11];
}Colaborador;


Seria melhor eu criar uma função que pudesse salvar os dois tipos de dados, usando dessa forma uma varíavel que identificasse quando entrou um dado do tipo produto ou colaborador...

int salvar(No_Arv **a, int opcao)
{
  if(opcao == 1){ // Opção para salvar um dado do tipo produto
    .....
    .....
  }
  else if(opcao == 2){ // Opção para salvar um dado do tipo colaborador
    .....
    .....
  }
}


Ou criasse funções separadas, uma que salvasse o dado do tipo produto e outra que salvasse o dado do tipo colaborador?

Desde já, agradeço pela ajuda.

Link to comment
Share on other sites

Depende do que você quer fazer, é claro, mas eu sugeriria, se for o caso de ter uma única interface, que 3 funções fossem criadas. Por exemplo:
 

enum kind_e { PRODUCT, CONSUMER };

_Bool saveProduct( Product *p ) {  ... }
_Bool saveConsumer( Consumer *p )  {  ... }

_Bool save( void *p, enum kind_e kind )
{
  switch ( kind )
  {
    case PRODUCT: return saveProduct( p );
    case CONSUMER: return saveConsumer( p );
  }

  return 0;
}

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...