gpt4 book ai didi

class - 比 "isThis()"更好的方法名称

转载 作者:行者123 更新时间:2023-12-03 18:16:00 24 4
gpt4 key购买 nike

我有一个类叫 OAuthLogin支持通过 OAuth 登录用户。该网站还支持“传统”登录过程,无需 OAuth。这两个流程共享很多代码,有时我需要区分它们。

我有一个静态方法OAuthLogin::isThis()无论当前登录流程是否为 OAuth(通过检查 session 变量和 URL 参数),它都会返回一个 bool 值。

我不喜欢方法的名称,但我想不出更好的方法 - 我想这是一个常见的概念,因此应该有某种模式。

我不喜欢 OAuthLogin::isThisOAuthLogin()因为是多余的。

我想避免 Login::isThisOAuth因为我想将所有代码保留在 OAuthLogin类(class)。

我应该去OAuthLogin::is() ?还有什么比这更好的吗?

谢谢。

最佳答案

您的 OAuthLogin 类应该只有 one responsibility ,即允许用户使用 OAuth 登录;此类应该不了解“传统”登录过程。看到此类名称的人(例如 StackOverflow 用户!)将假定此类仅负责使用 OAuth 的登录功能。

由于您的两个登录进程共享大量代码,因此您确实应该重构您的代码,以便您拥有一个具有公共(public)代码的基类,然后为 OAuth 和传统登录提供单独的类,它们都将从基类继承。当您的代码执行时,您应该实例化适合该用户 session 的登录类。

此外,由于您的 OAuthLogin 类是静态的,那么它将如何处理多个用户同时登录?因此,另一个很好的理由来重构它,使其不是静态的。

如果您绝对无法重构,那么在没有看到您的代码的情况下,听起来好像 OAuthLogin 类真的是 mediator即它封装了一组类如何交互(在这种情况下是您的登录类)。因此,您可以将其称为“LoginMediator”,而不是使用名称“OAuthLogin”。然后,您可以拥有以下属性:

LoginMediator.isOauthLogin


LoginMediator.isTraditionalLogin

区分中介用于该特定 session 的不同类型的登录。尽管不使用“传统”一词,而是将其替换为您实际使用的其他身份验证机制(例如 HTTP 基本身份验证、HTTP 摘要身份验证、HTTPS 客户端身份验证等)

请注意我如何选择 intention-revealing这些属性的名称。如果一个陌生人要阅读您的代码(例如我!),他们将很难仅从方法签名中理解“is()”和“isThis()”的目的。

但是,从长远来看,我确实建议您重构代码,以便拥有具有离散职责的类,因为您会发现命名方法会因此变得容易得多。

关于class - 比 "isThis()"更好的方法名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19788311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com