【发布时间】:2012-01-30 03:00:44
【问题描述】:
我正在阅读“清洁代码”并且无法弄清楚如何将我的一些函数(通常是构造函数)保持在 3 个参数的最大值。
我的对象通常需要大量信息才能工作——我是否应该创建一个小型构造函数,然后使用 mutator 函数为它们提供所有信息?这似乎并不比仅仅使用一个大的构造函数更好。
例如,我有一个“MovablePatch”类。它允许用户在窗口中拖动一个正方形。它需要几个参数,包括 Radius、Color、Renderer、InitialPosition 和 Visibility。目前我从我的 GUI 中收集所有这些,然后调用:
MovablePatch(int radius, Renderer* renderer, Color color, Position initial, bool visibility)
这些只是我在这堂课中需要的一些东西。谁能建议我如何打包这些信息以传递给构造函数?我没有看到任何明显的“将其分成更小的类”出现在这里。
【问题讨论】:
-
查找构建器模式。
-
您必须遵循该指南吗?否则,我几乎会说在不明显如何应用它的地方忽略它。海事组织,如果遵循准则的修改不直观,那么重构代码以确保无论如何都遵循准则通常是不值得的。对于不直观的解决方案,很容易导致更复杂(因此容易出错)的代码甚至没有更好的可读性(一个例子是上面提到的小型构造函数,然后是 mutator 函数调用或构建器模式,这两者都可以很容易地忘记设置一些值)。
-
使用简单的
struct将相关属性作为一个参数传递,从我出生之前就已经完成了,我很确定。
标签: oop design-patterns language-agnostic