程序设计

专业和发烧友程序员的问答

30
公开私有方法以对其进行单元测试……好主意?
主持人注意: 这里已经发布了39个答案(有些已经删除)。 你发布之前你的答案,考虑你是否能添加一些有意义的讨论。您很有可能只是重复别人已经说过的话。 我偶尔会发现自己需要在类中公开一个私有方法,只是为此编写了一些单元测试。 通常这是因为该方法包含该类中其他方法之间共享的逻辑,并且可以更轻松地自行测试该逻辑,或者另一个原因可能是我想测试同步线程中使用的逻辑而不必担心线程问题。 其他人是否发现自己这样做,因为我真的不喜欢这样做?我个人认为,好处超过了公开方法的问题,而该方法实际上并没有提供课堂以外的任何服务。 更新 谢谢大家的回答,似乎引起了人们的兴趣。我认为,普遍的共识是应该通过公共API进行测试,因为这是使用类的唯一方法,我对此表示同意。我在上面提到的几个我在上面会做的情况并不常见,我认为这样做的好处是值得的。 但是,我可以看到每个人都指出,它永远不会真正发生。而且,当我多考虑一下时,我认为更改代码以容纳测试是一个坏主意-毕竟,我认为测试在某种程度上是一种支持工具,并且如果愿意的话,将系统更改为“支持支持工具”是公然的。坏习惯。
301 c#  java  unit-testing 

5
一次乘法提取位
我看到在使用了一个有趣的技术,答案到另一个问题,并想好一点理解。 我们获得了一个无符号的64位整数,并且对以下位感兴趣: 1.......2.......3.......4.......5.......6.......7.......8....... 具体来说,我们希望将它们移动到前八位,如下所示: 12345678........................................................ 我们不在乎由指示的位的值.,也不必保留它们。 该溶液是屏蔽掉不需要的位,并且乘以结果0x2040810204081。事实证明,这可以解决问题。 这种方法有多普遍?可以使用这种技术来提取位的任何子集吗?如果不是,如何确定该方法是否适用于特定的一组位? 最后,如何找到正确的(a?)乘法器以提取给定的位?


6
Convert.ChangeType()在可空类型上失败
我想将字符串转换为对象属性值,我将其名称作为字符串。我正在尝试这样做: string modelProperty = "Some Property Name"; string value = "SomeValue"; var property = entity.GetType().GetProperty(modelProperty); if (property != null) { property.SetValue(entity, Convert.ChangeType(value, property.PropertyType), null); } 问题在于,当属性类型为可为空的类型时,这将失败并引发Invalid Cast Exception。这不是无法转换的值的情况-如果我手动执行此操作(例如DateTime? d = Convert.ToDateTime(value);),它们将起作用(我已经看到一些类似的问题,但仍然无法使它起作用)。
301 c#  .net  reflection 

26
如何防止刮擦现场?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 改善这个问题 我有一个大型音乐网站,拥有大型艺术家数据库。我一直注意到其他音乐网站正在抓取我们网站的数据(我在这里和那里输入虚拟的艺术家名称,然后用google搜索它们)。 如何防止屏幕刮擦?可能吗

30
Visual Studio 2010-推荐的扩展[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 这个问题的答案是社区的努力。编辑现有答案以改善此职位。它目前不接受新的答案或互动。 您推荐的Visual Studio 2010扩展是什么?(请指出其是否免费,以及其目的/功能)


14
为什么返回生成的HTML而不是JSON是一种不好的做法?还是?
使用JQuery或任何其他类似框架从自定义URL / Web服务中加载HTML内容非常容易。到目前为止,我已经使用过这种方法很多次,并且发现性能令人满意。 但是所有书籍,所有专家都试图让我使用JSON而不是生成的HTML。它比HTML优越得多吗? 它快很多吗? 它在服务器上的负载要少得多吗? 另一方面,我有一些使用生成的HTML的原因。 它是简单的标记,通常与JSON一样紧凑或实际上更紧凑。 错误更少,因为您得到的只是标记,而且没有代码。 在大多数情况下,编程将更快,因为您不必为客户端单独编写代码。 您站在哪一边?为什么?
301 javascript  jquery  html  ajax  json 

14
有哪些可用的开源C ++静态分析工具?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 Java有一些非常好的开源静态分析工具,例如FindBugs,Checkstyle和PMD。这些工具易于使用,非常有用,可以在多个操作系统上运行并且免费。 可以使用商业C ++静态分析产品。尽管拥有这样的产品很棒,但对学生来说成本太高了,通常很难获得试用版。 另一种选择是找到可以在多个平台(Windows和Unix)上运行的开源C ++静态分析工具。通过使用开源工具,可以对其进行修改以适合某些需求。寻找工具并非易事。 以下是其他人发现或建议的C ++静态分析工具的简短列表。 C ++检查http://sf.net/projects/cppcheck/ Oink http://danielwilkerson.com/oink/index.html C和C ++代码计数器http://sourceforge.net/projects/cccc/ 夹板(答案) Mozilla的猪肉(答案)(现在是Oink的一部分) Mozilla的Dehydra(答案) -Weffc++GNU g ++的使用选项(来自答案) 还有哪些其他便携式移植开源C ++静态分析工具,谁都知道并且可以推荐? 一些相关的链接。 /programming/97454/c-static-code-analysis-tool-on-windows http://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis http://www.chris-lott.org/resources/cmetrics/ 一个免费的工具,可以根据一组编码标准检查C / C ++源代码吗? http://spinroot.com/static/ 选择静态代码分析工具



17
在PHP中检索用户正确IP地址的最准确方法是什么?
我知道有很多$ _SERVER变量标头可用于IP地址检索。我想知道是否就使用上述变量最准确地检索用户的真实IP地址(众所周知没有一种方法是完美的)是否达成共识? 我花了一些时间试图找到一个深入的解决方案,并根据大量资源提出了以下代码。如果有人可以在答案中打个洞,或者对也许更准确的内容有所了解,我会喜欢的。 编辑包括来自@Alix的优化 /** * Retrieves the best guess of the client's actual IP address. * Takes into account numerous HTTP proxy headers due to variations * in how different ISPs handle IP addresses in headers between hops. */ public function get_ip_address() { // Check for shared internet/ISP IP …
301 php  ip-address 


12
不能忽略UserInterfaceState.xcuserstate
我将Git用于Xcode 4项目版本控制。我已明确添加ProjectFolder.xcodeproj/project.xcworkspace/xcuserdata/myUserName.xcuserdatad/UserInterfaceState.xcuserstate到.gitignore,但Git不会忽略它。任何想法为什么会这样?
301 xcode  git  xcode4  gitignore 

28
如何检查我使用的Angular版本?
如何知道我使用的是哪个版本的Angular? 我努力了: angular --version angular --v angular -version angular -v 但是得到 -bash: angular: command not found 我知道yeoman --version我正在使用0.9.6 但是如何获得angularjs版本呢?
301 angularjs  angular 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.