Python Programação - Rules / Recomendações para o desenvolvimento de software de nível empresarial em Python?
-
21-08-2019 - |
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)
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.
-
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.
-
-
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
.
-
-
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.
- idiomas
-
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.
-
-
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.
-
-
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.