当前位置: 首页 > 面试题库 >

是否有用于命名类的标准方法?

班昱
2023-03-14
问题内容

例如:

class="profile profile-image profile-image-large"

要么

class="profile profile-image profile-image-small"

这些名称或破折号有问题吗?


问题答案:

老实说,这取决于个人开发人员和他们自己的感受。就像您建议的那样,有两种同样好的构造CSS类的方法:

.profile.image.large{
    width: 300px;
}

/* Or: */
.profile-image-large{
    width:300px;
}

它们可以达到相同的目的,但是当您开始广泛思考时,您会发现这些样式之间的差距有多大。

分离班使他们可以重复使用:
该干的惯例是从不重复自己。通过分离largeorimage类,我们可以 重用 相同的类:

.blue{
    border: 3px solid blue; /* All .blue's will have a blue border */
}

.profile.blue{
    border-style: dashed; /* Inherits from the previous blue and replaces the solid with a dash. */
}

在第二种方法中-使用-分隔符,代码将是:

.blue{
    border: 3px solid blue; /* All .blue's will have a blue border */
}

.profile-blue{
    border: 3px dashed blue; /* We had to redefine the entire style */
}

在像这样的简单示例中border,这似乎无关紧要。但是要考虑到更大的CSS块,您可能希望在整个代码中重复使用数十次。您会重复很多次。

逻辑上将样式分组仍然是一件好事: 我并不是说这-classes是一件坏事-它们有助于为您的代码定义名称空间,因此在维护 模块化
代码的意义上,用标识符加上前缀将有助于防止冲突,特别是如果您要在要重新使用的Web代理中开发代码,或者要构建插件(在这种情况下,绝对需要样式前缀)。

用诸如SCSS(我的首选环境)之类的编译语言进行开发也会改变您的想法。在SASS/SCSS中,我们可以轻松地做到这一点:

.profile{
    display: block;

    &-image{
        border: 1px solid blue;
    }
}

其结果与profile profile-image元素相同。另外,SASS还支持:

.profile{
    display: block;

    &.image{
        border: 1px solid blue;
    }
}

profile image对一个元素求值。非常相似-但这_两种_样式都限于其父元素.profile,并且不能全局使用。样式是受保护的,而在我的第一个“自然” CSS示例中,blue可以通过HTML页面中的
任何 元素自由添加和合并类。

编辑: 您仍然可以.image在SASS代码中使用全局样式,然后覆盖各个示例,但是就我个人而言,我认为这违反了DRY原则,因此我尝试避免这样做。

那么什么是TL; DR?

我认为,没有“正确答案”。从约定的角度来看,值得注意的是,像Twitter-Boostrap这样的框架使用了两种样式的混合体-
可以在任何地方应用的全局类,与保护孩子样式的前缀类混合在一起。

对于 任何 程序员而言,最重要的是,您的代码清晰易读且易于定义,并且无论使用哪种方法,都使用尽可能少的代码来实现结果。



 类似资料:
  • 问题内容: 我已经看到一些程序员在类名的前面使用(下划线),而其他人则将其用于局部变量。 Java标准是否要求/建议在私有实例变量或类名前面使用_(下划线)? 问题答案: 这是个人喜好问题。 马丁·福勒(Martin Fowler)似乎很喜欢。我对此并不在乎-它破坏了阅读模式,并且它所传达的信息已经在您的IDE中通过颜色巧妙地告知了。 我已经尝试过使用变量名称来保存要由方法返回的结果。非常简洁,但

  • 问题内容: 是否有类似于JavaBeans的DAO方法的标准命名约定? 例如,我看到的一种命名约定是用来返回单个实体并返回实体列表。 如果没有,那您​​的团队正在使用什么,为什么? 问题答案: 一般我的名字在这样的方式的方法中,该名称暗示将由方法,如所施加的CRUD操作的类型,或。 可以应用于操作,例如。 可以应用于操作,例如。 可以应用于执行操作的方法。 可以应用于操作,例如。虽然我不太确定物理

  • 问题内容: 我正在编写一个Java程序,用于从POP3电子邮件中下载附件。最初,我通过获取MimePart的内容类型得到验证的输入流来执行此操作。然后,我可以简单地通过FileOutputStream将输入流写入本地文件。 但是,我遇到的一件事是,当我收到一封带有附件的电子邮件作为唯一内容并访问它之后,该邮件(消息类型)仅由一个部分组成,即文本/普通类型。其内容包括大量随机外观的字符。 通过互联网

  • 问题内容: 关于何时使用2个破折号,1个破折号或根本不使用任何选项并且仅按顺序读取输入的命令行约定是什么? 我意识到有很多变体,但是是否有任何约定作为行业标准脱颖而出(例如Java,C或Python)? 问题答案: 阅读Python的optparse模块的背景部分,它回答了您的一些问题,并以常见的常见参数格式标准为例。optparse模块作者建议使用一种大致与POSIX命令行参数约定相对应的样式,

  • 问题内容: 有谁知道Python中是否存在用于无限嵌套字典的标准类? 我发现自己在重复这种模式: 如果要添加“另一个层”(例如),则必须定义defaultdicts的另一个嵌套。 为了概括这种模式,我编写了一个简单的类,该类将重写以自动创建下一个嵌套字典。 例如 但是,有人知道这种想法的先前存在吗?我已经尝试了谷歌搜索,但是我不确定这叫什么。 问题答案: 您可以从中获得所需的行为: 该类的用法如下

  • There are only two hard problems in computer science: cache invalidation, naming things, and off-by-one errors. — Phil Karlton 当你维护代码时会发现,选择适当而有意义的信息为你的模块或类命名是有很大帮助的。 尤其是当其他人需要阅读或基于你编写的配置清单工作时,这种命名方法是