问题标签 [cross-cutting-concerns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 我可以将异常处理推迟到项目结束吗?
在外部顾问的帮助下,我正在用 C# 开发一个 .NET 应用程序。我们的目标是让这个项目作为一个更好的开发过程的测试用例,特别注意最佳实践(以便产生一个合适的软件产品而不仅仅是一个程序)。
目前,我们在更关注(并浪费更多时间)开发异常处理和日志基础设施,还是开发适当的应用程序架构和功能(已经分析和建模)之间存在疑问。
所以问题是:异常处理是否必须与应用程序开发一起构建,还是我可以直接编程,当一切准备就绪时,我在程序上“应用”错误处理和异常管理代码?
这是一个相当小且易于理解的应用程序,具有易于理解的体系结构,但我们担心如果我们不能从开始(也就是说,虽然大部分代码还没有写出来)。
另一点是:我们不确定我们是否会为此使用一些框架,如果是的话,会是哪一个。因此,如果这不是基本的,我们可以开发应用程序的其余部分,然后再进行。
ember.js - ember 关注执行
您将如何在 ember 中实现关注点。例如,发送邀请功能:
- 用户有 5 个邀请(涉及获取数据的存储)
- 可从任何应用程序状态获得邀请
- 它出现在模态
- 它可以不止一个 - 因此 {{outlet modal}} 也不起作用
- 用户可以输入电子邮件并发送邀请(可用邀请数减少)
当前模式实现 - 因此无法将控制器分配给视图......
组件方法对我不起作用:内容(模型)应该由路由设置,我不知道组件中的事件对数据获取有用。
嵌套路线也不起作用 - 需要改变很多。
我找不到任何可行的方法,请帮忙。
提前致谢。
unity-container - Unity拦截方法SignatureMatchingRule无法解析
我使用 Unity (3.0) 拦截向我的应用程序添加一些横切关注点。不知何故,我无法在配置中使用 MethodSignatureMatchingRule 收到此错误消息:
我的配置:
与NamespaceMatchingRule 相同的配置可以正常工作。
我的程序集包含对
- Microsoft.Practices.EnterpriseLibrary.Common
- Microsoft.Practices.Unity
- Microsoft.Practices.Unity.Configuration
有什么建议么?
web - Dart 如何实现横切关注点?
大多数开发人员都会承认,实现横切关注点(如日志记录、审计、安全性和事务性)会对业务逻辑实现产生不利影响。这样的关注“似乎”增加了现有业务逻辑的复杂性,有时即使不是不可能也很难清楚地区分业务逻辑和横切关注实现。
Dart 是如何处理这个问题的?如果它目前没有任何机制来解决这个问题,是否有计划引入一种方法来实现横切关注点?
谢谢。
angularjs - Angular 选择退出拦截器行为
在我的角度应用程序中,我正在寻找一种方法来处理所有服务器响应错误(带有显示错误消息的弹出框),但允许控制器选择退出此行为并在调用 $ 时根据需要进行自己的错误处理资源。
我打算只使用一个拦截器并让它处理所有错误。就像是
然后从控制器,如果我打电话
并且服务器以 401 错误响应,用户将看到一条错误消息,说明他们没有被授权。
但我突然想到,有时控制器可能希望自己处理错误响应(即,在给定上下文中显示错误的更好方法)。它可以选择退出拦截器正在做什么的方式是什么?
或者,也许拦截器不是解决这个问题的方法。我还能用什么来处理这种交叉问题并允许选择退出?
php - 如何隐藏丑陋的实现细节(即 try/catch 块)?
我正在向我的 PHP 代码添加异常处理。似乎我最终得到了许多执行异常处理的稀疏块,并且它们的庞大体积隐藏了正在运行的实际生产代码。例如:
上述函数的实际有效载荷是返回 $data。如果没有异常处理,它可能是一个 2 行函数:
隐藏它的一种方法是使用Factory Method
,例如:
在这里,我在我的函数中添加了一个全新的(工厂)类和另一行代码来隐藏我的异常处理。经过适当的照顾,我认为这将起作用并且看起来仍然不错(即我可以在构造函数中初始化我的工厂,从而将其移出函数级代码,因此它可能是一个不错的选择)。但那是最好的吗?
换句话说,我的问题是——如何在我的代码中使用异常处理而不将我的实际有效负载埋入 try/catch 块的稀疏性中?
scala - 在没有全局 HttpContext 的另一个逻辑层中记录用户活动
我正在寻找一个好的解决方案来记录使用 Play/Scala/ReactiveMongo 开发的 Web 应用程序中的数据库更改。我需要知道谁改变了什么。
我有一个单独的层,即服务,所有数据访问和业务逻辑都在其中发生。所有保存/更新/删除都是通过某些方法完成的,所以我可以用 3 或 4 种方法安全地记录它们,但我需要用户身份。
我无权访问服务中的当前用户!没有全局 HttpContext 或 Request 或类似的东西可以让我获取用户身份(我认为这种获取用户身份的方式当然是不正确的)。
我有一个解决方案:
为所有具有副作用的服务方法添加一个隐式参数(更改数据库)并将用户身份传递给它们。
当我包装默认请求时,它可以扩展 UserIdentity 特征,以便隐式请求与隐式参数匹配。
最后,动作可以使用这样的服务:
不好的是我必须为这些服务方法添加隐式参数。是否有另一种解决方案可以在不污染方法签名的情况下获取当前用户。
design-patterns - 横切关注点示例
什么是 a 的好例子cross-cutting concern
?维基百科页面上的医疗记录示例对我来说似乎不完整。
特别是从这个例子中,为什么日志会导致代码重复(分散)?(除了诸如log("....")
无处不在的简单调用,这似乎没什么大不了的)。
acore concern
和 a 和有什么不一样cross-cutting concern
?
我的最终目标是更好地理解 AOP。
c# - 如何正确地将横切关注点应用于由 AbstractFactory 创建的类?
我将 IOC 容器配置为添加横切关注点,但这些关注点并未添加到 AbstractFactories 构造的类中。
拦截器在配置文件中定义为:
LoggingInterceptor 已为 IApplication 和 IUserStore 定义。但是,如果您运行代码,您可以看到 IUserStore 没有被拦截(因为它没有通过 Unity 解析)。
这是上述程序的输出:
如何修改此代码,以便将拦截器也应用于工厂构造的对象?
ios - iOS 横切关注点
我正在开发一个 Swift 应用程序,它允许用户保存有关其个人资料的各种设置。在我的代码中,有时了解这些设置/首选项对于应用程序的业务逻辑很重要。其中之一是用户工作的地方(他们的工作,(它是 sqllite 数据库中的一行,以 ID 作为主键)。允许用户在任何给定时间在应用程序中选择一个(并且只有一个) . 把它想象成个人资料——他们可以做很多工作,但只能选择一个。
以下是了解工作场所标识配置文件很重要的场景:
- 在我的 sqllite 数据库中,根据当前选择的工作 ID(不是数据库中的 ID,而是他们当前选择的 ID)检索工作/班次信息。我将其传递给我的查询。
- 在 NSDate 扩展函数中,当我去确定一些关于他们的开始日期的事情时,我需要检索他们当前选择的配置文件,并将其用于计算。
- 当我想显示/隐藏某些字段时,在特定的视图模型中。
- 在警报视图上显示与他们当前工作场所相关的内容。
现在我认为快速而肮脏的方法是在实用程序类中为您的 nsuserdefaults 创建一个包装类。当然,您的所有信息都存储在 sqllite 中,但您当前选择的应用程序偏好设置在 nsuserdefaults 中,因为我可以更改它(它会更改)。这将与我的其他横切关注点(例如日志记录/错误处理)平行,我可以在其中使用类似的实用程序类来完成我的所有工作。
我可能会从我的应用程序的每一层调用这个帮助程序/实用程序类这一事实似乎是一个典型的危险信号,你不会这样做。无论是日志记录,还是获取信息的用户服务。
我很想知道其他人在这种情况下在做什么。当您需要整个应用程序中的 nsuserdefaults 时,答案是“谁在乎,只需创建一个实用程序类并在需要的地方调用它”?或者是否有其他人在精心设计的 iOS 应用程序中遵循的最佳实践?我知道 AOP 是人们倾向于推荐的东西。这在iOS中有位置吗?
非常感谢stackoverflow :)