几个星期前我与一些同事进行了重构讨论,我似乎是少数人认为"早期重构,经常重构"是一种很好的方法,可以防止代码变得混乱和不可维护.许多其他人认为它只属于项目的维护阶段.
如果您有意见,请为其辩护.
有没有办法自动增加ClickOnce部署中的"最低要求版本"字段,以始终等于当前的内部版本号?基本上,我总是希望我的部署在启动时自动更新.
我怀疑我需要一些前/后构建的事件,但我希望有一个更简单的方法.
与一位同事进行了一场激烈的辩论,讨论他在try/catch中包装他的大部分功能的做法,但是抓住它只是一个"抛出",例如
Private sub foo()
try
'Do something'
catch
throw 'And nothing else!'
End Try
End Sub
Run Code Online (Sandbox Code Playgroud)
我的想法是甚至不打扰(假设你此时不需要做任何事情) - 异常会冒泡到父成员中的下一个异常处理程序.
听起来似乎有道理的唯一论点是,有时异常没有被捕获并且您的代码停止了(在调试模式下),当前行以绿色突出显示...并且这可能与多个线程有关?最佳实践会声明"每个线程的异常处理程序",但大多数情况下我们使用单线程.
好处可能是它在调试模式下可能有用而不会突然弹出到父成员(是的,Joel!) - 你将转到"throw"语句并能够检查你的本地人.但是那么你的代码将"乱七八糟地尝试/捕获/抛出"(在这里引用另一个线程)?
如果没有异常发生,那么在任何地方添加try/catch/throws会涉及什么样的开销(即你应该避免在紧密循环中尝试/捕获)?
我使用linq进行sql连接的代码是:
var query1 = from u in dc.Usage_Computers
where u.DomainUser == s3
select u; // selects all feilds from table
GridView1.DataSource = query1;
GridView1.DataBind();
Run Code Online (Sandbox Code Playgroud)
我在"Domainuser"表中有一个名为"Operation"的字段,其值为"1,2,3".当我将这些值填充到数据网格时,我想将它们转换为有意义的值,如果Operation的值为1,则在datagrid中显示为"logon",如果为2,则"logoff"等...
从数据库中检索后如何为它们分配值?
是否需要定期压缩SQL CE数据库?汽车会缩水吗?我们的平均数据库大小约为100Mb,大型用户达到400-500Mb(但这些非常罕见).如果我们必须手动压缩,我们如何判断应该何时应该?有没有办法以编程方式告诉碎片级别或浪费空间的百分比?如果没有,我们可以使用什么其他门槛?
该产品的早期版本是基于(喘气)MS Access数据库构建的,因此我们必须定期进行压缩以保持其正常工作.
在一个相关的问题中,我的团队即将(希望)开始使用LINQ,我想利用匿名类型.混合VB.NET的Option Strict(我们在整个项目的生命周期中使用过)和新的Option Infer指令的最佳方法是什么?
我有一个类库,其中包含一些用C#编写的扩展方法和一个用VB编写的旧网站.
我想从VB代码调用我的扩展方法,但它们没有出现在intelisense中,当我访问该站点时出现编译错误.
我已经获得了所有必需的Import,因为同一名称空间中包含的其他类在Intelisense中看起来很好.
有什么建议
编辑:更多信息,以帮助一些评论.
我的实现看起来像这样
//C# code compiled as DLL
namespace x.y {
public static class z {
public static string q (this string s){
return s + " " + s;
}
}
}
Run Code Online (Sandbox Code Playgroud)
和我这样的用法
Imports x.y
'...'
Dim r as string = "greg"
Dim s as string = r.q() ' does not show in intelisense
' and throws error : Compiler Error Message: BC30203: Identifier expected.
Run Code Online (Sandbox Code Playgroud) 我已经看到这是各种代码库,并想知道这是否通常不赞成.
例如:
public class MyClass
{
public int Id;
public MyClass()
{
Id = new Database().GetIdFor(typeof(MyClass));
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个WPF控件,它有一个"Investors"列表,在列表的右栏中有一个"Delete"按钮.
我可以浪费一些时间在photoshop中制作一个"x"的图像.或者,我可以使用Wingdings字体并将内容设置为"Õ"(这使得看起来很酷的删除按钮).
这个合适吗?我的想法是......虽然不是每个计算机上都有每个字体系列,但我很确定如果你运行我的WPF Windows Forms程序,那么你就有了Wingdings.
你怎么看?请尽量提供有关此事的统计数据(不仅仅是感受).我应该担心字体大小吗?等等
有没有办法在Visual Studio 2008中的XAML编辑器中禁用Intellisense?键入时通常是一个很大的性能消耗,有时我会等待十到几秒钟,同时列表会自动弹出.
看来,在选项 - >文本编辑器 - > XAML中,智能感知部分的部分不可用(灰显).我们在Full XAML View中打开文档,不使用任何第三方增强功能.
它太糟糕了,有时候我会在其他地方打开文件并编辑我需要的东西,但我真的很想解决这个问题,所以我不必使用外部应用程序.
我正在寻找一种更有效的方法来查找从已知特定类型派生的程序集中的类型.基本上,我的应用程序中有一个插件架构,并且我们一直这样做的时间最长:
For Each t As Type In assem.GetTypes()
If t.BaseType Is pluginType Then
'Do Stuff here'
End If
Next
Run Code Online (Sandbox Code Playgroud)
一些插件有很多类型,我们开始看到这需要几秒钟.有什么办法我可以要求所有类型为BaseType为"pluginType"的类型?
编辑:我过度简化了我的代码示例.我在实际代码中使用.GetExportedTypes().但是,我很多课程被标记为公共,所以它没有太多帮助.我梳理了项目并标记了除了实际插件类之外的所有"朋友",并且它仍然需要几乎相同的时间来检查程序集.我在1.3秒内切断了100毫秒(小于10%).这只是我必须处理的最短时间吗?我也尝试了装配属性建议,它仍然没有产生太大的差异(可能再次100ms).剩下的时间是动态加载程序集必须支付的开销吗?
我们正在尝试削减在启动期间加载的程序集数量,其中最容易削减的是Microsoft.VisualBasic程序集.其中有很多东西很容易替换,比如Left(),但是我很难找到替换vbLf和Chr()的好方法.vbCrLf很容易用Environment.NewLine取代,但是我们有一些地方可以为基于Unix的系统生成内容,只需要换行.
我试过了
select top 1 * from tbl
select top(1) * from tbl
select * from tbl limit 1
Run Code Online (Sandbox Code Playgroud)
没有任何效果.
SQL Server Compact Edition是否支持获取前x行?
vb.net ×4
c# ×3
.net ×2
linq ×2
asp.net ×1
assemblies ×1
clickonce ×1
constructor ×1
database ×1
editor ×1
fonts ×1
ide ×1
intellisense ×1
limit ×1
msbuild ×1
option-infer ×1
refactoring ×1
reflection ×1
types ×1
winforms ×1
wpf ×1
xaml ×1