Não polua o espaço do usuário

O que é espaço do usuário? O espaço do usuário é o local no sistema de arquivos onde os usuários colocam seus arquivos pessoais, suas “coisas”. Esta é a estrutura de pastas do espaço do usuário no Windows XP sistema operacional:

Documents and SettingsUser
Application Data
Cookies
Desktop
Favorites
Local Settings
My Documents
My Music
My Pictures
My Recent Documents
NetHood
PrintHood
SendTo
Start Menu

E aqui está a estrutura de pastas do espaço do usuário no diretório Windows Vista sistema operacional:

UsersUser
AppData
Local
Roaming
Contacts
Desktop
Documents
Downloads
Favorites
Links
Music
Pictures
Saved Games
Searches
Videos

Este Nova estrutura de pastas do espaço do usuário do Vista pode parecer estranhamente familiar para as pessoas que usam sistemas operacionais baseados em Unix. Ela dá nova vida ao famosa citação “Aqueles que não entendem o Unix estão condenados a reinventá-lo de forma ruim”. De qualquer forma, estou feliz por não termos mais que lidar com um caminho de usuário padrão assustadoramente longo — com espaços embutidos agravantes, inclusive – para nossas coisas pessoais. Se um usuário estiver fazendo anotações em um arquivo de texto, podemos razoavelmente esperar encontrar essas anotações no seguinte caminho:

Documents and SettingsUserMy Documentsnotes.txt
UsersUserDocumentsnotes.txt

Agora que já estabelecemos o que é e onde fica o espaço do usuário, tenho uma mensagem para todos os programadores que estão lendo isso, inclusive eu. Mantenha suas patas sujas e imundas fora do meu espaço pessoal de usuário!

Dê uma olhada no seu Documents agora mesmo. O senhor pode ir em frente. Veja. O senhor vê algum arquivo ou pasta que não foi criado por ele? Se sim, o senhor foi vítima. Os aplicativos nunca devem criar ou modificar nada em o senhor documentos sem que o senhor o senhor permissão. E, no entanto, infelizmente, isso acontece o tempo todo. Os aplicativos e, mais especificamente, os programadores que os escreveram, acham que é perfeitamente aceitável bombardear seu espaço pessoal de usuário com o lixo deles.

Bem, não é.

Como Omar Shahine apontou originalmente há quase dois anoso senhor deveria estar furioso e não aceitar mais isso. Se os aplicativos precisam armazenar arquivos compartilhados, é isso que o AppData e o Application Data servem para as pastas. No OS X, que herda muitas convenções do sistema de arquivos do BSD Unix, a Apple tem um ótimo conjunto de orientações apropriadamente intitulado Não polua o espaço do usuário:

É importante lembrar que o domínio do usuário (/Users) é destinado a arquivos criados pelo usuário. Com exceção do domínio ~/Library seu aplicativo nunca deve instalar arquivos no diretório pessoal do usuário. Em particular, o senhor nunca deve instalar arquivos no diretório Documents do usuário ou no diretório /Users/Shared . Esses diretórios só devem ser modificados pelo usuário.

Mesmo que o seu aplicativo forneça clip art ou arquivos de amostra que o usuário normalmente manipularia, o senhor deve colocar esses arquivos no diretório local ou no diretório do usuário. Library/Application do usuário por padrão. O usuário pode mover ou copiar arquivos desse diretório conforme desejar. Se estiver preocupado com a possibilidade de o usuário encontrar esses arquivos, inclua uma forma de o usuário navegar ou acessá-los diretamente da interface de usuário do seu aplicativo.

Descobrir isso me fez perceber o quanto eu sentia falta dos bons e velhos tempos de convenções rígidas do sistema operacional e da GUI. É verdade que a Apple está se esquivando um pouco ao herdar as convenções bem usadas dos sistemas operacionais Unix clássicos. Mas grande parte do Windows parece perigosamente ad-hoc em comparação.

De qualquer forma, é nossa obrigação, como programadores, permitir que as pastas do usuário pertençam ao usuário. Faça a coisa responsável e armazene os arquivos do seu aplicativo em um local apropriado, não como lixo virtual entre os outros arquivos do usuário. Por favor não polua o espaço do usuário.