首页 / 知识
命名类的最佳方法是什么?
2023-04-13 20:09:00

What's the best approach to naming classes?为班级想出好的、准确的名字是出了名的困难。做对了,它使代码更加自我文档化,并为在更高抽象级别上推理代码提供了词汇表。 实现特定设计模式的类可以根据已知的模式名称(例如foofactory、foofacade)命名,而直接为域概念建模的类可以从问题域中取其名称,但是其他类呢?当我缺乏灵感,想要避免使用通用类名(如foohandler、fooprocessor、fooutils和foomanager)时,是否有类似于程序员同义词库的东西可以使用? 我将引用KentBeck的实现模式中的一些段落: 简单超类名称
限定子类名称
界面
更详细的讨论,买这本书!这是值得的!:) 总是选择myclassa,myclassb-它允许一个很好的alpha排序。 我在开玩笑! 这是一个很好的问题,也是我不久前经历的一些事情。我在工作中对代码库进行了重新组织,在放置什么和调用什么方面遇到了问题。 真正的问题? 我上课做的太多了。如果你坚持单一的责任原则,一切都会变得更好。您可以将它分解为pagehandler、pageformatter(等等),而不是一个整体的printhandler类,然后拥有一个主打印机类,它将所有内容组合在一起。 在我的重新组织中,这花了我很多时间,但是我最终放弃了很多重复的代码,使我的代码库更加合乎逻辑,并且在将一个额外的方法投入到类中之前,我学到了很多东西:d 但是,我不建议将模式名之类的东西放入类名中。类接口应该很明显(比如隐藏单例的构造函数)。如果类是为通用目的服务的,那么通用名称没有任何错误。 祝你好运! 乔希·布洛赫(Josh Bloch)关于良好的API设计的精彩演讲中有几点建议:
如果您的问题是如何命名公开的内部类,那么您可能应该将它们合并到一个更大的类中。 如果你的问题是命名一个做了很多不同事情的类,你应该考虑把它分成多个类。 如果这是一个公共API的好建议,那么它不会对任何其他类造成伤害。 如果你坚持一个名字,有时仅仅给它一个半知半解的名字,承诺以后再修改它是一个很好的策略。 不要被命名为瘫痪。是的,名字很重要,但不足以浪费大量时间。如果10分钟内你想不出一个好名字,那就继续。 如果一个好的名字没有出现在我的脑海中,我可能会质疑是否存在更深层次的问题——这门课是否有一个好的目的?如果是,命名应该非常简单。 如果你的"fooprocessor"真的处理foos,那么不要因为你已经有了barprocessor、bazprocessor等而不愿意给它取这个名字。当有疑问时,显然是最好的。其他必须阅读代码的开发人员可能没有使用与您相同的同义词库。 也就是说,对于这个特定的例子,更具体的情况不会受到伤害。""过程"是一个相当宽泛的词。例如,它真的是一个"fooupdateprocessor"(可能会变成"fooupdater")吗?你不必对命名太"有创意",但是如果你写了代码,你可能对它的作用和不作用有了相当好的了解。 最后,请记住,裸类名并不是您和代码的读者都必须继续使用的东西——通常也有名称空间在起作用。这些通常可以为读者提供足够的上下文,以便清楚地了解类的真正用途,即使它的裸名称是相当通用的。 |
最新内容
相关内容
python的调用绑定方法和非绑定方法
python的调用绑定方法和非绑定方法,代码,方法,实例,第一,培训,时计,奇数,偶数,参数,定义,在Python中,如果用实例去调用方法,这种限制就被称为PyPython网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tcPython 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很Python 之模块重载的五种方法
Python 之模块重载的五种方法,环境,培训,方法,模块,文件夹,例子,下面,内容,语句,请看,python环境准备新建一个foo文件夹,其下包含一个bar.py文提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python中字典合并的实现方法
Python中字典合并的实现方法,培训,结果,以上,版本,字典,方法,函数,下面,背景,发现,TableofContents背景Methon1:适用于Python3.5及以上版本呢M学习python的三种方法
学习python的三种方法,项目,代码,公司,时间,工程,培训,中级,初级,资料,第一,Python的用途十分广泛,不同的程序员将其用于不用的领域,不同的程序Python文件读取相关方法
Python文件读取相关方法,数据,位置,文件,中行,培训,方法,字节,内容,结果,字符串,我们知道,对文件的读取操作需要将文件中的数据加载到内存中,而Python文件读取相关方法
Python文件读取相关方法,数据,位置,文件,中行,培训,方法,字节,内容,结果,字符串,我们知道,对文件的读取操作需要将文件中的数据加载到内存中,而Python 多线程死锁问题的巧妙解决
Python 多线程死锁问题的巧妙解决方法,异常,持有,代码,情况,信息,管理,数据,包装,策略,预期,死锁死锁的原理非常简单,用一句话就可以描述完。列举Python面向对象中带双下划线的
列举Python面向对象中带双下划线的特殊方法,信息,代码,培训,对象,属性,方法,实例,字符串,里边,内容,__new__:生成实例__init__:生成实例的属性_Python自定义模块导入方法
Python自定义模块导入方法,位置,代码,培训,模块,目录,方法,语句,函数,实例,以上,Python模块是一个Python文件,以.py结尾,包括了Python对象定义