关闭。这个问题是基于意见的。它目前不接受答案。**想改进这个问题吗?**更新这个问题,这样就可以通过编辑这篇文章用事实和引文来回答。
上个月关门了。改进这个问题初始化示例变量(子变量)哪种方式更好?在构造函数中初始化它?
cgfeq70w1#
如果数组的长度是恒定的(即始终为26),那么初始化它的时间并不重要。在构造函数体中初始化它会稍微推迟初始化(示例变量初始化表达式发生在构造函数体执行之前),但是在长度不变的情况下,这没有什么区别。另一方面,如果数组的长度作为参数传递给构造函数,则必须在构造函数体中对其进行初始化:
class TrieNode { private TrieNode[] children; public TrieNode (int len) { this.children = new TrieNode[len]; } }
jvidinwx2#
如果类中没有其他构造函数(默认构造函数除外),那么任何方法都可以。但是如果还有其他构造函数,并且当使用这些构造函数时,这个变量在类的任何方法中都不需要,那么这个类可能需要重构。因此,这两种方法没有太大区别,将其保持在类级声明将保持代码更干净,并删除不必要的默认承包商声明。附加信息:避免在代码中使用幻数,如26。给它一个合理的名字,这样其他开发者就会明白为什么只有26个孩子。如果可以更改,那么可以考虑使用参数化构造函数将大小作为输入参数传递。
2条答案
按热度按时间cgfeq70w1#
如果数组的长度是恒定的(即始终为26),那么初始化它的时间并不重要。在构造函数体中初始化它会稍微推迟初始化(示例变量初始化表达式发生在构造函数体执行之前),但是在长度不变的情况下,这没有什么区别。
另一方面,如果数组的长度作为参数传递给构造函数,则必须在构造函数体中对其进行初始化:
jvidinwx2#
如果类中没有其他构造函数(默认构造函数除外),那么任何方法都可以。
但是如果还有其他构造函数,并且当使用这些构造函数时,这个变量在类的任何方法中都不需要,那么这个类可能需要重构。
因此,这两种方法没有太大区别,将其保持在类级声明将保持代码更干净,并删除不必要的默认承包商声明。
附加信息:避免在代码中使用幻数,如26。给它一个合理的名字,这样其他开发者就会明白为什么只有26个孩子。如果可以更改,那么可以考虑使用参数化构造函数将大小作为输入参数传递。