重构业务规则,功能命名,宽度,高度,位置X& ÿ

时间:2017-07-18 13:08:52

标签: refactoring naming-conventions naming business-logic

我正在重构一些业务规则函数,以提供更通用的函数版本。

我正在重构的功能是:

DetermineWindowWidth
DetermineWindowHeight
DetermineWindowPositionX
DetermineWindowPositionY

所有这些都进行字符串解析,因为它是一个字符串解析业务规则引擎。

我的问题是新重构的函数会有什么好名字? 显然,我想避开像以下这样的函数名称:

DetermineWindowWidthHeightPositionXPositionY

我的意思是,这样可行,但它似乎不必要地长,当它可能是这样的: DetermineWindowMoniker或类似的东西。

功能目标:解析输入字符串,如1280x1024或200,100,并返回第一个或第二个数字。用例是用于Web浏览器窗口的数据驱动测试自动化,但这应该与答案无关。

问题目标:我有代码来执行此操作,所以我的问题不是代码,而只是函数名称。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

细节太少,你应该至少指定参数和函数的返回值。

  • 我是否正确理解您使用格式 N x N 的字符串作为大小和 N N 对于职位?
  • 并且这个泛型函数必须解析两个(没有别的),并根据函数的参数返回第一个或第二个部分?
  • 然后你会保留各种DetermineWindow*函数,但是让它们都调用这个泛型函数?

如果是这样的话:

在不知道通用功能具有哪些参数的情况下,它更难以提供帮助,但很可能无法给它一个简单的名称。
并非所有批次的代码都可以用简单的名称来描述。

如果你想拥有清晰的名字,你很可能需要使用不同的结构。这是一个想法,用伪代码:

ParseSize(string, outWidth, outHeight) {
    ParsePair(string, "x", outWidht, outHeight)
}

ParsePosition(string, outX, outY) {
    ParsePair(string, ",", outX, outY)
}

ParsePair(string, separator, outFirstItem, outSecondItem) {
    ...
}

各种DetermineWindow会调用ParseSizeParsePosition 您也可以直接使用ParsePair,但我认为将两个其他功能放在中间是更清晰的。

物件

请注意,您可能通过使用对象而不是字符串(SizePosition,而且可能还有Pair)来获得更清晰的代码。
ParsePair代码(适当调整)将包含在构造函数或工厂方法中,该方法为您提供字符串中的对。

---

当然你可以给各种函数,对象和参数赋予其他名称,在这里我使用了第一个我想到的。

答案 1 :(得分:0)

似乎这个问题答案提供了一个很好的起点来回答这个问题: Appropriate name for container of position, size, angle

www.thesaurus.com上搜索“Property”会给出一些有趣的可能答案,为使用提供足够有意义的上下文:

Aspect
Character
Characteristic
Trait
Virtue
Property
Quality
Attribute
Differentia
Frame
Constituent

我认为ConstituentProperty可能是最合适的。