Share via


Segredos do Windows: A evolução de classificação

O desenvolvimento de algoritmos de classificação no Windows Explorer tem um longa e um pouco confusa história.

Raymond Chen

Windows Explorer iniciou com um algoritmo de classificação muito simples. Ela apenas classificada de nomes de arquivo de acordo com a função "lstrcmpi". Isso executada uma comparação específicos da localidade, diferencia maiúsculas de minúsculas. Saiba você mesmo essa função de comparação foi bastante complicada no momento. Por exemplo, ele deu um tratamento especial para hifens e apóstrofos.

Como resultado, quando o Windows 95 classificada de nomes de arquivo para exibição no Windows Explorer, ele colocaria file139 à frente da file20. Isso é perfeitamente lógico do ponto de vista do programador de computador. Também é totalmente intuitivo ao contador para seres normais de humanos — assim, provando que os programadores de computador não são seres normais de humanos.

No Windows XP, a Microsoft atualizou o algoritmo de classificação do Windows Explorer para ser mais alinhado com o que esperar seres normais de humanos. Ele tratado dígitos nos nomes de arquivo como números em vez de seqüências de caracteres. Enquanto isso aprimorado de classificação para a maioria das pessoas, houve casos em que essa alteração resultou em algumas surpresas.

Um exemplo que se repetir freqüentemente era nomes de arquivo que contém valores hexadecimais. Sob a nova baseada no número de classificação, o Windows Explorer assumido que um arquivo chamado "1040A" deve classificar um pouco após "1040", e em nenhum lugar próximo um arquivo chamado "103F2". Se por algum motivo você estiver usando o hábito de exibir pastas cheias de arquivos cujos nomes são valores hexadecimais, você pode definir a diretiva "Desativar a classificação numérica no Windows Explorer". Esta diretiva back classificação é alterado para como era nas versões do Windows anteriores ao Windows XP — isto é, caractere a caractere.

Pontos e espaços

No Windows Vista, houve um ajuste tiny feita para o algoritmo de comparação, pois a servem de períodos de trabalho dobrado. Eles são caracteres tradicionais por dia, mas eles também servem como marcadores de extensão de arquivo por noite. Como resultado, um arquivo chamado arquivo 1. txt acabou sendo classificado counter-intuitively após o arquivo. txt porque o período foi sendo comparado com o espaço e perda.

A Microsoft adicionou uma nova regra para o algoritmo de classificação no Windows Vista para que períodos são tratados como classificação antes de espaços em vez de depois deles. Se você não gostar desta sub-regra, você pode desativá-la, definindo a NoDotBreakInLogicalCompare, mas apenas no Windows Vista. A configuração não tem efeito no Windows 7.

Há menos estranho, outro caso em que a classificação de caractere a caractere pode ser preferível: se você tiver nomes de arquivo com números de ponto flutuante neles. O algoritmo de classificação com base no número colocaria "1,5" antes do "1,25". Isso está correto, se a "1,5" e "1,25" referem-se uma hierarquia numerada, como, por exemplo, uma seção de código legal. Título 1, capítulo 5 deve vir antes de título 1, Capítulo 25.

Por outro lado, se "1,5" e "1,25" referem-se as dimensões de uma parte da máquina em centímetros, em seguida, você esperaria "1,25" para vir antes de "1,5". Porque o Windows Explorer não tem contexto suficiente saber se o número de ponto de qualquer determinada seqüência de dígitos após um ponto decimal é um número hierárquico ou um flutuante, ele precisa de sua ajuda.

Uma alteração mais sutil de algoritmos de classificação foi introduzida no Windows 7. Um cliente observado que se ele tinha dois arquivos, rotulado como algo como Arq1. txt e Arq2. txt, arquivos apareceram nesta ordem se ele classificado a pasta por tipo, que é o comportamento esperado.

Se ele clicou o cabeçalho do tipo uma segunda vez para inverter a classificação, as versões anteriores do Windows continuaria colocar Arq1. txt à frente da Arq2. txt. No entanto, o arquivo switches lugares no Windows 7, com Arq2. txt que vem antes do Arq1. txt. O cliente foi confusos com essa alteração no comportamento porque ele aparentava "razoável".

A coluna Tipo entende que é comum para muitos itens ter o mesmo tipo, portanto, ele indica que o ties devem ser divididos pelo nome do item. Além de poder fazer a classificação por tipo de um pouco mais consistente, também significa que quando você reverte a ordem de classificação, os itens dentro de cada tipo também ordem inversa. Esse é o comportamento razoável para muitos usuários, porque esperam que a alternância de uma coluna irá inverter o conjunto de itens.

Portanto, na próxima vez que você executar uma classificação, lembre-se que, durante a classificação sons fácil e simples, há muitas coisas estão acontecendo nos bastidores..

Raymond Chen’s

Raymond Chendo Web site, O antigo novo coisa, e escreveu um livro homônimo (Addison-Wesley, 2007) tratam da história do Windows, chickens de metal gigantes e programação Win32.

Conteúdo relacionado