小编goo*_*gic的帖子

门面模式与SRP

在经典的Facade模式中,单个对象通常为更复杂的东西提供简化的界面.

正如四人帮所说的那样(尽管接近"官方"......):

Facade(185)为子系统中的一组接口提供统一接口.Facade定义了一个更高级别的接口,使子系统更易于使用.

...一个外观只是抽象出子系统对象的接口,使它们更容易使用; 它没有定义任何新功能,子系统类也不知道它.

或者,正如Unmesh将其放在/sf/answers/366973351/中:

Facade保护用户免受系统的复杂细节的影响,并为他们提供易于使用的简化视图.它还将使用系统的代码与子系统的细节分离,使以后更容易修改系统.

单一责任原则告诉我们

一个类或模块应该只有一个改变的理由.

Per Bob叔叔(http://en.m.wikipedia.org/wiki/Single_responsibility_principle)

鉴于Facade在设计上可以保护用户免受众多"改变的原因"的影响,这两个想法如何协同工作?Facade是否有与其实现所依赖的子系统数量一样多的理由进行更改?

oop design-patterns single-responsibility-principle facade solid-principles

6
推荐指数
2
解决办法
1025
查看次数

将 stylelint 限制为仅 css 和 scss 文件

我正在尝试将stylelint配置为仅对我的 CSS 和/或 SCSS 文件进行 lint。我在延长stylelint-config-recommended但默认情况下它似乎正在处理其他文件的负载以及我想要 lint 的 .css 和 .scss 文件。

我不想包含的文件示例:

  • .js
  • .cshtml

CLI 输出示例

debug.log
 1:67  ×  Unknown word   CssSyntaxError

local.log
 21:21  ×  Missed semicolon   CssSyntaxError

package-lock.json
 3:21  ×  Missed semicolon   CssSyntaxError

package.json
 3:21  ×  Missed semicolon   CssSyntaxError

personal.json
 3:40  ×  Missed semicolon   CssSyntaxError

Program.cs
 1:1  ×  Unknown word   CssSyntaxError

README.md
 11:51  ×  Unclosed bracket   CssSyntaxError

reviewers.csproj
 1:1  ×  Unknown word   CssSyntaxError

reviewers.csproj.user
 1:1  ×  Unknown word   CssSyntaxError

reviewers.sln
 14:4  × …
Run Code Online (Sandbox Code Playgroud)

css stylelint

6
推荐指数
1
解决办法
1209
查看次数

Selenium Firefox打开超时

使用Windows 2008,C#,Firefox 3.5.1,Selenium RC(v1.0.1)

当它工作时,此代码执行非常快,页面加载在.5秒内.

但是,在3-5次迭代后,会话似乎总是失败.open命令将导致生成一个窗口,但不会加载任何页面.最终返回超时异常.页面实际上没有超时.相反,就好像URL的请求从未到达浏览器窗口.

class Program
    {
        static void Main(string[] args)
        {
            for (int i = 0; i < 10; i++)
            {
                var s = new DefaultSelenium("localhost", 4444, "firefox", "http://my.server");
                s.Start();
                s.SetSpeed("300");
                s.Open("/");
                s.WaitForPageToLoad("30000");
                s.Type("//input[contains(@id, '_username')]", "my.test");
                s.Type("//input[contains(@id, '_password')]", "password");
                s.Stop();

            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

firefox selenium

5
推荐指数
1
解决办法
9852
查看次数

如何从浏览器登录 GCP Cloud Logging

我希望能够捕获客户端代码中的日志,并将其反馈给 GCP 云日志记录。

然而,似乎没有用于(浏览器)JavaScript 的客户端库。https://cloud.google.com/logging/docs/reference/libraries列出了各种其他运行时(包括node.js)。

最简单的方法是什么?

javascript browser logging google-cloud-platform

5
推荐指数
0
解决办法
406
查看次数

NUnit测试:如果抛出非预期的异常,是否可以保证IDisposable?

如果我在NUnit测试的TestFixtureSetup期间创建一个IDisposable,并且测试抛出一个意外的异常(例如外部资源失败),那么IDisposable的Dispose()会被调用吗?

添加>>
如果没有,NUnit是否可以保证执行TestFixtureTearDown或其他可用于清理的地方?

nunit idisposable exception

4
推荐指数
1
解决办法
885
查看次数

如何从 Azure Function (HTTP) 返回数据流

我需要从 Azure 函数进行一系列数据库调用,并在结果(文本块)可用时将结果返回给 http 调用方。这可能在一分钟左右的时间内偶尔发生。

我不需要“文件下载”响应,只需要通过响应流发送的数据。

有没有办法在 Azure 函数中写入响应正文流?

编辑:

尝试创建我自己的 IActionResult 在写入响应正文流时遇到问题Synchronous operations are disallowed. Call ReadAsync or set AllowSynchronousIO to true instead.

c# function azure .net-core

3
推荐指数
1
解决办法
6085
查看次数

Rust 恐慌单元测试 - 匹配错误消息的细节

我正在寻找一种方法来断言一段代码恐慌,并且恐慌消息包含一个特定的字符串。我想出了以下似乎有效的方法:

let actual = std::panic::catch_unwind(|| decode(notation.to_string()));
assert!(actual.is_err());
let err = *(actual.unwrap_err().downcast::<String>().unwrap());
assert!(err.contains("Invalid"));
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用#[should_panic]并且它让我指定要检查的消息,但我只想部分匹配确切的错误消息。

testing panic rust

1
推荐指数
1
解决办法
595
查看次数