我正在阅读福勒的重构书,对这两个代码气味有点困惑.
"消息链"就是这样的调用a.getB().getC().getValue().
"中间人"是一种类似的方法
class A
{
object getCValue()
{
return b.getCValue();
}
}
Run Code Online (Sandbox Code Playgroud)
我理解这两个部分的方式是,如果你有"消息链",你可以通过引入"中间人"来缩短它们.如果你有"中间人"你将它们变成"消息链"......
现在显然必须有一些限制,或者你有一个程序员的旋转木马.我应该在什么时候支持一个而不是另一个?
一个是将类耦合到不相关的类,另一个是将类耦合到结构.所以从理论上讲,我的方法是检查任何给定的变化是否会减少一种耦合,而不是增加另一种耦合.但是,一种耦合是否更糟,应该更加权衡?即如果你可以删除X结构联轴器,只需添加一个类联轴器?
Android上的日历应用可以合并多个单独的日历:本地电话日历,Google日历等.
如何在Android手机中添加新的此类日历?我希望动态生成该日历中的事件,而无需访问Google等任何在线资源.
编辑:我想支持Android 1.5和2.3.4的手机.我可能有一天会得到更新到4.0的新手机,但谁知道什么时候会...
我正在尝试从LDAP获取根DirectoryEntry,以便我可以显示它的一个很好的图形树视图.
这一切在正常连接下都能很好地工作,但我无法使用SSL.
var root = this.checkBoxSSL.Checked
? new DirectoryEntry("LDAP://" + this.textBoxServer.Text,
this.textBoxUsername.Text,
this.textBoxPassword.Text,
AuthenticationTypes.SecureSocketsLayer)
: new DirectoryEntry("LDAP://" + this.textBoxServer.Text,
this.textBoxUsername.Text,
this.textBoxPassword.Text);
var dn = root.Properties["distinguishedName"].Value;
Run Code Online (Sandbox Code Playgroud)
等等...
但我得到一个"服务器无法运行"的例外.这一切似乎都归结为绑定过程.基于互联网研究,它可能是证书和/或身份验证方法(NTLM等)的问题.
那么如何才能通过SSL获得有效的DirectoryEntry?
我愿意接受替代解决方案,只要我可以检索所需节点的所有LDAP属性.(Root,DC,OU,CN,组和用户)
编辑:因为它似乎问题归结为SSL证书.我们只有一个自签名证书atm.而且这似乎被.NET默认拒绝.我们稍后会尝试使用正确签名的证书,但我可能需要能够处理自签名证书.
这是我对证书的了解有限的地方.我正在探索一种不同的代码解决方案,因为它似乎是唯一允许我影响整个证书处理的解决方案:
System.Security.Cryptography.X509Certificates.X509Certificate2 cert = new System.Security.Cryptography.X509Certificates.X509Certificate2();
cert.Import("..\\..\\test certificate.cer");
LdapConnection con = new LdapConnection("ip:636");
con.Credential = new NetworkCredential("un", "pw");
con.AuthType = AuthType.Ntlm;
con.SessionOptions.SecureSocketLayer = true;
con.SessionOptions.VerifyServerCertificate = new VerifyServerCertificateCallback((ldapcon, cer) => {
var cer2 = new System.Security.Cryptography.X509Certificates.X509Certificate2(cer);
StringBuilder strb = new StringBuilder();
strb.AppendFormat("{0} {1} matches: {2}\n", "Subject", cert.Subject, cert.Subject.Equals(cer2.Subject));
strb.AppendFormat("{0} …Run Code Online (Sandbox Code Playgroud) 到目前为止,我一直在使用NUnit.Mocks来隔离我的课程,但是由于缺乏给我的反馈,我感到很恼火.所以我一直在寻找替代方案,但无处可去.
犀牛嘲笑:无法理解.一切都必须以完全不同的模糊方式完成,使测试代码几乎不可读.
Moq:无法弄清楚如何模拟属性getter.有样品,但我尝试时它们不起作用.
从我收集的内容来看,这些似乎是最受欢迎的.在我去尝试每一个之前,我想请大家提一下建议......
我的背景是C#2.0.我仍然非常熟悉新版.NET中的概念.因此,不需要这些东西的框架将是一个奖励.
谢谢.
编辑:我终于弄清楚为什么我的Moq测试不起作用.它与Moq无关,我现在正在进一步评估它.到目前为止看起来非常好......