Tag: 编码风格的

进行循环优化

List<String> flowers = new ArrayList<String>(); 我的for循环目前看起来像这样… for (int i = 0; i < flowers.size(); i++) { … } 或者我应该改变它看起来像下面给出的代码 int size = flowers.size(); for (int i = 0; i < size; i++) { … } 这是更高性能(假设我有一大堆花),我猜它应该是后者。

在事件声明中添加一个匿名的空委托是否有缺点?

我曾经见过一些这样的成语(包括SO ): // Deliberately empty subscriber public event EventHandler AskQuestion = delegate {}; 好处很明显 – 它避免了在提高事件之前检查空值的需要。 不过,我很想知道是否有任何缺点。 例如,它是否被广泛使用,是否透明,不会造成维修头痛? 是否有空的事件订户呼叫有明显的性能影响?

我应该使用公共财产和私人领域或公共领域的数据?

在我看到的大部分代码中(在SO上,codeproject.com和我倾向于在我自己的代码中这样做),我已经看到公共属性是为类中包含的每个专用字段创build的,即使它们是最get; set;基本typesget; set; get; set; 喜欢: private int myInt; public int MyInt { get { return myInt; } set { myInt = value } } 我的问题是:这与以下不同: public int MyInt; 如果我们应该使用属性,而不是公共领域,为什么我们应该在这个特定的情况下使用它们? (我不是在讨论更复杂的例子,在这些例子中,getter和setter实际上做了一些特殊的事情,或者只有一个get或set(只读/写)而不是返回/设置一个私有字段的值。 它似乎没有添加任何额外的封装,只有在智能感知中提供一个很好的图标,并放置在类图的特殊部分!

什么开源的C ++静态分析工具可用?

Java有一些非常好的开源静态分析工具,如FindBugs , Checkstyle和PMD 。 这些工具易于使用,非常有帮助,在多个操作系统上运行并且免费 。 商业C ++静态分析产品可从供应商Klocwork , Gimpel和Coverity获得 。 还有一些不太知名的PVS-Studio分析仪。 虽然这样的产品很棒,但对于学生来说成本太高了,通常很难拿到试用版本。 另一种方法是find可在多个平台(Windows和Unix)上运行的开源C ++静态分析工具。 通过使用开源工具,可以对其进行修改以适应某些需求。 find工具并非易事。 以下是其他人发现或build议的C ++静态分析工具的简短列表。 C ++检查http://sf.net/projects/cppcheck/ Oink http://danielwilkerson.com/oink/index.html C和C ++代码计数器http://sourceforge.net/projects/cccc/ Splint(来自答案) Mozilla的猪肉(从答案)(这是现在的一部分Oink) Mozilla的Dehydra(来自答案) 使用选项-Weffc++ for GNU g ++(来自答案) 什么是任何人都知道,可以推荐的其他便携式开源C ++静态分析工具? 一些相关的链接。 Windows上的C ++静态代码分析工具 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/ select一个静态代码分析工具

Python中有多个构造函数的干净,pythonic方法是什么?

我找不到一个明确的答案。 AFAIK,在Python类中不能有多个__init__函数。 那么解决这个问题的好方法是什么? 假设我有一个叫做Cheese的类,它有number_of_holes属性。 我怎么能有两种方法来创build奶酪对象… 一个需要像这样的一些洞: parmesan = Cheese(num_holes = 15) 和一个不采取任何论据,只是随机number_of_holes属性: gouda = Cheese() 我只能想到一个方法来做到这一点,但似乎有点笨重: class Cheese(): def __init__(self, num_holes = 0): if (num_holes == 0): # randomize number_of_holes else: number_of_holes = num_holes 你说什么? 有没有更好的办法?

如果我省略了Java中的大括号可以吗?

我find了这个,但找不到答案,无论出于何种原因,我都很惭愧地问教授,因为这种感觉,当数百人盯着你时… 无论如何,我的问题是括号的重要性是什么? 我可以忽略它们吗? 例: for (int i = 0; i < size; i++) { a += b; } VS for (int i = 0; i < size; i++) a += b; 我知道他们两个都会工作,但是如果我省略括号(我倾向于做很多,由于能见度),这会改变什么,什么都可以? 正如我所说,我知道它是有效的,我testing了十几次,但是现在我的一些任务变得越来越大了,出于某种原因,我有一些非理性的恐惧,从长远来看,这是我的一些问题吗? 有理由担心吗?

在JavaScript中声明多个variables

在JavaScript中,可以像这样声明多个variables: var variable1 = "Hello World!"; var variable2 = "Testing…"; var variable3 = 42; …或者像这样: var variable1 = "Hello World!", variable2 = "Testing…", variable3 = 42; 一种方法比另一种方法更好/更快吗?

我可以在代码上强制执行哪种模式,以便于将其转换为另一种编程语言?

我正在着手做一个侧面项目,其目标是将代码从一种编程语言翻译到另一种编程语言。 我开始使用的语言是PHP和Python(从Python到PHP应该更容易一些),但理想情况下,我可以轻松地添加其他语言。 计划是: 这是面向web开发。 原始代码和目标代码将被放在框架之上(我也将写)。 这些框架将包含MVCdevise模式,并遵循严格的编码约定。 这应该使翻译更容易一些。 我也在研究IOC和dependency injection,因为它们可能会使翻译过程更容易,也更不容易出错。 我将利用Python的parsing器模块 ,它让我摆弄抽象语法树。 显然我能用PHP得到的最接近的是token_get_all() ,这是一个开始。 从那时起,我可以build立AST,符号表和控制stream程。 那我相信我可以开始输出代码了。 我不需要一个完美的翻译 。 我仍然需要查看生成的代码并修复问题。 理想情况下,翻译者应该标记有问题的翻译。 在你问“这到底是什么? 答案是…这将是一个有趣的学习经验。 如果您对如何使这个不那么艰巨的任何见解,请让我知道。 编辑: 我更感兴趣的是知道我可以在代码上执行什么样的模式,以便更易于翻译(即:IoC,SOA?)代码,而不是如何进行翻译。

“AND”和“&&”作为操作符

我有一个代码库,开发人员决定使用AND和OR来代替&&和|| 。 我知道运算符的优先级有所不同( &&前面and ),但是对于给定的框架( PrestaShop是精确的),显然不是一个理由。 你正在使用哪个版本? 比&&更可读吗? 还是没有区别?

用“(function(){…})()”等匿名函数包装整个Javascript文件的目的是什么?

最近我一直在阅读大量的Javascript,并且我一直注意到整个文件在导入的.js文件中被包装成如下所示。 (function() { … code … })(); 这样做的原因是什么,而不是一个简单的构造函数的设置?