您的.NET源代码文档中有多少是太多了?
一些背景:我继承了一个很大的代码库,我已经在SO上发布了一些其他问题.这个代码库的一个"特性"是God Class,一个包含大约3000行代码的单个静态类,包含几十个静态方法.这是一个从一切Utilities.CalculateFYBasedOnMonth()要Utilities.GetSharePointUserInfo()到Utilities.IsUserIE6().这些都是不需要重写的好代码,只需重构成一组适当的库.我已经计划好了.
由于这些方法正在进入一个新的业务层,我在这个项目中的角色是为其他开发人员准备系统以进行维护,我正在考虑可靠的代码文档.虽然这些方法都具有良好的内联注释,但它们并不都具有XML注释形式的良好(或任何)代码doco.使用GhostDoc和Sandcastle(或文档X)的组合,我可以创建一些非常好的HTML文档并将其发布到SharePoint,这将使开发人员更多地了解代码的作用,而无需浏览代码本身.
随着代码中文档量的增加,导航代码变得越困难.我开始怀疑XML注释是否会使代码更难以维护,比如说//comment每个方法更简单.
这些示例来自Document X示例:
/// <summary>
/// Adds a new %Customer:CustomersLibrary.Customer% to the collection.
/// </summary>
/// <returns>A new Customer instance that represents the new customer.</returns>
/// <example>
/// The following example demonstrates adding a new customer to the customers
/// collection.
/// <code lang="CS" title="Example">
/// CustomersLibrary.Customer newCustomer = myCustomers.Add(CustomersLibrary.Title.Mr, "John", "J", "Smith");
/// </code>
/// <code lang="VB" title="Example">
/// Dim newCustomer As CustomersLibrary.Customer …Run Code Online (Sandbox Code Playgroud) 我有一些.NET远程代码,其中一个工厂方法,在一些服务器端类中实现,返回到具体对象的接口,也在同一台服务器上执行..NET远程处理自动创建代理,并允许我将接口传递给客户端,然后客户端可以直接调用它们.
示例接口:
public interface IFactory
{
IFoo GetFoo();
}
public interface IFoo
{
void DoSomething();
}
Run Code Online (Sandbox Code Playgroud)
示例客户端代码:
...
IFactory factory = (IFactory) System.Activator.GetObject (typeof (IFactory), url);
...
IFoo foo = factory.GetFoo (); // the server returns an interface; we get a proxy to it
foo.DoSomething ();
...
Run Code Online (Sandbox Code Playgroud)
一切都很好.但是,现在我正在尝试将我的代码迁移到WCF.我想知道是否有一种方法来传递接口并让WCF在客户端上动态生成代理,就像原始的.NET远程处理一样.
而且我不想返回类实例,因为我不想暴露真正的类.并且序列化完整实例并在服务器和客户端之间来回发送也不是一种选择.我真的只是希望客户端通过接口指针/代理与服务器对象通信.
有任何想法吗?
看起来立即窗口需要一些jazzing up ala IntelliSense?
有人同意/不同意吗?这是VS2008/2010的问题吗?
在应用程序的生命周期中触发Application_End时,有人可以告诉我吗?当所有会话结束时,Application_End会自动触发吗?+还有其他原因可以触发Application_End吗?
所以,如果我有:
public class ChildClass : BaseClass
{
public new virtual string TempProperty { get; set; }
}
public class BaseClass
{
public virtual string TempProperty { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何使用反射来查看ChildClass是否隐藏了TempProperty的Base实现?
我想在c#和vb.net之间做出不可知的答案
任何现有的JavaScript框架是否都具有非正则表达式replace()功能,或者已经将其作为一次性函数发布在Web上的某个位置?
例如,我想要替换"@!#$123=%",我不想担心要逃避哪些字符.大多数语言似乎都有两种替换方法.我想看到这个简单的事情.
我使用的方法被称为数万次,最近开始抛出异常.在大多数调试环境中,我会在此方法的顶部设置一个断点并运行直到我通过触发异常的参数值到达我感兴趣的调用.在这种情况下,这是不切实际的,所以我尝试设置一个断点,其条件只有在出现该参数值时才会中断.我在下面指出的位置创建了一个断点并给它一个条件str == "OffendingValue".
class Foo
{
// Bar() is called many, many times
void Bar(string str)
{
try
{
// Breakpoint inserted here
...
}
catch (Exception ex)
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,这样做会导致Visual Studio和我的应用程序在调试模式下停止运行.我的应用程序启动并输出一些简单的日志消息,然后完全停止响应.思考Visual Studio可能只是执行得有点慢,因为它需要做额外的工作来监控断点条件,我离开我的桌子15分钟,给它一些时间来运行.当我回来时,没有任何变化.我可以通过删除断点并使用相同的条件重新创建它来重现该条件.最奇怪的是,Break All debugging命令通常会破坏当前正在执行的语句上的程序执行是否为断点,当我启用了这个有问题的断点时,它根本不执行任何操作.
有没有人遇到与Visual Studio断点条件类似的行为?我可以毫无问题地使用命中计数条件.
我的ASP.NET应用程序需要许多支持服务才能在后台定期运行.例如:
实施这些服务的最佳方式是什么?我应该将它们作为Web应用程序的一部分包含在内,在Application_Start()中启动每个"服务"的实例吗?或者将它们创建为实际的独立服务?如果他们是Web应用程序的一部分,我可以利用我的缓存数据存储,但这种方法有任何缺点吗?
谢谢你的建议.
我正在做一些设计(最初是为Java设计的)(但将来可能会扩展到.NET吗?),我对术语“缓存”和“池”感到困惑。
据我所知,主要区别在于它们包含什么?
什么时候应该使用哪个准则?
那么,在许多文章中提到的“缓存池”又是什么呢?
asp.net ×2
.net ×1
architecture ×1
c# ×1
caching ×1
cron ×1
crontab ×1
debugging ×1
deployment ×1
global-asax ×1
iis ×1
inheritance ×1
javascript ×1
lifecycle ×1
linux ×1
ndoc ×1
overriding ×1
pool ×1
reflection ×1
remoting ×1
return ×1
sandcastle ×1
timezone ×1
vb.net ×1
wcf ×1
xml-comments ×1