Etiquetar soluções


As etiquetas dos analisadores servem para identificar como uma solução foi resolvida.

Estas etiquetas podem depois ser usadas para:

  • Associar uma solução a abordagens
  • Associar uma solução a conceitos
  • Procurar soluções com determinadas etiquetas

Formato

Uma etiqueta é uma string formatada como: <category>:<thing>.

Suportamos quatro categorias diferentes, do nível mais elevado para o mais baixo:

Categoria Descrição Especificidade Exemplos
paradigm Um paradigma de programação Muito abstrato, não específico de um track imperative, functional
technique Uma técnica utilizada Abstrato, a maioria não será específica de um track recursion, immutability
construct Um construto da linguagem Muitos não serão específicos de um track bitwise-and, for-loop
uses Utilização específica da linguagem, como tipos ou métodos Concreto, específico de um track DateTime.add_seconds, IEnumerable

Alguns exemplos de etiquetas:

  • paradigm:functional
  • technique:recursion
  • construct:bitwise-and
  • uses:DateTime.add_seconds

Etiquetas habitualmente usadas

Embora os tracks sejam livres de etiquetar as soluções como entenderem, recomendamos que tentes usar a lista de etiquetas habitualmente usadas abaixo sempre que possível. Usar um conjunto comum de etiquetas permite-nos fazer coisas bem úteis, como ligar soluções entre tracks.

Paradigma

Etiqueta Descrição
paradigm:array usa programação com arrays.
paradigm:declarative usa programação declarativa.
paradigm:functional usa programação funcional.
paradigm:generic usa programação genérica.
paradigm:imperative usa programação imperativa.
paradigm:logic usa programação lógica.
paradigm:meta usa metaprogramação.
paradigm:object-oriented usa programação orientada a objetos.
paradigm:procedural usa programação procedimental.
paradigm:reflective usa programação reflexiva.
paradigm:stack-oriented usa programação orientada à pilha.

Técnicas

Etiqueta Descrição
technique:bit-manipulation manipula bits, normalmente através de operadores bit a bit (por exemplo, AND, XOR ou deslocamento à esquerda)
technique:bit-shifting desloca bits de um número
technique:boolean-logic executa lógica booleana (AND, OR, NOT)
technique:composition usa composição
technique:concurrency executa código em simultâneo
technique:enumeration enumera valores
technique:error-handling trata erros
technique:exceptions captura ou lança exceções
technique:function-composition usa composição de funções
technique:generator usa um gerador
technique:higher-order-functions usa funções de ordem superior
technique:immutability usa imutabilidade
technique:immutable-collection usa uma coleção cujo conteúdo é imutável
technique:inheritance usa herança
technique:laziness produz valores de forma preguiçosa, só quando são necessários
technique:locks usa locks para obter acesso exclusivo a recursos
technique:looping usa ciclos
technique:math usa matemática
technique:memory-management gere a memória
technique:ordering ordena dados
technique:parallelism executa código em paralelo
technique:parser faz o parsing de dados
technique:pointers usa apontadores
technique:randomness usa aleatoriedade
technique:recursion usa recursão
technique:regular-expression usa expressões regulares
technique:short-circuiting usa curto-circuito para evitar avaliações desnecessárias
technique:sorted-collection usa uma coleção cujos elementos estão sempre ordenados
technique:sorting ordena dados
technique:tail-call-optimization usa otimização de chamadas de cauda para uma recursão eficiente
technique:type-conversion converte valores de um tipo para outro tipo
technique:unsafe usa código unsafe (por exemplo, aritmética de apontadores)

Construtos

Etiqueta Descrição
construct:abstract-class define uma classe abstrata
construct:abstract-method define um método abstrato
construct:add-assignment combina a adição com a atribuição
construct:add usa a adição
construct:array usa ou declara um array
construct:assignment atribui ou liga um valor a uma variável/nome
construct:async-await usa async/await
construct:attribute anota um membro com metadados
construct:auto-implemented-property define uma propriedade de implementação automática
construct:big-integer usa um inteiro grande
construct:binary-number define um número em notação binária
construct:bit-array usa ou declara um array de bits
construct:bitwise-and-assignment combina um AND bit a bit com a atribuição
construct:bitwise-and executa um AND bit a bit
construct:bitwise-left-shift-assignment combina um deslocamento à esquerda bit a bit com a atribuição
construct:bitwise-left-shift executa um deslocamento à esquerda bit a bit
construct:bitwise-not executa um NOT bit a bit
construct:bitwise-or-assignment combina um OR bit a bit com a atribuição
construct:bitwise-or executa um OR bit a bit
construct:bitwise-right-shift-assignment combina um deslocamento à direita bit a bit com a atribuição
construct:bitwise-right-shift executa um deslocamento à direita bit a bit
construct:bitwise-xor-assignment combina um XOR bit a bit com a atribuição
construct:bitwise-xor executa um XOR bit a bit
construct:block define um bloco que contém uma lista de instruções
construct:boolean define ou usa um valor booleano
construct:boxing usa boxing
construct:break sai de um ciclo
construct:byte usa um inteiro sem sinal de 8 bits
construct:catch captura uma exceção
construct:char usa um caráter
construct:checked-arithmetic usa aritmética verificada (que protege contra transbordos)
construct:class define uma classe
construct:collection-initializer define os valores de uma coleção através de um inicializador
construct:command define um comando
construct:comment define um comentário
construct:comparison-chaining encadeia chamadas de comparação
construct:comparison compara dois valores quanto à sua ordem relativa
construct:complex-number usa um número complexo
construct:computed-string define uma string calculada
construct:concatenation concatena valores
construct:conditional-access acede a um método de forma condicional
construct:conditional-operator usa um operador condicional ternário
construct:conditional executa código de forma condicional
construct:constant define um valor constante (imutável)
construct:constructor define um construtor
construct:continue passa para a iteração seguinte de um ciclo
construct:conversion-operator define um operador de conversão
construct:copy copia um valor
construct:coroutine define ou usa uma corrotina
construct:custom-attribute define um atributo personalizado
construct:date-time usa um valor que representa uma combinação de data e hora
construct:date usa um valor que representa uma data (sem hora)
construct:decimal usa um número de vírgula flutuante de 128 bits
construct:decrement decrementa um valor
construct:default-interface-implementation define uma implementação predefinida numa interface
construct:default define um valor predefinido (por exemplo, para um parâmetro)
construct:destructuring descontrói um valor nas suas partes
construct:dictionary-comprehension cria um dicionário através de uma compreensão
construct:dictionary usa/define um dicionário/mapa
construct:discard usa o valor especial de descarte
construct:divide-assignment combina a divisão com a atribuição
construct:divide usa a divisão
construct:do-while-loop usa um ciclo do-while
construct:double usa um número de vírgula flutuante de 64 bits
construct:else define um ramo else
construct:enum define ou usa um enum (enumeração de valores)
construct:equality compara a igualdade de dois valores
construct:error define ou usa um erro
construct:event define ou usa eventos
construct:exception define ou usa exceções
construct:explicit-conversion converte explicitamente um tipo noutro tipo
construct:explicit-import importa apenas funcionalidade selecionada
construct:exponentiation calcula a exponenciação de um valor
construct:expression-bodied-member define um membro com corpo de expressão
construct:extension-method define um método de extensão
construct:field-access acede a um campo
construct:field define um campo
construct:finally usa o finally para garantir que um determinado bloco de código é sempre executado
construct:flags-enum define ou usa um enum de flags
construct:float usa um número de vírgula flutuante de 32 bits
construct:floating-point-number usa um número de vírgula flutuante
construct:for-loop usa um ciclo for
construct:foreach usa um ciclo foreach
construct:function-overloading usa sobrecarga de funções
construct:function define uma função
construct:generator define uma função ou método gerador
construct:generic-function define uma função parametrizada com um ou mais tipos
construct:generic-method define um método parametrizado com um ou mais tipos
construct:generic-type define um tipo parametrizado com um ou mais tipos
construct:getter define um getter
construct:global-function define uma função disponível globalmente
construct:global-variable define uma variável disponível globalmente
construct:header define um ficheiro de cabeçalho
construct:hexadecimal-number define um número em notação hexadecimal
construct:if usa uma condicional if
construct:implicit-conversion converte implicitamente um tipo noutro tipo
construct:implicit-loop percorre implicitamente uma coleção de valores
construct:implicit-return devolve um valor implicitamente
construct:import importa funcionalidade implementada noutro local (por exemplo, de um espaço de nomes/módulo)
construct:increment incrementa um valor
construct:index-operator define um operador para indexar um objeto
construct:indexer define ou usa um indexador
construct:indexing acede a um valor por índice
construct:inequality compara a desigualdade de dois valores
construct:infix-operator define um operador infixo
construct:initialization inicializa um objeto após a criação
construct:initializer-list inicializa os valores dos campos de um objeto
construct:initializer inicializa um objeto
construct:instance cria ou usa uma instância de um tipo
construct:instantiation cria uma instância de um tipo
construct:int usa um inteiro com sinal de 32 bits
construct:integral-number usa um número inteiro
construct:interface define uma interface
construct:invocation invoca um método/função
construct:iterator define uma função ou método que pode ser iterado
construct:jagged-array usa um array irregular (um array de arrays)
construct:lambda define uma lambda (também conhecida como "função anónima")
construct:linked-list usa uma lista ligada
construct:linq usa LINQ
construct:list-comprehension constrói uma lista através de uma compreensão
construct:list usa uma lista
construct:local-function define uma função local
construct:local-variable define uma variável local
construct:lock usa um lock
construct:logical-and executa um AND lógico
construct:logical-not executa um NOT lógico
construct:logical-or executa um OR lógico
construct:long usa um inteiro com sinal de 64 bits
construct:loop define um ciclo
construct:macro define uma macro
construct:membership-test testa se um valor pertence a outro valor
construct:metatable define uma metatabela
construct:method-chaining encadeia várias chamadas de métodos
construct:method-overloading usa sobrecarga de métodos
construct:method-override define um método substituído
construct:method define um método
construct:module define um módulo (agrupamento de código)
construct:modulo-assignment combina o resto da divisão com a atribuição
construct:modulo usa o resto da divisão
construct:multi-dimensional-array usa um array com várias dimensões
construct:multiline-string define uma string com várias linhas
construct:multiple-assignment atribui vários valores de uma só vez
construct:multiple-dispatch usa despacho múltiplo
construct:multiply-assignment combina a multiplicação com a atribuição
construct:multiply usa a multiplicação
construct:named-argument passa um argumento por nome
construct:namespace define um espaço de nomes (agrupamento de código)
construct:nested-function define uma função aninhada
construct:nested-type define um tipo aninhado
construct:nesting usa aninhamento
construct:nint usa um inteiro com sinal específico da plataforma (32 ou 64 bits)
construct:nuint usa um inteiro sem sinal específico da plataforma (32 ou 64 bits)
construct:null usa null/nil para representar a ausência de um valor
construct:nullability lida com valores null/nil
construct:number usa um número (com ou sem sinal)
construct:object-initializer define os valores de um objeto através de um inicializador
construct:octal-number define um número em notação octal
construct:operator-overloading usa sobrecarga de operadores
construct:option usa um tipo option
construct:optional-parameter define um parâmetro opcional
construct:overflow usa transbordo aritmético
construct:parameter define um parâmetro
construct:parenthesized-expression envolve uma expressão entre parênteses
construct:pattern-matching usa correspondência de padrões
construct:pattern define um padrão usado na correspondência de padrões
construct:pipe-backward usa um pipe para trás
construct:pipe-forward usa um pipe para a frente
construct:pipeline define um pipeline
construct:point-free define funções sem os argumentos sobre os quais operam
construct:pointer usa um apontador
construct:postfix-decrement decrementa um valor usando notação posfixa
construct:postfix-increment incrementa um valor usando notação posfixa
construct:prefix-decrement decrementa um valor usando notação prefixa
construct:prefix-increment incrementa um valor usando notação prefixa
construct:print imprime um valor na consola
construct:property define uma propriedade (getter/setter)
construct:query-expression consulta dados através de uma expressão
construct:queue usa uma fila
construct:range define um intervalo
construct:read-only define um valor só de leitura
construct:record define um registo
construct:regular-expression define ou usa uma expressão regular
construct:result usa um tipo result
construct:return-type define o tipo devolvido de uma função ou método
construct:return sai de uma função/método
construct:sbyte usa um inteiro com sinal de 8 bits
construct:scientific-notation-number define um número em notação científica
construct:set-comprehension cria um conjunto através de uma compreensão
construct:set usa um conjunto
construct:setter define um setter
construct:short usa um inteiro com sinal de 16 bits
construct:slice usa um slice
construct:stack usa uma pilha
construct:static-field define um campo estático
construct:static-method define um método estático
construct:string-formatting constrói uma string através de uma string de formatação
construct:string-interpolation define uma string interpolada
construct:string define uma string
construct:struct define uma struct
construct:subtract-assignment combina a subtração com a atribuição
construct:subtract usa a subtração
construct:sum-type define um tipo soma
construct:switch usa um switch
construct:table define uma tabela
construct:template-alias define um alias para um template
construct:template-parameter define um parâmetro de template
construct:template define um template
construct:throw lança uma exceção
construct:time usa um objeto que representa a hora
construct:try trata uma exceção explicitamente
construct:tuple usa um tuplo
construct:type-alias define um alias para um tipo
construct:type-conversion converte (faz cast de) um valor para outro tipo
construct:type-extension estende um tipo com nova funcionalidade
construct:type-inference infere automaticamente o tipo de um valor/função
construct:type-test testa se um valor tem um tipo específico
construct:uint usa um inteiro sem sinal de 32 bits
construct:ulong usa um inteiro sem sinal de 64 bits
construct:unary-minus usa um menos unário
construct:unary-plus usa um mais unário
construct:underscored-number usa um número com sublinhados como separadores de algarismos
construct:union-type define um tipo união
construct:user-defined-exception define uma exceção personalizada, definida pelo utilizador
construct:ushort usa um inteiro sem sinal de 16 bits
construct:using-directive usa código de outro ficheiro
construct:using-statement atribui e liberta um valor através da instrução using
construct:varargs define um parâmetro que permite passar zero ou mais valores
construct:variable declara uma variável
construct:vector usa um vetor
construct:verbatim-string usa uma string literal (sem sequências de escape)
construct:virtual-method define um método virtual
construct:visibility-modifiers especifica a visibilidade de um construto (por exemplo, um método ou uma classe)
construct:while-loop usa um ciclo while
construct:yield produz um valor num ciclo de forma preguiçosa

Utilizações

Como esta categoria é específica de cada linguagem, não há aqui etiquetas habitualmente usadas.