【发布时间】:2015-01-27 20:44:48
【问题描述】:
过去几周我一直在研究 html/css,现在正尝试使用 DRY 原则(以及 SMACSS/OOCSS/BEM)优化我的代码。我相信我对这一切都有相当的了解,但有一件事我还不清楚。
是否应该 100% 应用 DRY 原则?例如,假设您有“文本转换:大写;”应用于两个不同的类。根据 DRY 原则,您将从每个单独的类中删除规则集,并将其放在两个类的逗号分隔列表下。但是过了一会儿,这不是让你的样式表变得一团糟,每个类都在同一张表上被多次声明吗?或者,您的工作表长什么样真的不重要,因为如果将来需要进行任何更改,您只需在搜索框中搜索“大写”即可?
您似乎不会从这种情况下获得任何性能改进。是的,您将从工作表中删除一个属性,但您还将添加一个全新的规则集并重复类名。
我知道这可以根据偏好和每个项目采用任何一种方式,但我更关心可能是最有效的方式(尤其是在构建大型复杂网站时)。我希望在我所有的项目中保持一致。
有什么准则可以参考吗?例如,如果您要删除的属性数量大于 X,也许只合并重复的代码?还是仅在语义相关时合并重复代码?
【问题讨论】:
-
最好在Software Engineering 询问。
-
在 2015 年,无论您如何编写它,都很难找到一款能够与 CSS(不滥用变换/过渡/阴影)抗衡的设备,因此您不必太担心性能代码可维护性。
-
诸如 LESS 或 SASS 之类的 CSS 预处理器将有助于在不牺牲可维护性的情况下为您提供 DRY。特别是关于 DRY 规则,我想说它适用于两个类总是一起变化的情况。在大写示例中,如果您的主题中某些标题是大写的,那么 DRY 是有意义的。如果每个标题都可以是大写或小写,那么 DRY 就没有意义,因为它们在概念上是独立变化的。
-
我的意见:phrogz.net/CSS/HowToDevelopWithCSS.html#groupstyles “对此的一个警告是,您不应该尝试消除所有出现的样式重复。当两个元素碰巧共享相同的颜色或字体大小时由于与这些元素的含义无关的设计决策的结果,那么它们以后可能想要具有不同的颜色、大小等。虽然稍后将复合选择器拆分为其组件并不困难,您可以通过不过度合并每个样式/值对来节省一些工作。”