目前正在开发用于单一分配的代码气味检测器.我创建了一个抽象的CodeSmell类,它有两个具体的子类 - ClassLevelSmell和MethodLevelSmell.CodeSmell类具有SmellType类型的受保护字段.示例构造函数如下:
public ClassLevelSmell(ClassDefinition classDef, SmellType type){
smellyClass = classDef;
this.smell = type;
}
Run Code Online (Sandbox Code Playgroud)
SmellType是我定义的枚举,如下所示:
public enum SmellType {
LONG_CLASS, LONG_METHOD, PRIMITIVE_OBSESSION, LONG_PARAM_LIST}
Run Code Online (Sandbox Code Playgroud)
然后我有一个SmellDetector对象,有许多方法可以比较分析的类和方法的统计信息(例如它们的行数,基本声明的数量等),并在发现气味时创建一个新的CodeSmell对象.所以我的代码看起来像这样:
private void detectLongClass(ClassDefinition classDef) {
if(classDef.getNumLines() > 250){
smells.add(new ClassLevelSmell(classDef, LONG_CLASS));
}
}
Run Code Online (Sandbox Code Playgroud)
每个SmellDetector对象都有一个字段气味,一个CodeSmells的ArrayList.但是,当我尝试将SmellType LONG_CLASS传递给ClassLevelMethod的构造函数时,我在eclipse中收到编译器警告,告诉我"LONG_CLASS无法解析为变量".我在使用枚举类型时犯了一些错误吗?做什么?
对Swing并不熟悉,我正在编写客户端 - 服务器UDP聊天应用程序.一切都运行正常,除了我希望我的客户端向服务器发送通知并在窗口关闭时关闭DatagramSocket.我在哪里放置代码以便在关闭窗口时执行?
在我的最后一年项目的rails应用程序上工作,我想使用heroku部署它(具有一个不起眼的子域以确保安全性),以便我的主管可以及时了解最新的发展.我的rails应用程序使用预先存在的架构/数据连接到远程MySQL数据库,而不是默认的sqlite数据库.我有我的database.yml设置正常,因为当我在本地运行我的应用程序时,它连接到远程数据库,并正常工作.但是,当我将它推送到heroku时,主页甚至不会打开.
我假设Heroku默认在本地查找你的数据库(PostGreSQL,如果我是正确的).如何配置我的应用程序,以便Heroku可以连接到我的远程数据库?如果Heroku无法做到这一点,那么有没有其他任何人可以推荐的简单且(最重要的)免费Rails托管服务?
我正在尝试解析从我的Sinatra/DataMapper后端提供的JSON字符串,但是收到了错误$.parseJSON
.违规行是:
var data = $.parseJSON('{"id":1249,"ssid":"asdf","mac_addr":"12:34:56:78:90:12","description":"<a href=\"http://www.google.com\">Google</a>","gps_lat":"53.345036547354","gps_lng":"-6.2576787407226675","location":"","authentication_method":"WPA2-PSK","password":"","xml_id":"default","access_network_area_id":37}');
Run Code Online (Sandbox Code Playgroud)
Firebug中出现的错误是:
SyntaxError: JSON.parse: expected ',' or '}' after property value in object
Run Code Online (Sandbox Code Playgroud)
因为我不能在我的生活中看到任何遗漏的','或'}'符号(除非ruby to_json方法被破坏,否则不应该存在),我假设这是一个逃避问题.但是我需要逃脱哪些角色来修复它?
编辑:
我的后端是Sinatra(Ruby),DataMapper作为ORM.JSON字符串在控制器中生成@data = model.to_json
,并在视图中处理$.parseJSON('#{@data}')
.
自从我开始使用rvm来管理我的ruby安装以来,一直遇到问题.每当我想要我编写的另一个类时,例如require 'filename'
,require - no such file to load
当我尝试运行我的脚本时,我会收到错误.如果我使用rvm use system
它切换回我的系统ruby 再次工作,但我1.8.2作为我的系统ruby和我想在我的代码中使用的一些功能仅在1.9.*中可用,我可以通过rvm访问.我该如何解决这个问题?
目前正在编写一个类,其中我正在考虑私有的方法遍布整个代码.private
我想在类的顶部做一个内联声明,而不是添加一行并复制粘贴它下面的所有内容private :foo, :bar
.
但是,每当我尝试将参数声明为私有内联的方法时,我都会收到一条错误消息.举例来说,如果我有一个方法foo(bar, baz)
,并尝试声明它与私人private :foo(bar, baz)
我得到的两个括号错误信息,希望kEND
和=
替代.
如果我尝试声明它private :foo
,我会被告知foo
在我的代码中没有这样的方法.
如何在不发生这些错误的情况下做我想做的事情?