Pergunta

O raciocínio existe por trás fazendo C # maiúsculas de minúsculas?

Estou pensando em mudar de VB.NET para tirar proveito de alguns recursos de linguagem (CCR e rendimento), e compreender o raciocínio por trás dessa diferença pode fazer a transição mais fácil.

[UPDATE] Bem, eu tomei a mergulhar três dias atrás. Aprender C # não tem sido particularmente difícil, eu mal conseguia lembrar o meu C ++ dias no final dos anos 90 embora.

É a me irritar caso sensibilidade? não tanto quanto eu pensava ... mais eu estou achando que ele realmente é vantajoso. Estou realmente muito feliz com a CCR como um modelo de programação coordenação assíncrona. Se eu tivesse mais tempo no projeto atual eu tinha porta a base de código em C # para tirar o máximo proveito. Não seria justo para o meu cliente embora.

Avaliando o meu projeto atual e agora eu estou vendo tópicos bloqueio EM TODA PARTE! Ahhhh !!!

[UPDATE]

Bem, eu tenho sido programação em C # por quase um ano agora. Estou gostando muito da linguagem, e eu realmente odeio atravessar para VB (especialmente quando é inevitável!)

E a coisa sensibilidade caso? nem mesmo um problema

Foi útil?

Solução

C # é case sensistive porque leva após as línguas estilo C que são todas maiúsculas de minúsculas. Esta é a partir da memória aqui está um MSDN ligação que não está trabalhando para mim direita agora eu não posso verificar.

Eu também gostaria de salientar que este é um caso de uso muito válido:

public class Child
{
   private Person parent;
   public Person Parent
   {
      get { return parent;}
   }
}

Sim, você pode contornar isso usando prefixos em suas variáveis ??de membro, mas algumas pessoas não gostam de fazer isso.

Outras dicas

Eles estavam pensando provavelmente "não queremos que as pessoas que utilizam someVariable em um lugar e someVariable em outro.

Eu acho que o fato de que caso pode transmitir informações é uma razão muito boa. Por exemplo, por convenção, nomes de classes, métodos públicos e propriedades começar com uma letra maiúscula por convenção. E, inversamente, campos e variáveis ??locais começar com uma letra minúscula.

Depois de usar a língua durante anos, eu vim para realmente apreciar este, o código é muito mais fácil de ler quando você pode ler informações simplesmente do invólucro das palavras.

E é por isso que as pessoas fazem isso, por vezes, e pode fazer sentido:

Foo foo = new Foo();

Eu faço isso o tempo todo, é muito útil. Se você pensar sobre isso em uma situação mais útil como este:

Image image = Image.LoadFrom(path);

Ela só faz sentido, por vezes, para chamar a instância a mesma coisa que o nome da classe, ea única maneira de diferenciá-las é o invólucro. Em C ++ a maiúsculas e minúsculas torna-se ainda mais útil, mas isso é outra história. I pode elaborar se você estiver interessado.

Considere os nomes de variáveis ??na seguinte pseudocódigo:

class Foo extends Object { ... }
...
foo = new Foo();

Ter sensibilidade caso permite convenções que usam caso para nomes de classes separadas e instâncias; tais convenções não são de todo incomum no mundo do desenvolvimento.

C # herda a sensibilidade caso de C e Java, que tenta imitar a tornar mais fácil para os desenvolvedores a se mover para C #

Pode ter havido algumas boas razões para fazer caso C sensível quando foi criado três décadas atrás, mas não parece haver quaisquer registos sobre o porquê. Jeff Atwood escreveu um bom artigo defendendo que caso sensibilidade pode não fazem mais sentido .

Eu acho que ter identificadores sensíveis caso pode tornar o código mais legível, através do uso de convenções de nomenclatura, bem, e mesmo sem as convenções de nomeação, a consistência imposta por casos de sensibilidade garante que você que a mesma entidade é sempre escrito da mesma maneira.

Provavelmente copiado de C, C ++, Java, etc, ou pode ser mantido o mesmo de propósito para que a sua similar ao que outros langauges ter.

Foi apenas uma questão de gosto na equipe C # designer de langauge. Estou disposto a apostar que era para comonality com outras linguagens C familiares. Isto, contudo, levar a algumas práticas de programação ruins, como um campo particular e sua propriedade associalted diferindo apenas no caso da primeira letra.

EDIT:

ruim Por que isso pode ser cosidered.

class SomeClass 
{
    private int someField;

    public int SomeField
    {
        get { return SomeField; } 
        // now we have recursion where its not wanted and its 
        // difficult for the eye to pick out and results in a
        // StackOverflowException.
    }
}
campos

prefixar privadas com um _ ou um m pode torná-lo mais fácil de detectar. Não é um enorme Biggie e pessoalmente I Sill fazer exatamente o que acabo de dizer é ruim (para me processar!).

Análise também é um pouco mais fácil para os idiomas maiúsculas de minúsculas. Enquanto não há nenhuma boa razão para escolher o caminho-não-sensível a maiúsculas, por que se preocupar?

Você está olhando para isso de uma maneira muito limitada - a partir de seu ponto de vista. projetistas da linguagem deve levar em conta todo um outro conjunto de considerações: razões culturais, compatibilidade com outras linguagens, práticas de codificação comuns etc

Todos os idiomas modernos usam maiúsculas e minúsculas: quais não

Como alguém que costumava BASIC para um número de anos eu fiquei muito cansado de desenvolvedores que usam casos diferentes para a mesma variável. Esse tipo de coisa é muito cansativo para olhar e incentiva programação desleixado. Se você não pode ser incomodado para obter o direito caso - o que mais você não pode ser incomodado para fazer?

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.

Meu melhor palpite quanto ao por que é sensível a maiúsculas seria porque Unix é sensível a maiúsculas. Dennis Ritchie, pai de C também co-escreveu Unix, por isso faz sentido que a linguagem, escreveu ele iria coincidir com o ambiente disponível naquele momento. C # apenas herdou isso do seu antepassado. Penso que esta foi uma boa decisão por parte da Microsoft, sendo que os caminhos do Windows não são maiúsculas de minúsculas.

Eu suponho que você gostaria de ver o código como:

SomeField=28;
someField++;
somefield++;
SOMEFIELD++;

compilados como se SomeField em qualquer variação invólucro é a mesma variável.

Pessoalmente, eu acho que é uma má idéia. Ele estimula a preguiça e / ou descuido. Por que se preocupar invólucro adequadamente a coisa quando não importa de qualquer maneira? Bem, enquanto estamos no assunto, talvez o compilador deve permitir erros ortográficos, como SoemField++?

Naming. Os nomes são difíceis de encontrar e você não quer ter que criar um novo nome ao falar sobre algo semelhante ou tem que usar alguma notação para separá-los.

Esses cenários são propriedades para campos ou argumentos no construtor que você está prestes a atribuir aos campos.

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