通过观察各种 Android 应用程序(不是我编写的)的源代码,我注意到将某些代码段放入自己的方法中的模式,尽管实际上没有任何代码重用,因为这些方法在整个过程中只被调用一次应用。
到目前为止,我有一条经验法则,即如果一段代码在应用程序代码中使用了两次或多次,那么它应该有自己的方法,仅仅是为了消除代码冗余。
但是看到那些整齐地分解成自己的方法(和自己的方法调用开销)的代码块,我开始可能我错过了一些东西。
除了文档目的之外,还有什么其他原因可以证明只将 4 行代码(仅调用一次!)放入自己的方法中?
通过观察各种 Android 应用程序(不是我编写的)的源代码,我注意到将某些代码段放入自己的方法中的模式,尽管实际上没有任何代码重用,因为这些方法在整个过程中只被调用一次应用。
到目前为止,我有一条经验法则,即如果一段代码在应用程序代码中使用了两次或多次,那么它应该有自己的方法,仅仅是为了消除代码冗余。
但是看到那些整齐地分解成自己的方法(和自己的方法调用开销)的代码块,我开始可能我错过了一些东西。
除了文档目的之外,还有什么其他原因可以证明只将 4 行代码(仅调用一次!)放入自己的方法中?
入手的三个理由:
当然,这可能是过度的,但它绝对是有用的。
我能想到几个原因,但诚然有一些重叠:
当然,所有这些都依赖于假设这 4 行代码是相关的,并且执行单个功能。我发现一个好的经验法则是:如果你想不出它的名字,它可能不应该是一种方法。
文档和可读性是将代码放入方法的很好理由,即使这些方法只会执行一次。某些应用程序在启动时可能需要完成一堆逻辑步骤……您是否宁愿将所有代码混杂在一个 init 方法中,还是使用一个调用正确命名的方法的 init 方法?
它有望促进更简洁的代码,并且应该更容易测试。
您提到了方法调用开销,但如果该方法只调用一次,那应该无关紧要。
请参阅为Compose 方法重构提供的理由。
可读性是我这种编码行为的重要原因。
如果我盯着一个长代码清单,寻找一个特定的过程或一段代码,那么该特定过程或一段代码的位置可能不会立即显而易见。
为什么我们要按段落和章节来写书?为什么歌曲有节/节、合唱和桥段?因为在小的、高度具体的块中更容易接受一个大想法。
就像软件开发一样,要驱动高效、干净的代码,尽可能快速优雅地完成工作。它还必须被要维护它的人阅读。
至少,这是我的解释。
Java VM 通常对符合内联条件的方法的最大大小有限制。可以这么说,提取不经常调用的代码可能会使车轮润滑。你能举出例子吗?