Minhas considerações sobre OOCSS
Por RamonPage
EU SOU UM aficionado por semântica. Entendo que uma boa marcação, além de um bom stylesheet, são cruciais para a performance de qualquer projeto. Porém eu tenho um argumento polêmico a fazer: é preciso cuidado com a ideia de OOCSS.
Eu tenho percebido que esse conceito tem ganhado força e muita gente começou a falar sobre. Nesse meio tempo eu tenho me perguntado se as pessoas realmente estão pensando na qualidade dos seus estilos ou simplesmente estão seguindo mais um modismo.
O que me intriga é: a ideia criada pela Nicole Sullivan faz todo sentido, mas pouco tem a ver com Orientação a Objetos. Primeiro porque CSS não envolve programação (em essência) e segundo porque é preciso bem mais do que reutilização de código (evitando o chamado DRY) para tornar qualquer CSS “modelável”.
Sendo mais claro, é preciso alguns princípios básicos para que exista Orientação a Objetos, tais como:
- Conceito de Classe1;
- Conceito de Objeto;
- Atributo;
- Método;
- Herança (talvez o único ponto coberto pelo OOCSS); e
- Por aí vai…
1 — É bom lembrar que classes CSS pouco (quiçá nada) têm a ver com classes de Orientação a Objeto.
Onde eu quero chegar…
Talvez eu seja rígido demais na minha opinião sobre o assunto. Na verdade eu concordo com muitas das premissas levantadas pela Nicole. Porém eu atento para a abordagem de remoção de seletores ineficientes ou desnecessários, que é de grande importância para alta-performance em projetos e que pode contradizer a implementação desenfreada do OOCSS.
Sendo assim, antes de pensar em OOCSS eu sugiro que pensemos no equilíbrio da marcação, levando em conta o contexto de trabalho. Não saia adicionando classes a torto e a direito achando que vai tornar seu CSS melhor reutilizável. É preciso descobrir a realidade de cada projeto, pensando com cuidado sobre a forma de implementar a marcação.
Recomendo fortemente a leitura deste artigo do Zeldman (em inglês): http://www.zeldman.com/2012/11/21/in-defense-of-descendant-selectors-and-id-elements/
Finalizo dizendo que não existe semântica completamente certa ou errada. O que existe é semântica ruim, boa ou ótima, independentemente de como é elaborada e mantida.
Atualização 20/04/2013: O Daniel Lopes tweetou hoje uma visão importante sobre OOCSS ao dizer que “desenvolvedores front-end que tentam aplicar princípios de POO em CSS sem saber realmente o que é POO podem facilmente cair na armadilha de criar abstração muito cedo”. Estou de acordo.
Atualização 07/08/2013: Jens O. Meiert publicou ontem sua visão sobre Object-Oriented HTML e OOCSS. Ele deixa claro que não há nada de errado com IDs e seletores descendentes.
* * *