我是一名大一的计算机科学专业学生。我们目前正在使用Java进行编程,我经常尝试将我的程序分解成命名良好的方法,以便我的主方法逻辑尽可能接近伪代码。
但问题在于,我发现自己经常写了很多小的私有方法,感觉可能有些过头了。在决定是否进一步分解问题时,有没有什么好的经验法则或风格上的考虑?
我是一名大一的计算机科学专业学生。我们目前正在使用Java进行编程,我经常尝试将我的程序分解成命名良好的方法,以便我的主方法逻辑尽可能接近伪代码。
但问题在于,我发现自己经常写了很多小的私有方法,感觉可能有些过头了。在决定是否进一步分解问题时,有没有什么好的经验法则或风格上的考虑?
经验法则是 单一职责原则。每个代码单元应该只负责一个事情。这适用于方法以及类。如果你可以给你的许多私有方法中的每一个都取一个简单、精准的名字,那么它就是没问题的。但是如果你只能将其描述为“大型操作”的一部分,那么它可能不应该成为单独的方法。
但从你的问题来看,似乎你已经做得很好了。
大多数新开发人员会采用另一种方式 - 包含多个职责的巨大函数。与此相比,您的情况无疑更可取!
创建许多小方法几乎没有负面影响,但有很多优势!
短小的方法:
考虑到这一点,我建议您毫不留情地将重复内容重构为小方法。您的IDE将提供提取方法的重构工具以加快速度。
我认为,你的目标是追求可读的伪代码,总体上是一个好的想法。很多代码不会像这样编写,但它可以真正帮助可读性和“代码是文档”的概念。
有些人会谈论方法调用的性能开销,但只有在非常罕见的情况下才会对您构成问题。
编辑-其他帖子中提到了单一职责原则。尽管这是一个很好的指导方针,但我个人认为这超出了这个范围。即使某个代码片段具有明确定义的一个职责,也可能会分解以实现重用和可读性。
我的理念是将代码分解成原子化的逻辑单元,每个单元只处理一个任务。通常我会为其命名,并将其放入一个方法中,并给该方法命名。