我正在编写一些JavaScript代码来解析用户输入的函数(用于类似电子表格的功能)。解析完公式后,我可以将其转换为JavaScript并在其上运行eval()以产生结果。

然而,我总是避免使用eval(),因为它是邪恶的(而且,无论正确与否,我一直认为它在JavaScript中更邪恶,因为要计算的代码可能会被用户更改)。

那么,什么时候可以使用它呢?

为什么在这个千年里Python PEP-8应该指定最大行长度为79个字符?

几乎所有的代码编辑器都可以处理更长的代码行。如何使用包装应该是内容消费者的选择,而不是内容创造者的责任。

在这个时代,有什么(合理的)好的理由坚持使用79个汉字吗?

你可以在Netbeans, Text Mate和其他很多ide中设置80个字符/右边距。有可能在Sublime Text 3中也有吗?任何选项,插件等?

Java有一些非常好的开源静态分析工具,如FindBugs、Checkstyle和PMD。这些工具易于使用,非常有用,可以在多个操作系统上运行,而且是免费的。

商业c++静态分析产品是可用的。虽然拥有这样的产品很棒,但对于学生来说,成本太高了,而且通常很难得到试用版。

另一种选择是找到可以在多个平台(Windows和Unix)上运行的开源c++静态分析工具。通过使用开源工具,可以对其进行修改以适应特定的需求。找到这些工具并非易事。

下面是其他人发现或建议的c++静态分析工具的简短列表。

c++检查http://sf.net/projects/cppcheck/ 呼噜声http://danielwilkerson.com/oink/index.html C和c++代码计数器http://sourceforge.net/projects/cccc/ 夹板(来自答案) Mozilla的猪肉(来自答案)(这现在是Oink的一部分) Mozilla的Dehydra(来自答案) 使用选项- weffc++ for GNU g++(来自答案)

还有哪些大家都知道并可以推荐的可移植的开源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/ 选择静态代码分析工具

Java接口中的方法应该使用或不使用公共访问修饰符来声明?

当然,从技术上讲,这并不重要。实现接口的类方法总是公共的。但是什么是更好的约定呢?

Java本身在这方面并不一致。参见Collection vs. Comparable或Future vs. ScriptEngine。

我一直在写一些批处理文件,然后我看到了这个用户指南,它提供了很多信息。它告诉我的一件事是,行不仅可以用REM进行注释,还可以用::进行注释。它说:

批处理代码中的注释可以通过使用双冒号来生成,这比使用REM命令更好,因为标签在重定向符号之前被处理。::<remark>不会引起任何问题,但是rem <remark>会产生错误。

那么,为什么我看到的大多数指南和示例都使用REM命令呢?::适用于所有版本的Windows吗?

在Java中有命名枚举的约定吗?

我的偏好是枚举是一种类型。例如,你有一个枚举

Fruit{Apple,Orange,Banana,Pear, ... }

NetworkConnectionType{LAN,Data_3g,Data_4g, ... }

我反对将其命名为:

FruitEnum
NetworkConnectionTypeEnum

我知道这很容易挑选出哪些文件是枚举,但你也会有:

NetworkConnectionClass
FruitClass

此外,是否有一个好的文档描述相同的常量,在哪里声明它们,等等?

一些代码风格工具推荐这样做,我记得看到一些unix命令行工具警告丢失空行。

有一个额外的空行是什么原因?

我在读c++老师的课堂笔记,他是这样写的:

使用缩进// OK 永远不要依赖运算符优先级-总是使用括号// OK 总是使用{}块-即使是单行//不可以,为什么?? Const对象在比较的左边// OK 对>= 0的变量使用unsigned,这是个不错的技巧 删除后将指针设置为NULL -双重删除保护//不错

第三种方法我不清楚:放一行进去能得到什么 A{…} ?

例如,下面这段奇怪的代码:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
{
    if (i % 2 == 0)
    {
        j++;
    }
}

将其替换为:

int j = 0;
for (int i = 0 ; i < 100 ; ++i)
    if (i % 2 == 0)
        j++;

使用第一个版本的好处是什么?

有哪些使用Haskell的开源程序可以被认为是高质量的现代Haskell?代码库越大越好。

我想学习他们的源代码。我觉得我已经经过了从小代码示例中学习的阶段,这些示例通常是深奥的和小世界的。我想看看代码是如何结构的,当你有很多事情(日志,I/O,配置等)时,单子是如何交互的。