Function 切换函数的有用性

Function 切换函数的有用性,function,toggle,maintainability,Function,Toggle,Maintainability,编写显式执行某些操作的函数(例如HideForm/ShowForm等)是否更好 还是编写“切换”类型的函数(即切换可见性)更好 我发现切换类型的函数是awkard,因为很难通过读取代码来跟踪状态 切换类型函数在什么情况下有用?我有时在JavasScript中使用它来处理按钮(类似于复选框)和可见性,但大多数情况下我都避免使用它,因为它会使您试图处理的对象的状态更难控制 如果您不确定初始状态或无法确定初始状态,则情况可能会很糟糕(但通常可以)。无论如何,大多数情况下都不需要运行一些“simmetr

编写显式执行某些操作的函数(例如HideForm/ShowForm等)是否更好

还是编写“切换”类型的函数(即切换可见性)更好

我发现切换类型的函数是awkard,因为很难通过读取代码来跟踪状态


切换类型函数在什么情况下有用?

我有时在JavasScript中使用它来处理按钮(类似于复选框)和可见性,但大多数情况下我都避免使用它,因为它会使您试图处理的对象的状态更难控制


如果您不确定初始状态或无法确定初始状态,则情况可能会很糟糕(但通常可以)。无论如何,大多数情况下都不需要运行一些“simmetric”或简单的代码,所以我不支持。如果目标是可读性,那么就使用两个单独的函数

我们可以有:
ShowXYZ()
HideXYZ()
,或者
切换xyz(bool show)
。后者只会在代码中显示为
ToggleXYZ(true)
ToggleXYZ(false)
,这使得它们各自的功能有些不清楚。将它们作为两个独立的函数,就不会猜测函数应该做什么

我将把你问的问题扩大一点,因为还有另一个选择。为了在有两个或更多状态的情况下实现可扩展性,您可以利用您正在使用的语言(我用C#给出示例,所以是YMMV)

因此,对于C#,您可以创建一个
enum
,以提供不同的状态并增加代码的可读性。你可以有这样的东西:

SetXYZState(XYZState.Show)

这在使用相同的函数签名时非常清楚


这可能适用于只有两种状态的情况(如果以后可以扩展,甚至只有一种状态),但设置它的开销可能比简单地编写两个函数要大。

“在什么情况下切换类型函数有用?”切换类型不是指布尔值吗?您是否将使用限制为GUI?最后,难道我们不需要知道平台吗?@Smandoli-1。)在某些上下文中,它确实意味着布尔值。-2.)不,这些功能可以在任何地方使用(例如,切换位)。-3.)这些功能与平台无关。
SetXYZState(XYZState.MakeWaffles)