Lingma oferece análise contextual baseada em base de conhecimento para conclusão de código. Ao usar o Lingma, os repositórios de código enviados pela empresa são incorporados como contexto. Isso garante que a conclusão de código esteja mais alinhada aos padrões de codificação e às características de negócio da organização. Este tópico descreve como administradores podem construir um repositório de código corporativo de alta qualidade e apresenta melhores práticas para desenvolvedores backend e frontend.
Edições e linguagens suportadas
|
Edição |
Backend |
Frontend |
|
Enterprise Dedicated Edition |
Java, C#, C/C++, Go, Python |
JavaScript, TypeScript, Vue, React |
Para administradores: Como construir um repositório de código corporativo de alta qualidade
Para garantir o processamento adequado dos dados de código, siga estas instruções ao preparar os repositórios. Essa preparação torna a recuperação mais rápida e precisa.
Diretrizes para seleção e preparação de repositórios de código
Esta seção aborda dois cenários de preparação de repositórios de código:
Cenário 1: Melhorar a eficiência no desenvolvimento diário
Use múltiplos repositórios de código durante o desenvolvimento empresarial para aprimorar o desempenho da recuperação. Essa abordagem facilita a localização rápida de código, sua reutilização e o trabalho eficiente. Siga as diretrizes:
Cenários de backend
[Recomendado] Selecione trechos ou arquivos de código de alta frequência: Escolha trechos de código frequentes ou reutilizados no projeto atual. Esses trechos possuem alta reusabilidade e são adequados para inclusão em uma base de conhecimento. Organize-os em um repositório separado e envie-os para uma base de conhecimento separada para facilitar o gerenciamento e a recuperação.
Código do projeto atual: Envie todo o projeto atual para uma base de conhecimento para permitir uma recuperação abrangente. Isso melhora a reusabilidade do código e a eficiência do desenvolvimento. No entanto, se o projeto contiver código interferente ou de baixa qualidade, o desempenho da melhoria de conclusão de código pode ser afetado.
Cenários de frontend
Envie um repositório de código que use bibliotecas de componentes em vez do repositório de código-fonte dos componentes. Certifique-se de que o repositório cubra o maior número possível de cenários de uso.
[Recomendado] Repositório de código de páginas de modelo de frontend: Monte componentes personalizados da empresa em modelos para páginas frontend altamente reutilizáveis, como páginas de login, registro, exibição de conta e transferência de fundos. Se sua empresa possui uma biblioteca de modelos, envie-a para a base de conhecimento de código corporativo.
Repositório de código do projeto atual: Envie código de projeto bem estruturado e de alta qualidade para a base de conhecimento corporativa para permitir uma recuperação abrangente. Código de baixa qualidade ou interferente no repositório pode afetar o desempenho da conclusão de código.
Cenário 2: Garantir consistência de código e reduzir desenvolvimento repetido em cenários de negócio específicos
Ao construir aplicações de nível empresarial, garanta que as regras de negócio sejam uniformes para manter o sistema estável e fácil de manter. Sem padrões comuns, diferentes desenvolvedores podem adotar métodos distintos. Isso pode levar a regras de negócio divergentes, dificultar a correção do código e enfraquecer a estabilidade do sistema.
A seguir, alguns casos de uso de cenários de negócio específicos:
Caso 1: Reutilização de lógica de framework e middleware corporativos
Uma empresa precisa de um mecanismo unificado de bloqueio distribuído para seu sistema de gestão de estoque. Integre frameworks de negócio à base de conhecimento de código. Assim, os desenvolvedores podem usar facilmente esses trechos de código ao escrever novo código nas IDEs. Essa prática aumenta a eficiência do desenvolvimento, reduz retrabalho, melhora a qualidade do código e garante a consistência da lógica de negócio.
Siga estas dicas para selecionar e preparar um repositório de código:
Identifique as necessidades de negócio e implementações necessárias:
Identifique módulos de negócio essenciais que exigem implementação unificada no sistema, como controle de estoque, processamento de pedidos e sistemas de pagamento.
Defina como lidar com cenários de negócio específicos: Por exemplo, o sistema de estoque possui tarefas diferentes, como redução de estoque, verificação de nível de estoque e bloqueio de estoque. Cada tarefa requer um mecanismo de implementação distinto.
Escolha arquivos de código dos frameworks de negócio e envie-os para uma base de conhecimento de código:
-
Filtre os frameworks de negócio para encontrar o código principal que lida com a lógica de negócio essencial, organize-o e envie-o para uma base de conhecimento de código separada. Por exemplo, se for necessário bloqueio distribuído para manter a segurança durante atualizações, localize o código principal que implementa esse bloqueio.
/** * Use the enterprise-developed distributed locking mechanism to implement concurrency control */ @Service public class InventoryService { @Autowired private DistributedLockFramework lockFramework; @Autowired private InventoryRepository inventoryRepository; /** * Use the distributed locking mechanism to ensure concurrency security during inventory deduction * @param productId, which specifies the product ID. * @param quantity, which specifies the deduction quantity. * @return, which specifies whether deduction is successful. */ public boolean deductInventory(Long productId, int quantity) { String lockKey = "inventory:" + productId; return lockFramework.withLock(lockKey, 30, TimeUnit.SECONDS, () -> { Inventory inventory = inventoryRepository.findByProductId(productId); if (inventory == null || inventory.getQuantity() < quantity) { return false; } inventory.setQuantity(inventory.getQuantity() - quantity); inventoryRepository.save(inventory); return true; }); } }
Caso 2: Reutilização de lógica de negócio central da empresa
Uma empresa deseja estabelecer uma política única e personalizada de recomendação para seus produtos. Nesse caso, integre frameworks de negócio desenvolvidos pela empresa a uma base de conhecimento de código corporativa. Dessa forma, os desenvolvedores podem recuperar e reutilizar facilmente trechos de código padronizados ao escrever lógica de negócio em uma IDE. Isso aumenta a eficiência do desenvolvimento, reduz retrabalho, melhora a qualidade do código e garante a consistência e estabilidade da lógica de negócio.
Siga estas dicas para selecionar e preparar um repositório de código:
Determine os módulos de negócio e implementações necessários:
Identifique módulos de negócio essenciais: Encontre as partes do negócio que precisam de implementação unificada no sistema, como o sistema de recomendação de produtos.
Defina ações de negócio e etapas principais. Por exemplo, uma política de recomendação personalizada inclui estas etapas: coletar dados de comportamento do usuário, identificar características de interesse do usuário, obter uma lista de produtos possíveis, pontuar e classificar esses produtos e exibir as principais escolhas. Use código pré-escrito para implementar essas etapas.
Escolha arquivos de código dos frameworks de negócio e envie-os para uma base de conhecimento de código:
-
Encontre o código principal que lida com a lógica de negócio essencial, organize-o e envie-o para uma base de conhecimento de código separada. Veja um exemplo de política de recomendação personalizada:
/** * The recommendation engine service * Implement personalized recommendation based on user behavior and commodity features */ @Service public class RecommendationService { @Autowired private UserBehaviorRepository userBehaviorRepo; @Autowired private ProductRepository productRepo; /** * Generate a recommendation list for a specified user * @param userId, which specifies the user ID. * @param limit, which specifies the maximum number of commodities that can be recommended. * @return, which specifies the IDs of recommended commodities. */ public List generateRecommendations(Long userId, int limit) { // Obtain user behavior data List behaviors = userBehaviorRepo.findRecentByUserId(userId, 100); // Extract user interest features Map userInterests = extractUserInterests(behaviors); // Obtain a candidate commodity pool List candidateProducts = productRepo.findRecentlyActive(1000); // Calculate and rank commodity scores List scoredProducts = candidateProducts.stream() .map(product -> new ScoredProduct(product, calculateScore(product, userInterests))) .sorted(Comparator.comparing(ScoredProduct::getScore).reversed()) .collect(Collectors.toList()); // Return the top-scoring commodities return scoredProducts.stream() .limit(limit) .map(sp -> sp.getProduct().getId()) .collect(Collectors.toList()); } // Other auxiliary methods }
Adicione comentários ao código das funções principais. Isso ajuda os desenvolvedores a recordar trechos de código ao programar em uma IDE.
Caso 3: Referenciar projetos existentes para melhorar a eficiência de novos projetos
Quando uma empresa inicia um novo projeto, ela pode aproveitar o código de módulos centrais semelhantes de um projeto existente. Essa estratégia economiza tempo e recursos, além de tornar o novo projeto melhor e mais estável.
Siga estas dicas para selecionar e preparar um repositório de código:
Identifique módulos de negócio essenciais com base nos requisitos de negócio e cenários:
Identifique funções ou métodos semelhantes. Por exemplo, se tanto o projeto novo quanto o antigo possuem funções como gerenciamento de usuários, exibição de produtos e processamento de pedidos, liste os módulos relacionados.
Verifique a qualidade do código: Garanta que o código do projeto existente tenha sido totalmente testado e seja estável e confiável. Remova arquivos e configurações desnecessários para manter o código limpo e fácil de usar.
Defina ações de negócio específicas e ações centrais:
-
Extraia funções centrais: Do projeto existente, extraia o código de módulos funcionais chave que possam ser reutilizados. Exemplos:
Gerenciamento de usuários: registro de usuário, login e modificação de informações
Exibição de produtos: lista de produtos, página de detalhes e função de busca
Processamento de pedidos: realização de pedido, processamento de pagamento e atualização de status do pedido
Adicione comentários ao código das funções principais. Isso ajuda os desenvolvedores a recordar trechos de código ao programar em uma IDE.
Escolha arquivos de código dos frameworks de negócio relacionados e envie-os para uma base de conhecimento de código. Reorganize o código do projeto existente usando uma estrutura modular. Isso separa o código para diferentes equipes responsáveis por módulos específicos no novo projeto. Crie um repositório de código separado para cada módulo:
Isolamento da base de conhecimento de código: Envie o código do projeto existente para a base de conhecimento apropriada. Por exemplo, envie o código dos módulos de gerenciamento de usuários, exibição de produtos e processamento de pedidos para bases de conhecimento separadas.
Gerenciamento de permissões: Configure permissões para que apenas as equipes corretas acessem códigos específicos. Isso evita interferências durante a conclusão de código nas IDEs.
Especificações de arquivos de código
-
Linguagens e frameworks suportados:
Backend: Java, Python, Go, C# e C/C++
Frontend: TypeScript, JavaScript, React e Vue
Limites de upload: Apenas arquivos de código-fonte podem ser enviados. Por exemplo, envie arquivos
.javapara Java, arquivos.cspara C# e arquivos.jsou.jsxpara JavaScript.-
Evite enviar o seguinte:
Dados e código de teste, como scripts de teste, casos de teste ou código relacionado a testes que não contenha lógica de negócio.
Métodos mock, a menos que contenham lógica de negócio específica.
-
Artefatos de build:
Frontend: Arquivos gerados por ferramentas de build como Webpack e Gulp. Esses arquivos geralmente ficam armazenados no diretório
distoubuild.Backend: Arquivos DLL compilados e qualquer outra saída de compilação.
-
Diretrizes de comentários:
Adicione comentários detalhados nos cabeçalhos das funções.
-
Para distinguir funções, certifique-se de que os comentários sejam informativos. Ajuste os comentários com base em modelos de comentários ou especificações da empresa.
/** * Update the status of a specified order. * * @param orderId, which specifies the unique ID of the order. * @param newStatus, which specifies the new status of the order. * @return boolean, which specifies whether the update is successful. */
-
Convenção de nomenclatura de funções:
Certifique-se de que o nome da função seja informativo.
Use nomes claros e descritivos, como
exportOrdersToPDFeupdateOrderStatus, em vez defunc1.
Diretrizes de upload
Compacte os arquivos nos formatos
.zip,.gzou.tar.gz.Garanta que cada pacote não ultrapasse 100 MB.
Para desenvolvedores: Como usar a base de conhecimento como contexto na conclusão de código
Cenários de backend
Comentário para código
O Lingma gera código a partir de comentários em linguagem natural. Siga as melhores práticas para desenvolvimento backend:
-
Envie código para um repositório de código corporativo: Coloque o código funcional necessário em um arquivo compactado e envie-o para o repositório de código. Certifique-se de que as funções sigam as especificações de comentários. Adicione comentários antes das funções. Consulte Administradores: construa um repositório de código corporativo de alta qualidade para mais detalhes. Tome como exemplo os comentários do algoritmo Snowflake:
/** * Use the Snowflake algorithm to generate unique IDs * @param workerId * @return */ public synchronized Long getSnowFlowerId(long workerId){ long id = -1L; if (workerId < 0 || workerId > snowFlowerProperties.getMaxWorkerId()) { throw new IllegalArgumentException( String.valueOf("workerID must gte 0 and lte " + snowFlowerProperties.getMaxWorkerId())); } // Algorithm implementation code return id; } -
Insira comentários: Localize uma classe Java na sua IDE e adicione comentários correspondentes às funções a serem recuperadas. Garanta que as descrições sejam claras e os estilos consistentes.
Estilo 1
//Please generate code that uses the Snowflake algorithm to generate a unique ID and returns the generated IDEstilo 2
/** * Use the Snowflake algorithm to generate unique IDs * @param wId * @return */Especificações de comentários:
Tamanho do comentário: Ao programar, evite comentários curtos. Use pelo menos 15 caracteres. Comentários muito curtos não acionam a recuperação.
Significado do comentário: Garanta que os comentários sejam claros e precisos. Inclua palavras-chave e descrições de valores de retorno para ajudar o Lingma a entender seu código com mais precisão.
Suporte multilíngue: Comentários em inglês e chinês são suportados. O idioma usado nos comentários do repositório pode ser diferente do usado no código.
Nomes de parâmetros: Use nomes de parâmetros flexíveis. O Lingma os ajustará para corresponder ao código recuperado.
Veja alguns exemplos inadequados:
//Snowflake algorithmProblema: O comentário é muito curto e pouco detalhado.//Generate a unique IDProblema: Faltam palavras-chave no comentário, o que pode causar confusão.
Geração de código: Ao pressionar Enter pela primeira vez, o Lingma sugere código com base nos seus comentários. Ao pressionar novamente, o Lingma completa o código utilizando o repositório de código corporativo.

Gerar código usando assinaturas de função
Envie código para um repositório de código corporativo.
-
Insira assinaturas de função: Localize uma classe Java na sua IDE e insira as assinaturas das funções relacionadas. Use nomes de parâmetros flexíveis. O Lingma alterará os parâmetros para corresponder ao código recuperado.
public List nextList(String name, int size)Descrições de assinatura de função:
Nome da função: Use nomes de função claros e significativos para facilitar a correspondência de significados semelhantes.
-
Parâmetros e valores de retorno: Os tipos e a ordem devem corresponder à função alvo, mas altere os nomes dos parâmetros conforme necessário. O Lingma ajusta automaticamente os parâmetros para corresponder ao código recuperado. Veja alguns exemplos de nomes de parâmetros inadequados:
public List func1(String name, int size): O nome da função não é claro e não reflete com precisão a função.public List nextList(int orderId): O tipo de parâmetro e o tipo de valor de retorno não correspondem à função alvo.
Conclusão de código: Após pressionar Enter pela primeira vez, o Lingma fornece sugestões de conclusão de código. Ao pressionar novamente, o Lingma completa automaticamente o código com base no repositório de código corporativo.


Cenários de frontend
Completar código de componente personalizado de frontend usando tags
O Lingma gera código usando tags nos componentes personalizados de frontend. Siga as melhores práticas:
-
Envie código para um repositório de código corporativo: Antes de começar, certifique-se de que todo o código dos componentes de frontend necessários esteja enviado para o repositório de código. Veja um exemplo com o framework React:
New } formItems={formItems} formRef={formRef} columns={columns} request={async (params, requestType) => { const res: Record = await apiGetUserList(params); return { data: res.data, total: res.total, }; }} /> Escreva o código do componente: Abra o arquivo
.jsxna sua IDE e comece a programar. Use tags HTML básicas ou tags de componentes personalizados, como<LTable />.-
Ative a conclusão de código: Depois de digitar código suficiente para acionar uma correspondência na biblioteca, a IDE gerará o código completo do componente para você. Pressione Enter para completar o código manualmente.
ImportanteAcione a conclusão de código dentro de um rótulo de componente completo.
Comentário para código
O Lingma gera código a partir de comentários em linguagem natural. Siga as melhores práticas:
-
Envie código para um repositório de código corporativo: Coloque o código funcional necessário em um arquivo compactado e envie-o para o repositório de código. Certifique-se de que as funções sigam as especificações de comentários e tenham comentários no início. Consulte Administradores: construa um repositório de código corporativo de alta qualidade para mais detalhes. Exemplo:
/** * Generate an object with id as the key value based on the error message * @param {Array} results * @return {Record} */ function getErrObj(results) { // Function implementation code } -
Insira comentários: Abra o arquivo JavaScript necessário na sua IDE e adicione comentários. Veja um exemplo:
//Generate an object with id as the key value based on the error messageEspecificações de comentários:
Tamanho do comentário: Ao programar, evite comentários curtos. Use pelo menos 15 caracteres. Comentários muito curtos não acionam a recuperação.
Significado do comentário: Garanta que os comentários sejam claros e precisos. Inclua palavras-chave e descrições de valores de retorno para ajudar o Lingma a entender seu código com mais precisão.
Suporte multilíngue: Comentários em inglês e chinês são suportados. O idioma usado nos comentários do repositório pode ser diferente do usado no código.
Nomes de parâmetros: Use nomes de parâmetros flexíveis. O Lingma os ajustará para corresponder ao código recuperado.
Geração de código: Ao pressionar Enter pela primeira vez, o Lingma sugere código com base nos seus comentários. Ao pressionar Enter novamente, o Lingma completa o código utilizando o repositório de código corporativo.

Se seus comentários ou assinaturas de função possuírem parâmetros, o Lingma altera automaticamente os nomes dos parâmetros no código gerado para garantir consistência de nomenclatura.
Para obter os dados mais recentes, atualize o cache. Pressione
⌥(option)Pno macOS ouAltPno Windows para acionar manualmente a conclusão de código.
FAQ: Por que não consigo recuperar código?
Se você tiver problemas para recuperar código após instalar o Lingma, execute as seguintes etapas:
-
macOS: Reinicie o processo do Lingma e limpe o cache relacionado:
ps -ef|grep lingma|grep start|awk '{print $2}'|xargs -I {} kill -9 {} Windows: Encerre o processo do Lingma no Task Manager.