Pergunta

[fundo]

Então, eu tenho um aplicativo C # que foi escrito antes de eu chegar aqui. Eu não estou no dev org, neste momento, mas eu sou o líder técnico na minha sub-grupo dentro do marketing na internet org. Minha responsabilidade é automação de processos, suporte de desktop mínima, e aplicativos personalizados que tornam a nossa vida mais fácil.

[/ fundo]

[detalhes do app]

Nós temos um aplicativo que cria um arquivo de banco de dados personalizado a partir de uma lista de URLs. Ele foi projetado para ter um arquivo de entrada, e dois arquivos de saída para as duas aplicações que utilizam este tipo de arquivos db. A regra para a diferença entre os dois arquivos de saída é compilado para o código.

[/ detalhes do app]

Se um aplicativo # C interna ser compilado com lógica de negócios que não pode ser alterado sem que seja re-construída?

Foi útil?

Solução

aplicações internas tem um objetivo: apoiar o processo

.

Se as regras para a criação de saída são simples, mudar todos os dias e são colocadas por um usuário, a compilá-lo para o binário é totalmente errado e um investimento em um GUI e um novo conjunto de programadores poderia fazer muito bom. Se as regras são complexas, a mudança uma vez por ano e estão mandatados pela administração, tendo-lhes compilado no binário é um custo-benefício maneira simples, para mantê-los e manter os usuários de mexer com os internos.

Como sempre, a resposta tem que ser "depende".

Outras dicas

Se a lógica é alterada em uma base regular, você deve evitar construí-la no programa. Por outro lado, uma vez que é interna, eu estou supondo que o processo necessário para reconstruir o aplicativo é mínima ou inexistente, por isso não pode fazer muita diferença.

  • Quanto tempo demora a lógica de negócios alter e depois recompilação?
  • Quanto tempo vai demorar para lógica de negócios alter sem recompilar na nova versão?
  • Quanto tempo vai demorar para recodificar isso?
  • Como isso afetará maintainence em termos de horas extra gasto no futuro?
  • Alguma das pessoas que precisam do aplicativo incapaz de alterar a lógica de negócios porque é na forma de código?

Respondendo a essas 5 perguntas irá produzir uma resposta.

Se a lógica não precisa ser mudado, então sim, provavelmente deve ser compilados junto com o código.

Por outro lado, se existem alguns fatores que poderiam mudar o comportamento dessa lógica de negócios, então você provavelmente deve fornecer uma média de mudá-lo como arquivos de configuração XML que alteram o seu comportamento.

Claro, se você sabe que o utilitário será usado apenas dentro de sua organização e para uma única finalidade não há nada de errado com misturar suas regras de negócios com a lógica. Over-concepção (neste código reutilizável tomada caso quando isso nunca vai ser reutilizado) não seria um uso eficiente dos recursos.

Eu geralmente empregam estratégias múltiplas de configuração com base na probabilidade de mudança.

Antes de todos os não regras de negócios colocar no código sem documentar-lo de alguma vias. Código tem muitas variáveis ??e apenas alguns deles podem ser alterados de forma segura, mantendo o comportamento correto. I Normalmente colocar uma constante no início da classe para identificar o comportamento pode ser alterado, ou seja

// Prefer this
const int AllowDownloadAttempts = 2;
if (AttemptDownload() > AllowDownloadAttempts) RegisterAndAllowDownload();

// Over this
if (AttemptDownload() > 2) RegisterAndAllowDownload();

A regra básica I follow é outra coisa senão [-1, 0, 1] devem ser documentadas.

Se não é crítica e não susceptíveis de alterar frequentemente do que eu iria colocá-lo no arquivo de configuração aplicações (por exemplo App.config) e acessá-lo através de uma classe de configuração fortemente tipado para que você possa manter o controle de seus usos para saber quando é seguro para remover ou alterar.

Se ele precisa ser alterado com freqüência ou alterado pelos usuários de negócios, então eu iria armazená-lo em um banco de dados e fornecer uma interface gráfica simples para editá-lo, em seguida, carregá-lo em uma classe de configuração de rigidez quando o aplicativo é carregado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top