Python Programação - Rules / Recomendações para o desenvolvimento de software de nível empresarial em Python?

StackOverflow https://stackoverflow.com/questions/672781

Pergunta

Eu sou um pouco avançada C ++ / Java Developer que recentemente tornou-se interessado em Python e eu desfrutar de sua tipagem dinâmica e eficiente estilo de codificação muito. Actualmente, eu usá-lo em minhas pequenas necessidades de programação como resolver enigmas de programação e scripts, mas estou curioso para saber se alguém aí tem utilizado com sucesso Python em um projeto de qualidade empresarial? (De preferência usando modernos conceitos de programação como OOP e algum tipo de Design Pattern)

Se assim for, você poderia por favor explicar por que você escolheu Python (especificamente) e dar-nos algumas das aulas você aprendeu com este projecto ? (Sinta-se livre para comparar o uso de Python no projeto vs Java ou etc)

Foi útil?

Solução

Eu estou usando Python para desenvolver um aplicativo de subscrição de seguros complexa.

O nosso software aplicativo essencialmente repackages nosso modelo atuarial de forma que as empresas podem se inscrever nele. Este negócio é baseado em nossos atuários e seu pensamento profundo. Nós não estamos a embalagem de um algoritmo inteligente que está relativamente fixo. Estamos alugando nosso cérebro atuariais para os clientes através de um serviço web.

  1. Os atuários devem ser livres para fazer alterações à medida que ganham conhecimento mais profundo dos vários fatores que levam a reivindicações.

    • linguagens estáticas (Java, C ++, C #) levam ao início de lock-in para um modelo de dados.

    • Python permite-nos ter um modelo de dados muito flexível. Eles são livres para adicionar, alterar ou factores ou fontes de informação de exclusão sem um monte de custo de desenvolvimento e complexidade. tipagem pato nos permite introduzir novas peças sem um retrabalho muito.

  2. Nosso software é um serviço (não um pacote) por isso temos um problema de integração sem fim.

    • linguagens estáticas precisa componentes de mapeamento complexos. Muitas vezes, algum tipo de mapeamento configurável, impulsionado-XML a partir de mensagens de clientes a nossa constante mudança estruturas internas.

    • Python nos permite ter os mapeamentos como uma simples definição de classe Python que simplesmente ajustar, testar e colocar em produção. Não há limitações sobre este módulo - é de primeira classe de código Python

    • .
  3. Nós temos que fazer uma extensa, longa prova-de-conceito. Estes envolvem numerosos "what-if" cenários com diferentes feeds de dados e recursos personalizados.

    • idiomas

      estáticos exigem um monte de planejamento e pensamento cuidadoso para criar ainda uma outra demo, mais um mapeamento de mais um arquivo de cliente-fornecido para a versão atual dos nossos modelos atuariais.

    • Python requer muito menos planejamento. Duck digitação (e Django) vamos bater para fora uma demonstração sem muito dor. Os mapeamentos de dados são definições simples classe Python; nossos modelos atuariais estão em um estado bastante constante de fluxo.

  4. O nosso modelo de negócio está sujeito a uma certa quantidade de negociação. Temos contratos bastante complexos com fornecedores de informação; estes não mudam tão frequentemente como o modelo atuarial, mas muda aqui requerem personalização.

    • linguagens estáticas ligam em suposições sobre os contratos, e exigem projetos bastante complexos (ou soluções) para lidar com os quebra-peidos das pessoas de negócios que negociam os negócios.

    • Em Python, usamos um extenso conjunto de testes e fazer um monte de refatoração como os vários termos e condições do contrato escorrem para nós.

    Toda semana temos uma pergunta como "Podemos lidar com uma disposição como X?" Nossa resposta padrão é "Absolutamente." Seguido por uma hora de refatoração para ter certeza de que poderia lidar com isso, se o acordo foi firmado nessa forma.

  5. Nós somos principalmente um serviço web RESTful. Django faz um monte de esta fora da caixa. Tivemos de escrever algumas extensões porque o nosso modelo de segurança é um pouco mais rigorosa do que a fornecida pelo Django.

    • línguas estáticos não têm de fonte do navio. não gostam do modelo de segurança? Pagar o fornecedor $$$.

    • As linguagens dinâmicas deve enviar como fonte. No nosso caso, nós gastar o tempo lendo a fonte de Django com cuidado para se certificar de que o nosso modelo de segurança se encaixa de forma limpa com o resto do Django. Nós não necessidade HIPAA, mas estamos construindo-o de qualquer maneira.

  6. Nós usamos serviços web a partir de fornecedores de informação. urllib2 faz isso para nós muito bem. Podemos protótipo de uma interface rapidamente.

    • Com uma linguagem estática, você tem API de, você escreve, você corre, e você espera que funcionou. O ciclo de desenvolvimento é editar, compilar, construir, executar, Bater, olhe para Logs; e esta é apenas a espiga a interface e ter certeza que temos o protocolo, credenciais e configuração right.

    • Nós exercer a interface em Python interativo. Desde que nós estamos executá-lo de forma interativa, podemos examinar as respostas imediatamente. O ciclo de desenvolvimento é reduzido a executar, editar. Nós podemos cravar uma API de serviços web em uma tarde.

Outras dicas

Estou usando o Python como distribuídos estrutura de computação em um dos mundos maiores bancos. Ele foi escolhido porque:

  • Tinha que ser extremamente rápido para desenvolver e implementar novas funcionalidades;
  • Tinha que ser facilmente integrável com C e C ++;
  • Algumas partes do código deveriam ser escritos por pessoas cuja área de atuação foi a modelagem matemática, não de desenvolvimento de software.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top