在我所见的任何地方,我都看到每当网站实施标签系统时,它们都会将标签名称转换为小写。即使在 StackOverflow 中。
我在想为什么会这样。除了防止重复之外,我想不出使用小写的理由。我相信这会损害标签的实用性。人们习惯于阅读“IBM”而不是“ibm”和“C#”而不是“c#”。用户需要更多时间来理解标签的含义,我想知道我是否应该在我的标签系统中允许大写字母,或者这是一个约定,我完全错了。
我想听听你的意见。
在我所见的任何地方,我都看到每当网站实施标签系统时,它们都会将标签名称转换为小写。即使在 StackOverflow 中。
我在想为什么会这样。除了防止重复之外,我想不出使用小写的理由。我相信这会损害标签的实用性。人们习惯于阅读“IBM”而不是“ibm”和“C#”而不是“c#”。用户需要更多时间来理解标签的含义,我想知道我是否应该在我的标签系统中允许大写字母,或者这是一个约定,我完全错了。
我想听听你的意见。
正如您已经注意到的那样,它可以防止重复。人们的大小写不一致。只要看看这里的标签,就会发现人们无法确定它是“objective-c”、“objc”还是“objectivec”。加上“Objective-C”、“Objective-c”等等,你会遇到一团糟。
请注意,我并不是说处理大写字母是不可能的,只是很困难。例如,您如何知道正确的大小写?只接受输入的第一个正确吗?靠版主清理?
应始终将不同的情况视为标签的等效情况。
标准化存储标签的另一个原因。单一规范化版本包含接受的情况,并且标签使用多对多链接表链接。与标签表的比较不区分大小写,因此永远不会有重复。
向工程师询问某事以某种方式存在的原因,他们会不遗余力地弄清楚。;)
在这种情况下,我倾向于通过懒惰(程序员不愿意考虑你提出的观点)和模仿(一旦你看到它在站点 S 上以某种方式完成,你倾向于用类似的假设为站点 S' 重新实现它)。
以不区分大小写(用于排序、查询等目的)但以最初预期的大小写显示标签的方式存储标签似乎是可行的。
(我不建议在此答案中针对任何特定站点或系统 - 每个特定系统可能有自己的考虑因素)
我想原因是为了防止重复并简化排序或识别(如果您不需要考虑多个选项,它会更容易)。并且可能是为了保持一定的一致性,因为许多 Web 用户界面都是针对那些有时可能会费心正确地大写而不是大写的人)。
但是,无论如何,这些都是一个问题,因为通常有不止一种方式来指代某物。如果您的标签曾经在某种脚本、配置或代码(例如邮件过滤器、设置文件、命令行)中用作符号,那么最好有一些简单的约定来指定它们,并且如果所有符号都具有相似的意义,允许或区分不同的情况变化、划分等可能是有问题的。作为 Unix 用户,我尽量保持文件名简单、简短、小写且没有特殊字符,尤其是当它们是(例如)邮箱名称或源文件时——因为它们可能必须输入,并在在许多情况下,否则会不方便。
另一方面,当使用复杂的图形或基于 Web 的界面时,允许在列表中轻松选择、完成键入的条目、建议最接近的匹配等,允许某种映射是有意义的。给每个标签一个简短的简单的小写标识名称,但也允许给它一个“长”或“人”的名称,这将显示在有意义的地方。标签可以通过它们的短名称唯一标识和指定,但通过它们的长名称更方便地阅读。
这类似于用户名在许多系统中的工作方式。我不会选择混合大小写的用户名,而是让用户名不区分大小写(所以我只会使用在我所在的系统上有意义的大小写,在 Unix 中是小写,但在其他一些旧系统中是大写)。然后,大多数系统都存储了一些关于用户的其他信息,比如他们的长名或全名,这样更容易阅读,因此有很多用户界面(例如 Windows XP、Mac OS,我猜还有一些更新的 Unix 桌面界面,比如 GNOME 和KDE) 显示在桌面登录选择器、消息等上。
对于网络上社区系统的标签,我想解决重复问题的方法是对标签进行一定程度的审核,即使只是通过社区本身,以及重命名和合并标签的能力(与大多数情况下的用户名不同) ) 或编辑它们的长名称,以防某些内容被错误标记。
我希望看到标签代表它们的分类。在这方面,标签应该遵循与它们所描述的事物完全相同的形式。
但是,从技术的角度来看,我发现问题可能出现在哪里;我不认为这是不全面调查解决方案的理由。
我从事数字出版工作,我可以看到遵循正确用法的好处。另一方面,你很难看到杂志、书籍或报纸中使用全小写字母(除非是风格选择)。
http://en.wikipedia.org/wiki/List_of_case-sensitive_English_words
也就是说,英语词典的美妙之处在于它具有适应、修改和发展的能力。
这对我来说听起来是一个有效的观点。我相信他们可以想出一些简单的解析来大写每个单词(用破折号分隔),但是你怎么知道它应该是 IBM,而不是 Ibm?我认为有人必须手动更改标签查找表才能完成此操作。
我同意原则上这可以以更复杂的方式完成。例如,您可以实现一个相似性度量,可以将所有这些识别为可能的同义词:
IBM
ibm
I B M
I. B. M.
I.B.M.
然而,在增加运行时间(更不用说开发工作)和增加实用程序之间存在权衡。
我的一般经验也是,随着启发式算法变得越来越复杂,它们的失败模式变得更加神秘和离奇。至少,当人们有问题时,人们很容易理解并将字母转换为标准大小写的技术。
键入时,您必须打开大写锁定以使所有内容都大写。人们很懒惰。