拥有只有一行的方法是否有意义?

时间:2013-02-01 07:28:52

标签: methods

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

private void GoToFirstPage() {
    CurrentPage = 0;
}

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

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

1 个答案:

答案 0 :(得分:2)

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

在某些情况下,拥有该方法的名称会为您提供一些额外的文档(与注释不同,它不会因为事情发生变化而变得陈旧,因为您必须保持最新状态或不会编译) 。在这种情况下,我认为这不相关,因为CurrentPage = 0;GoToFirstPage();一样可读且有意义,但在很多情况下,它是。{/ p>

偶尔,性能是一个问题。毕竟,函数调用不是免费的。但在这种情况下,很难想象它可能无关紧要。这不像是你要在紧密的循环中拨打GoToFirstPage数百万次,对吗?

所以,如果这些都不相关,你如何决定?最重要的因素可能是你的语言,代码库等更加惯用。在典型的Java程序中,像GoToFirstPage();这样的函数完全适合,甚至可以作为SetCurrentPage(0);实现另一个函数。封装层。在典型的Python程序中,current_page属性甚至是该类的公共API的一部分。这两者都不一定是坏的或好的,风格的一致性对于保持代码可读性很重要。