我有一个项目(大约80K LOC)正在进行中,我已经有近整整一个月的豪华重构,并且在发布之前增加时间,只要我小心不要破坏任何东西.话虽如此,我该怎么做才能提高可维护性.请注意,这个项目没有进行单元测试,我并没有真正计划为此添加单元测试,但如果这是我将考虑的共同共识.
我应该寻找的关键事项是什么,并考虑修改或重构以提高软件的可维护性和质量?
编辑:我已经明确了我需要进行单元测试.这不是我真正做过的事情,对于新的单元测试开发人员来说有什么好的资源(最好是通过VS2008的单元测试框架)?
我在配置文件中尝试访问自定义配置部分非常困难.
正在从作为插件加载的.dll读取配置文件.我使用Configuration Section Designer VS addin 创建了配置和必要的代码.
命名空间是"ImportConfiguration".ConfigurationSection类是"ImportWorkflows".程序集是ImportEPDMAddin.
xml:
<configSections>
<section name="importWorkflows" type="ImportConfiguration.ImportWorkflows, ImportEPDMAddin"/>
</configSections>
Run Code Online (Sandbox Code Playgroud)
每当我尝试读取配置时,我都会收到错误:
为importWorkflow创建配置节处理程序时出错:无法加载文件或程序集"ImportEPDMAddin.dll"或其依赖项之一.该系统找不到指定的文件.
dll不会与可执行文件驻留在同一目录中,因为加载插件的软件将dll和它的依赖项放在它自己的目录中.(我无法控制.)
我将单例实例的代码编辑为以下内容:
string path = System.Reflection.Assembly.GetCallingAssembly().CodeBase;
path = path.Replace("file:///", "");
System.Configuration.Configuration configuration = System.Configuration.ConfigurationManager.OpenExeConfiguration(path);
return configuration.GetSection(ImportWorkflowsSectionName) as ImportConfiguration.ImportWorkflows;
Run Code Online (Sandbox Code Playgroud)
我也尝试过使用一个简单的NameValueFileSectionHandler,但我得到一个例外,说它无法加载文件或程序集'System'.
我已经阅读了大量的博客文章和文章,听起来有可能为dll读取配置文件,但我无法让它工作.有任何想法吗?谢谢.
我有一个在网络上运行的桌面应用程序,每个实例都连接到同一个数据库.
那么,在这种情况下,我如何实现一个互斥体,该互斥体适用于连接到同一数据库的所有正在运行的实例?
换句话说,我不希望那两个+实例同时运行相同的功能.如果一个人已经在运行该函数,则其他实例不应该有权访问它.
PS:数据库事务无法解决,因为我不想使用mutex的函数不使用数据库.我之前提到过数据库只是因为它可以用来在运行的实例之间交换信息.
PS2:该函数大约需要30分钟才能完成,所以如果第二个实例尝试运行相同的函数,我想显示一条好消息,它现在无法执行,因为计算机'X'已经在运行该函数.
PS3:该功能必须在客户端机器上处理,所以我不能使用存储过程.
请使用以下代码:
<abbr title="World Health Organization">WHO</abbr>
Run Code Online (Sandbox Code Playgroud)
我们可以设置一个abbr标签的标题吗?那么我们可以使用标题来代替自定义工具提示吗?
我有一个UITableView有两个部分:免费和付费.每个部分都有不同类型的细胞.免费单元格有两个标签和一个图像.付费单元格有两个标签,一个图像和一个允许购买产品的按钮.购买产品后,不得再次显示该特定单元格上的"购买"按钮.说,这就是细胞的初始化方式......
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *IDNormal = @"Normal";
static NSString *IDComplex = @"Complex";
if (indexPath.section == 0) { // show free objects
UITableViewCell * cell = [tableView dequeueReusableCellWithIdentifier:IDNormal];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:IDNormal] autorelease];
// product description
UILabel * labelDescription = [[UILabel alloc] initWithFrame:CGRectMake(5.0, 54.0, 225, 18)];
[labelDescription setTextAlignment:UITextAlignmentLeft];
[labelDescription setBackgroundColor:[UIColor whiteColor ]];
[labelDescription setClipsToBounds:YES];
[labelDescription setFont:[UIFont systemFontOfSize:14.0]];
[labelDescription setTextColor:[UIColor blackColor]];
[labelDescription setAlpha:0.6];
[labelDescription setTag: 860];
[cell addSubview:labelDescription];
[labelDescription …Run Code Online (Sandbox Code Playgroud) 是否有任何替代(重写)Java类实现的方法,该类实现已由另一个实现(由字节数组提供)由System类加载器加载?
为了说明我的疑问,请遵循以下代码:
public class Main {
public static void main(String ... args) {
Foo foo = new Foo();
foo.print();
ClassLoader cl = ...
Foo foo2 = (Foo) cl.newInstance();
foo2.print();
}
}
Run Code Online (Sandbox Code Playgroud)
第一个Foo的print()方法打印"Implementation 1",第二个打印出"Implementation 2".foo的第二个实例由类加载器从一个字节数组中检索(可以存储在文件中,也可以从任何流中获取......)
PS:要求Foo是一个类,而不是一个接口,并且不能扩展,即,定义类实现的实际字节(在VM内部)被覆盖.
我有一个文本框,用户输入一个数字,如:105.14当我使用jQuery读取它时:
alert(parseInt($("#Info").val()));
Run Code Online (Sandbox Code Playgroud)
它显示"105".
为什么我不能得到余下的.14 ????
我确定这是显而易见的......
如何检查接受字典的函数的参数?
IDictionary<string, string> someDictionary = new Dictionary<string, string> {
{"Key1", "Value1"},
{"Key2", "Value2"}
};
Expect.Call(delegate {someService.GetCodes(someDictionary);}).Constraints(...);
Run Code Online (Sandbox Code Playgroud)
基本上,我想验证GetCodes的参数是否与变量"someDictionary"具有相同的值.
我忘了提到正在测试的方法构建字典并将其传递给someService.GetCodes()方法.
public void SomeOtherMethod() {
IDictionary<string, string> dict = new Dictionary<string, string> {
{"Key 1", "Value 1"},
{"Key 2", "Value 2"}
};
someService.GetCodes(dict); // This would pass!
IDictionary<string, string> dict2 = new Dictionary<string, string> {
{"Key 1", "Value 1a"},
{"Key 2a", "Value 2"}
};
someService.GetCodes(dict2); // This would fail!
}
Run Code Online (Sandbox Code Playgroud)
所以,我想确保传递给GetCodes方法的字典包含与Expect.Call ...方法中指定的字典相同的字典.
另一个用例是,我可能只想查看字典中的键是否包含"键1"和"键2",但不关心值......或者其他用途.
我在linode ubuntu虚拟机上使用Django-Registration作为我的网站.当用户注册时,我发送连接问题发送激活电子邮件.
这是我的设置:
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'myemail@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_USE_TLS = True
Run Code Online (Sandbox Code Playgroud)
我已经在本地进行了测试,但它确实有效 我通过主机上的python manage.py shell以交互方式进行测试,当我以root身份登录时,它可以正常工作.我认为由于Apache在www-data下运行,因此存在许可问题.你有任何想法如何解决这个问题?
编辑:对的Linode IRC有人建议我安装ssmtp中包...我也跟着在这里找到了指令http://tombuntu.com/index.php/2008/10/21/sending-email-from-your-system-with -ssmtp /并重新启动服务器......一切都很好.
谢谢
c# ×2
.net ×1
abbr ×1
bug-tracking ×1
classloader ×1
config ×1
css ×1
django ×1
iphone ×1
java ×1
javascript ×1
jquery ×1
mocking ×1
mutex ×1
networking ×1
refactoring ×1
rhino-mocks ×1
runtime ×1
uikit ×1
uitableview ×1
unit-testing ×1
wiki ×1