1

我想到了这个问题,因为我正在做一个项目,我创建了以下方法:

private void GoToFirstPage() {
    CurrentPage = 0;
}

我在一些与分页相关的方法中使用它。

这是个好主意吗?或者我应该CurrentPage = 0;在所有方法调用中调用吗?

4

1 回答 1

2

首先,您更改 的实现的可能性有多大GoToFirstPage?例如,如果这是一个 PDF 查看器,下一个版本可能具有连续滚动模式以及逐页模式,因此您将保留 CurrentTopLine 而不是 CurrentPage?在这种情况下,如果您有CurrentPage = 0;15 个不同的地方,并且您必须将其中的 15 个更改为if (PageMode) CurrentPage = 0; else CurrentTopLine = 0;,那么这是愚蠢错误潜入您的代码的绝佳机会,因为您忘记了其中的 1 个并且只更改了 14 个。如果你有一种方法,你只需要在一个地方改变东西。

在某些情况下,为方法命名会为您提供一些额外的文档(与注释不同,它不会随着事情的变化而变得陈旧,因为您必须保持它是最新的,否则事情将无法编译)。在这种情况下,我认为这无关紧要,因为CurrentPage = 0;它与 . 一样具有可读性和意义GoToFirstPage();,但在许多情况下,确实如此。

有时,性能是一个问题。毕竟,函数调用不是免费的。但在这种情况下,很难想象它会变得重要。这不像你会GoToFirstPage在一个紧密的循环中调用数百万次,对吧?

那么,如果这些都不相关,您如何决定?最重要的因素可能是更符合您的语言、代码库等的习惯。在典型的 Java 程序中,类似的函数GoToFirstPage();可以完美地融入其中,甚至可以作为SetCurrentPage(0);另一层封装来实现。在典型的 Python 程序中,该current_page属性甚至是该类的公共 API 的一部分。两者都不一定好或坏,风格的一致性对于保持代码的可读性很重要。

于 2013-02-01T07:44:06.053 回答