Observe que, às vezes, é necessário escolher entre facilitar a modificação de uma solução para um desenvolvedor de back-end e otimizar algo.
Sprites CSS que você citou é um bom exemplo. Não entendo como alguém pode criar um site quando a escalabilidade e o desempenho importam e possui links para 100 imagens, 5 CSS e 15 arquivos JavaScript de cada página. Por outro lado, os sprites CSS não são fáceis de manter, e pequenas alterações no design podem exigir muito trabalho.
Por exemplo, se você possui três ícones de estado, um abaixo do outro, e deve adicionar um quarto estado, você adiciona o quarto ícone na parte inferior da imagem, separadamente dos outros três? Ou você o adiciona após o terceiro ícone, movendo todo o resto para baixo para ter algum espaço vazio para ele?
O mesmo ocorre com a combinação e redução de arquivos CSS e JavaScript. Você deve fazer isso em um site de alguma escala, mas isso exigiria um esforço extra.
É exatamente a mesma coisa para a CDN. Você precisa usá-lo para sites grandes, mas seria mais difícil fazer alterações. Por exemplo, se você alterou um arquivo CSS, é necessário forçar os navegadores a fazer o download do novo, modificando o URI no arquivo para cdn.example.com/g.css?r=2
, então cdn.example.com/g.css?r=3
, etc.
Além disso, "mais fácil" é relativo . Veja, por exemplo, as diretrizes para escrever código CSS: pessoalmente, prefiro um estilo por linha, sem espaço em branco:
#TopMenu a{text-decoration:none;color:#fff;padding:5px 10px;float:left;}
enquanto a maioria das pessoas odeia essa sintaxe e prefere a que odeio e acho difícil de ler (não, não sou louca):
#TopMenu a
{
text-decoration: none;
color: #fff;
padding: 5px 10px;
float: left;
}
Da mesma forma, o uso do jQuery não significa que você facilitará a modificação dos arquivos pelo desenvolvedor de back-end, porque alguns desenvolvedores têm mais experiência com o Prototype ou outras estruturas.
Em todos os casos, uma documentação detalhada é útil, se o desenvolvedor quiser lê-la (a maioria não). Você também pode facilitar a vida de um desenvolvedor, perguntando com precisão ao desenvolvedor específico como ele prefere as coisas a serem feitas e trabalhando lado a lado no início, ao criar uma estrutura (por exemplo, projetando o fluxo de trabalho a ser usado para minimizar e combine os arquivos).