网站上如何做跳转页面深圳赶集同城网站建设
web/
2025/10/4 6:27:05/
文章来源:
网站上如何做跳转页面,深圳赶集同城网站建设,做网站开始要注意什么,通化工程建设信息网站jquery 延迟加载代码您见过那些具有许多属性的巨大物体吗#xff1f; 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载#xff1f; 我敢打赌你有这种令人怀疑的快乐。 今天#xff0c;我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道#x… jquery 延迟加载代码 您见过那些具有许多属性的巨大物体吗 这些域对象由于不希望从数据库检索太多信息而在其中使用延迟加载 我敢打赌你有这种令人怀疑的快乐。 今天我想与您分享我对它们的印象- 使用延迟加载应被视为一种代码味道 让我解释一下自己 延迟加载意味着有时您不需要某个对象的某些属性。 这些属性将在不同的上下文中是必需的。 这是否意味着您要根据上下文构建不同的对象 使用此对象的功能肯定知道太多。 它知道对象的API并且此API还包含需要未加载属性的方法。 很好不是吗 您必须记住每个地方需要什么不需要什么… …而且更糟糕的是您必须记住您可能使用的功能以及特定位置不支持的方法。 如果还不够请允许我详细说明。 延迟加载如何工作 简而言之 延迟加载允许您在加载父级时不加载子级。 仅当您明确要求时才加载它们。 它是如何工作的 让我们看一个简单的例子 class User {private final Name name;OneToMany(fetch FetchType.LAZY)private ListRole roles;OneToMany(fetch FetchType.LAZY)private ListSubscription subscriptions;// Some more attributes and methods
} 此类的定义告诉您什么 FetchType.LAZY对我们意味着什么 这为我们提供了包含用户角色和订阅的列表的信息除非我们明确要求此类数据否则这些数据不会被填充。 什么是有界上下文 受限上下文是域驱动开发中的主要模式之一。 通过将大型域模型划分为不同的上下文它可以帮助您使用大型域模型。 由于这个原因您的域对象变得更小应用程序的业务逻辑变得更容易理解。 但是...为什么呢 在前面的段落中我写了User类的定义告诉我们的内容。 到现在为止一切都与机制有关。 现在我们可以走得更远。 让我们再来看一下我们的课 class User {private final Name name;OneToMany(fetch FetchType.LAZY)private ListRole roles;OneToMany(fetch FetchType.LAZY)private ListSubscription subscriptions;// Some more attributes and methods
} 除了已经提到的内容您能告诉我更多有关此对象的信息吗 我们知道我们正在使用其对象在可能需要但不一定需要角色的地方使用的类。 可能需要订阅但不一定要订阅的地方。 名称始终是必需的。 我们知道在我们的应用程序/环境中有一些功能/位置需要这些属性而在某些地方这些属性没有用处。 但是……我们必须遍历代码才能找到那些地方。 这需要时间和精力。 不幸的是我们还有机会错过一些地方。 我们所知道的...我们所不知道的... 知道在哪里和需要什么会更好吗 当然可以 问题是如何实现 让我们对示例进行简短分析 class User {private final Name name;OneToMany(fetch FetchType.LAZY)private ListRole roles;OneToMany(fetch FetchType.LAZY)private ListSubscription subscriptions;// Some more attributes and methods
} 我们已经知道一些事情 名称始终是必需的。 有时我们需要角色。 有时我们需要订阅。 根据这些信息我们可以添加另一件事– 我们知道我们并不总是需要所有这些信息 。 也许听起来有些琐碎但这也很重要。 这就是信息。 现在是未知的时候了 在哪里我们既需要角色又需要订阅 在不同的地方需要角色和订阅吗 有没有我们不需要的地方 是否取决于上下文需要什么属性 未知数的问题在于我们必须遍历代码才能找到答案。 但这还不是问题的终点。 当您最终找到这些位置时没有方法或变量或任何可重命名的信息不会在一段时间内丢失此信息。 下次您将不得不重复该工作。 让我们改进代码 由于上一段中列出了未知数因此更改现有代码真正的代码和我们正在使用的代码并不容易。 这就是为什么我建议您在考虑延迟加载之后立即进行此更改。 这是最便宜的改进的正确时机。 好的但是我们如何才能改进示例中的代码 首先要做的是找到未知数的答案。 没有这些答案我们就无法前进。 在我们的案例中我假设我们认识到三种不同的情况 身份验证和授权是我们需要用户名及其角色的地方。 在我们处理报告发送的地方我们需要用户名及其订阅。 在我们应用程序的其他区域我们既不需要角色也不需要订阅。 现在我们可以重构User类并将其拆分为更易于理解的内容 class AuthUser {private final Name name;private ListRole roles;// Some more attributes and methods
}class ReportUser {private final Name name;private ListSubscription subscriptions;// Some more attributes and methods
}class ApplicationUser {private final Name name;// Some more attributes and methods
} 现在我们有了三个类而不是一个但是我们的代码中也有更多信息。 我们无需遍历代码即可找出所需内容和位置。 打开类的定义就足够了 下一步是什么 不幸的是要在您的域中显示状态您必须付出很多努力。 为什么 主要是因为未知。 应用程序越大获取所有信息的难度就越大。 这就是为什么我鼓励您在考虑将延迟加载作为解决方案之后立即拆分类。 如果您的域中已经有延迟加载的引用则应仅重构已经使用的部分。 您将最大程度地减少更改的风险和进行更改所需的精力。 无论如何代码将变得更具描述性。 祝好运 翻译自: https://www.javacodegeeks.com/2017/01/lazy-loading-code-smell.htmljquery 延迟加载代码
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/86640.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!