Pergunta

Apenas se perguntando por que as pessoas gostam de maiúsculas e minúsculas em uma linguagem de programação? Eu não estou tentando iniciar uma guerra apenas curioso é todos.
Pessoalmente, eu nunca realmente gostei porque eu encontrar minha produtividade cai quando nunca tentei uma linguagem que tem sensibilidade caso, você mente Estou lentamente aquecendo / me acostumando com isso agora que eu estou usando C # e F # muito mais, em seguida, eu costumava fazer.

Então, por que você gosta?

Felicidades

Foi útil?

Solução

A consistência. Código é mais difícil de ler se "foo", "Foo", "foo" e "foo" são considerados idênticos.

Algumas pessoas escrever tudo em letras maiúsculas, tornando tudo menos legível.

sensibilidade Caso o torna fácil de usar o "mesmo nome" de maneiras diferentes, de acordo com uma convenção de capitalização, por exemplo.,

Foo foo = ...  // "Foo" is a type, "foo" is a variable with that type

Outras dicas

Uma vantagem de VB.NET é que, embora não é case-sensitive, o IDE automaticamente re-formatos de tudo para o caso "oficial" para um identificador que você está usando - por isso é fácil de ser consistente, fácil de ler.

A desvantagem é que eu odeio a sintaxe VB-estilo, e muito preferem operadores de estilo C, pontuação e sintaxe.

Em C # eu acho que eu estou sempre batendo Ctrl-Espaço para salvar ter que usar o tipo adequado.

Só porque você pode nomear as coisas que diferem apenas por caso, não significa que seja uma boa idéia, porque pode levar a mal-entendidos se um monte de que os vazamentos para escopos maiores, então eu recomendo direção clara do que na aplicação ou subsistema de nível, mas permitindo que apenas internamente para uma função ou método ou classe.

sensibilidade

Caso não impõe estilos or consistência codificação. Se você Pascal caso, uma constante, o compilador não vai reclamar. Só vai forçá-lo a digitá-lo no uso de caso pascal cada vez que você usá-lo. Eu pessoalmente acho que é irritante ter que tentar distinguir entre dois itens que diferem apenas no caso. É fácil de fazer em um curto bloco de código, mas muito difícil de manter em linha reta em um grande bloco de código. Note também que a única maneira que as pessoas podem realmente usar maiúsculas e minúsculas sem indo nozes é se todos eles rigidamente seguir as mesmas convenções de nomenclatura. É a convenção de nomenclatura que adicionado o valor, não a sensibilidade caso.

Eu mantenho um compilador interno para minha empresa, e estou tentado a torná-lo um híbrido - você pode usar qualquer caso que você quer para um identificador, e você tem que se referem a ele com a mesma embalagem, mas nomeando outra coisa com o mesmo nome e caso diferente causará um erro.

Dim abc = 1
Dim y = Abc - 1 ' error, case doesn't match "abc"
Dim ABC = False ' error, can't redeclare variable "abc"

É atualmente case-insensitive, então eu provavelmente poderia corrigir os poucos erros existentes e ninguém iria reclamar muito ...

Muitas pessoas que gostam de caso- sensibilidade misunderstand o caso- em meios de sensibilidade.

VB .NET é case-insensitive. Isso não significa que você pode declarar uma variável como o ABC, em seguida, referem-se mais tarde a ele como ABC, Abc, ea ABC. Isso significa que se você digitá-lo como qualquer um desses outros, o IDE irá alterá-lo automaticamente para a forma correta.

meios

Caso-insensibilidade você pode digitar

dim a as string

e VS irá alterá-lo automaticamente para a correcta-Cased

Dim a As String

Na prática, isso significa que você quase nunca tem que bater a tecla Shift, porque você pode digitar todas as letras minúsculas e deixar o IDE correto para você.

Mas C # não é tão ruim sobre isso como ele costumava ser. Intellisense em C # é muito mais agressivo do que era no VS 2002 e 2003, para que a contagem keystroke cai um pouco.

Eu acredito que reforça a consistência, o que melhora a legibilidade do código, e permite que o seu parse olho para fora as peças melhores.

class Doohickey {

  public void doSomethingWith(string things) {
     print(things);
  }
}

Usando convenções casing faz esse código aparecer muito estandarizado para qualquer programador. Você pode escolher classes, tipos, métodos facilmente. Seria muito mais difícil de fazer se alguém pudesse capitalizar-lo de qualquer maneira:

Class DOOHICKEY {
  Public Void dosomethingwith(string Things) {
    Print(things);
  }
} 

Não quer dizer que as pessoas iriam escrever código feio, mas muito na maneira regras de capitalização e pontuação tornar a escrita mais fácil de ler, de sensibilidade caso ou casing normas tornar o código mais fácil de ler.

Eu acredito que é importante que você entenda a diferença entre o que maiúsculas e minúsculas é eo que a legibilidade é responder corretamente este. Apesar de ter diferentes estratégias de revestimento é útil, você pode tê-los dentro de uma linguagem que não é sensível a maiúsculas.

Por exemplo foo pode ser usado para uma variável e foo como uma constante em Java e VB. Não é a pequena diferença que o VB irá permitir que você digite Foo mais tarde, mas esta é principalmente uma questão de legibilidade e espero que é fixado por alguma forma de conclusão de código.

O que pode ser extremamente útil é quando você quer ter instâncias de seus objetos. Se você usar uma convenção de nomenclatura consistente pode tornar-se muito fácil de ver onde seus objetos vêm.

Por exemplo: FooBar FooBar = new FooBar ();

Quando é apenas necessário um objeto de um tipo, a legibilidade é aumentada significativamente, uma vez que é imediatamente aparente que é o objeto. Quando são necessárias várias instâncias, você obviamente terá que escolher novos (nomes espero significativos), mas em seções de código pequena que faz muito sentido usar o nome de classe com um primeiro caractere minúsculo em vez de um sistema como myFooBar, x, ou algum outro valor arbitrário que você vai esquecer o que ele faz.

É claro que tudo isso é uma questão de contexto, porém, neste contexto, eu diria que 9 em cada 10 vezes que compensa.

Há um monte de respostas aqui, mas estou surpreso que ninguém apontou o exemplo óbvio que também faz o divertimento de um concorrente stackoverflow:

expertSexChange != expertsExchange

Case é muito importante quando você usa nomes caso variável de camelo.

Ele lhe dá mais opções.

Sino Sino Sino

são todos diferentes.

Além disso, ele dirige os novatos que acabaram de ser contratados nozes tentando descobrir por que os totais não estão saindo direito; o)))

Porque agora você realmente tem que digitar tudo de uma forma consistente. E então as coisas de repente começam a fazer sentido.

Se você tem um editor decente - um que apresenta IntelliSense ou a mesma coisa com outro nome -. Você não deve ter quaisquer problemas descobrir namees maiúsculas e minúsculas

sensibilidade Case é loucura! Que tipo de codificador louco usaria variáveis ??nomeadas foo, foo, foo e Foo todos no mesmo escopo? Você nunca vai me convencer de que há uma razão para a sensibilidade caso!

Eu acho que há também uma questão de psicologia envolvida aqui. Estamos programadores, podemos distinguir minuciosamente entre as coisas. 'A' não é o mesmo valor ASCII como 'A', e eu me sentiria estranho quando meu compilador considera-lhes o mesmo. É por isso que, quando eu digito

(lista de 'a' b 'c)

em LISP (no REPL), e ele responde com

(A B C)

minha mente imediatamente exclama 'Não foi isso que eu disse!'. Quando as coisas não são o mesmo, eles são diferente e deve ser considerado tão ...

Eu costumo passar algum tempo com a programação Delphi em férias, e a maioria dos outros vez que eu uso somente C ++ e MASM. E uma coisa é estranho: quando estou no Delphi, eu não gosto de maiúsculas e minúsculas, mas quando eu estou em C ++ - eu faço. I como maiúsculas e minúsculas, becouse que faz palavras semelhantes (funções, variáveis) semelhante, e eu como sensibilidade não-caso, porque ele não coloca restrições excessivas em Syntaxis.

De Guia do .NET Framework Developer Convenções de Capitalização , Case-Sensibilidade:

Existem as diretrizes de capitalização apenas para fazer identificadores mais fácil ler e reconhecer. Caixa não pode ser utilizado como um meio de evitar nome colisões entre elementos da biblioteca.

Não assuma que toda a programação linguagens são case-sensitive. Eles são não. Os nomes não podem diferir em caso sozinho.

É útil para distinguir entre tipos no código.

Por exemplo, em Java: Se ele começa com uma letra maiúscula, então é provavelmente uma classe. se o seu ALL_CAPS seu provavelmente uma constante.

Ela dá mais versatilidade.

Parece uma forma mais profissional de codificação. não deve precisar o compilador para descobrir o que você quis dizer.

Eu me senti da mesma forma que você muito tempo atrás, quando eu usei VB3 / 4 muito mais. Agora eu trabalho em, principalmente, C #. Mas agora eu acho do IDE fazer um grande trabalho de encontrar os símbolos, e dando boa intellisense sobre os diferentes casos. Ele também me dá mais flexibilidade em meu próprio código como eu pode ter significado differnt para itens com diferentes casos, o que eu faço um monte agora.

Além disso, um bom hábito se o seu trabalho em Linux, onde referenciar nomes de arquivos é case sensitive. Eu tive que porta um aplicativo do Windows ColdFusion para trabalhar em Linux e foi um pesadelo absoluto. Além disso, alguns bancos de dados têm sensibilidade caso ligado, imaginar a alegria lá.

É bom hábito que, independentemente da plataforma e certamente leva a um estilo de desenvolvimento mais consistente.

IMHO é inteiramente uma questão de hábito. Qualquer um que você está acostumado vai parecer natural e certo.

Você pode vir até com uma abundância de justificativas a respeito de porque é bom ou ruim, mas nenhum deles segurar muita água. Por exemplo:

  • Você ganha mais possíveis identificadores, por exemplo. foo vs Foo vs FOO.
  • Mas ter identificadores que diferem apenas no caso não é uma boa idéia
  • Você pode codificar tipo-info em um nome (por exemplo. FooBar = typename, fooBar = function, foo_bar = variável, FOO_BAR = macro)
  • Mas você pode fazer isso de qualquer maneira com Húngaro notação

Porque é como funciona a linguagem natural, também.

Na programação há algo a ser dito para a sensibilidade caso, por exemplo tendo uma propriedade pública Foo e / foo campo de proteção privada correspondente. Com IntelliSense não é muito difícil não cometer erros.

No entanto, em um sistema operacional, sensibilidade caso é apenas louco. Eu realmente não quero ter um arquivo Foo e foo e foo no mesmo diretório. Isso leva-me Cray Toda vez que eu estou fazendo * nix coisas.

Para mim sensibilidade caso é apenas um jogo de âmbitos como thisValue para um argumento e ThisValue para uma propriedade ou função pública.

Mais do que muitas vezes você precisa usar o mesmo nome de variável (uma vez que representa a mesma coisa) em diferentes âmbitos e sensibilidade caso ajuda você a fazer isso sem recorrer a prefixos.

Ufa, pelo menos não estamos mais usando a notação húngara.

Depois de trabalhar muitos anos com o legado de código VBScript ASP, quando nos mudamos para .NET escolhemos C #, e um dos principais motivos foi a sensibilidade caso. O código antigo era ilegível porque as pessoas não seguir qualquer convenção: código era uma confusão ilegível (bem, pobre VBScript IDEs ajudou nisso)

.

Em C # podemos definir convenções de nomenclatura e todos devem segui-los. Se algo não está correctamente encaixotado, você pode renomeá-lo (com refatoração, mas isso é uma característica IDE) e não haverá nenhum problema porque a classe ou variável será nomeado da mesma forma em todo o código.

Finalmente, penso que é muito mais legível se tudo está correctamente encaixotado. Talvez é mais rápido para escrever, sem maiúsculas e minúsculas, mas a partir de uma revisão de código e ponto de manutenção não é a melhor coisa, porque pular através do código à procura de algo é mais fácil. Por exemplo, é mais fácil encontrar todas as cordas 'foo' em um relance do que olhar para o 'foo', 'Foo', 'FOO', 'foo' ...

línguas de maiúsculas e minúsculas não são facilmente generalizar para conjuntos de caracteres não-ASCII. conversão caso adequado para um idioma diferente do Inglês não é uma tarefa simples, e depende de localidade do sistema, entre outras coisas.

Caso insensibilidade é muito difícil, a menos que você restringir a sintaxe para ascii (ou só se aplicam a insensibilidade caso para os caracteres ASCII), e também o que você precisa para restringir o local.

As regras para determinar superior e inferior caso de caracteres não é nem bem definida, nem é sem perdas.

Alguns personagens podem ter mais de uma forma 'minúscula'. Algumas pessoas vão discordar quanto ao que a forma maiúscula correta deve ser.

(Algumas linguagens e ambientes permitem quase caractere a ser usado em nomes)

Em C #, qual é a diferença entre ToUpper () e ToUpperInvariant ()?

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