尽管在语法上不正确,但是在编写函数,变量等的标识符时,是否将“ s”简单地附加到以Y结尾的复数单词是否有意义?我这样做的原因是,如果您需要查找和替换,例如,用“供应商”替换“公司”,则“公司”将匹配单数和复数形式(“ company”和“ company s”),而如果复数的拼写正确,则必须进行两次单独的搜索。
尽管在语法上不正确,但是在编写函数,变量等的标识符时,是否将“ s”简单地附加到以Y结尾的复数单词是否有意义?我这样做的原因是,如果您需要查找和替换,例如,用“供应商”替换“公司”,则“公司”将匹配单数和复数形式(“ company”和“ company s”),而如果复数的拼写正确,则必须进行两次单独的搜索。
Answers:
任何此类搜索和替换都应格外小心,并且应手动检查每个更改,例如,避免注释中的“陪伴”成为贵公司/供应商更改的“陪伴”。因此,与检查和批准每个变更所花费的时间相比,对“公司”和“公司”的两次单独搜索不应产生可观的开销。
因此,拼写错误的单词仅能实现一次搜索就带来了负面的外观,使它看起来比原来需要的更难阅读,而没有提供任何明显的好处。
我假设您正在谈论重命名源代码文件。对于当今的IDE,应该始终使用IDE的重构工具来完成此操作。如果您的IDE没有此功能,请考虑切换到另一个IDE。大多数IDE重构工具还保留重构的历史记录,如果您不喜欢重构的结果,则可以快速“撤消”。使用搜索/替换,您可能无法撤消整个更改集(除非您可以使用版本控制工具并恢复为先前提交的版本)。而且,使用重构工具可以避免因疏忽而更改您不打算更改的内容。
是! 是! 是! 这样做是很有意义的。我已经做了很多年了。
披露1:英语不是我的母语。
披露2:我的英语语法知识要比普通母语人士好得多。
披露3:在与人交流时,我是纳粹分子。
现在,这些公开内容已不复存在,让我指出,英语语法在代码中没有地位。您会看到,这就是为什么它被称为代码而非prose的原因。出于可读性的考虑,它应该与人类所理解的语言有些相似,但是除此之外,我们最需要的代码不是散文的质量。这是其他更多的技术特质,例如精确度,明确性和简洁性。这就是为什么C语法if( x != y ) y++;
是很多最好的IF X IS NOT EQUAL TO Y THEN ADD 1 TO Y END-IF.
Cobol语言的语法。所谓的理解自然语言的编译器的合意性是一个谬误,不要相信我,请看ol'Edsger对此有何评论:Edsger W. Dijkstra,论“自然语言编程”的愚蠢。
另一个重要的质量是标识符的可计算性。Color
始终可以通过调用的方法读取并通过调用的方法getColor()
写入属性的事实setColor()
至关重要。这些标识符可以从属性名称中计算得出,因此您不必内心知道它们。如果程序员要选择getColor()
一方面调用的一对方法,但colorize()
另一方面,他们的同事将正确地考虑这种破坏行为。这就是标识符可计算性的重要性。
此外,可以编写可以计算这些名称的编程工具(实际上已经编写了很多工具,例如Hibernate)。如果没有标识符名称的可计算性,则您将不得不使用其他语法(例如,在Hibernate中使用额外的注释)来为每个工具精确指定如何创建每个标识符名称,或者精确地为每个实体指定哪个临时名称。
因此,标识符的可计算性很重要,而与此同时英语语法则是无关紧要的(因为我们没有进行自然语言编程),因此能够通过始终在名称的后面附加“ s”来计算实体集合的名称一个实例的实例是完全有道理的,不要介意它侵犯了大多数人(包括我的)对英语的敏感性。
不管我们是否喜欢,这都是未来的趋势。地球上大多数程序员的母语已经不再是英语,并且朝着这个方向发展的趋势非常强烈。(此外,我什至不愿在这样的建议上花钱:英语是目前在美国工作的大多数程序员的母语。)这些人在很大程度上试图计算姓名从“ company”的单个实例的名称中获取一个集合,只需添加“ s”,而“ companies”的形式甚至都不会引起他们的注意。对于世界上越来越大的程序员比例而言,了解英语的特殊性不会给他们的工作带来任何价值,只会使工作变得更加困难。
Companys
时候它应该是Companies
。毕竟,我们通常编写的代码的全部要点实际上是使其更接近自然语言。