【发布时间】:2021-04-16 06:42:57
【问题描述】:
伙计们。我现在正面临一个难以决定的情况(在我的脑海中),当我设计我的算法来过滤和检查某个事物时,比如 CallCenter,有一个针对某个电话号码或某个区域的白名单并返回特定类型的白名单CallCenter 应用在他们身上。是电话号码白名单,还是某个区域,甚至是区域和电话的组合(特定目标)。
顺便说一句,在我的设计中,呼叫中心将只有一种类型的白名单(“byPhone”、“byArea”或“byAreaAndPhone”)我的方法是这样的:
//// I use call center one to many relationship to whitelist directly to get the whitelists
private void validateWhitelistOfCallCenter(CallCenter callCenter, String phoneNumber, String areaName) {
if (callCenter.getWhitelists().isEmpty()) return;
String typeWhitelist
for (CallCenterWhitelist whitelist : callCenter.getWhitelists()) {
typeWhitelist = whitelist.getType();
if (WHITELIST_BY_PHONE_NUMBER.equals(whitelist.getType())
&& whitelist.getCustomerPhoneNumber().equals(phoneNumber)) return;
if (WHITELIST_BY_AREA.equals(whitelist.getType())
&& whitelist.getAreaName().equals(areaName)) return;
if (WHITELIST_BY_PHONE_NUMBER_AND_AREA.equals(whitelist.getType())
&& whitelist.getAreaName().equals(areaName)
&& whitelist.getCustomerPhoneNumber().equals(phoneNumber)) return;
}
if (WHITELIST_BY_PHONE_NUMBER.equals(errorType))
throw CallCenterErrors.customerPhoneIsNotInWhitelist(phoneNumber);
if (WHITELIST_BY_AREA.equals(errorType),
throw CallCenterErrors.customerAreaIsNotInWhitelist(areaName);
if (WHITELIST_BY_PHONE_NUMBER_AND_AREA.equals(errorType),
throw CallCenterErrors.customerAreaAndPhoneIsNotInWhitelist(phoneNumber, areaName);
}
/// note: each return means the customer is in whitelist or the callcenter doesn't use anywhitelist kind of things
然后,在我的脑海中,我已经觉得当开发变得更大时会很奇怪,比如说呼叫中心白名单将有更多类型的白名单,那么最后一个方法执行的 if 也会被缩放,并且循环内的 if 语句也会缩放。任何人都可以帮助我决定在我制作它时是否足够好,或者我应该将验证分开以成为每种类型白名单上的一对一验证?起初我决定不分离函数,因为 CallCenter 只会包含一种类型的白名单,但无论白名单中的类型条件如何,错误返回都会始终检查类型。
**注意:顺便说一句,我已经为这种情况设计了一个黑名单,黑名单有相反的方法,可以更容易地应用错误规范,因为每当在循环中发现的东西都会抛出错误,这意味着错误类型是与我发现的与规范相同的确切元素相同(如 byPhone 或 byArea)。
【问题讨论】:
-
仅供参考,您可能想更改您在此处使用的条款,白名单和黑名单正在从许多主要公司代码库中删除。
-
@CheeseFerret 哦,我没有更新当前的内容,为什么现在要删除它们?你能帮我找到这里的方向吗
-
当然,这里有一些最近的链接techspot.com/news/…beebom.com/google-blacklist-whitelist-removed-code。我希望这些对您有所帮助。
标签: java spring performance architecture clean-architecture