在具有大量参数的现有代码库中重构方法

use*_*536 6 methods arguments

我继承了现有的代码库,其中"功能"如下:

  • 巨大的单片类(字面上)100个成员变量和方法,一个用于页面(呃屏幕)
  • 具有大量参数的公共和私有方法.

我正在尝试清理和重构代码,让它比我发现的更好一些.所以我的问题

  • 值得(或者你)重构方法有10个左右的参数,以便它们更具可读性?
  • 关于方法应该有多长时间的最佳实践?你经常保留多久?
  • 单片类坏吗?

Ree*_*sey 6

值得(或者你)重构方法有10个左右的参数,以便它们更具可读性?

是的,这是值得的.通常更重要的是重构非"合理"的方法,而不是那些已经很好,简短且具有小参数列表的方法.

通常,如果你有很多参数,那是因为一个方法做得太多 - 很可能,它应该是它自己的一个类,而不是一个方法.

话虽如此,在需要许多参数的情况下,最好将参数封装到单个类(即:SpecificAlgorithmOptions)中,并传递该类的一个实例.这样,您可以提供干净的默认值,并且非常明显哪些方法是必需的而不是可选的(基于构造选项类所需的内容).

关于方法应该有多长时间的最佳实践?你经常保留多久?

方法应尽可能短.它应该有一个目的,并尽可能用于一项任务.如果可以将它分成单独的方法,其中每个方法都是一个真实的,定性的"任务",那么在重构时就这样做.

单片类坏吗?

是.

  • 根据经验,如果你不能在不使用单词"and"的情况下描述一个类或方法在单个句子中的作用,那么应该拆分该类或方法. (3认同)