Tag: 编码式

使用true和false作为条件运算中的表达式

我正在维护一些代码,并且发现了以下模式: var isMale = (row[“Gender”].ToString() == “M”) ? true : false; 而不是这个: var isMale = (row[“Gender”].ToString() == “M”); 是否有人会这样做? 有人认为前者更具可读性或更清晰吗? 是否有某种旧的C“陷阱”,这是一个保留吗?

皮条客我的LINQ:基于另一篇文章的学习练习

我决定第一次试用LINQ尝试解决这个问题 。 我第一次涉足LINQ精彩世界的结果如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] args) { List list = new List() { “fred-064528-NEEDED1”, “xxxx”, “frederic-84728957-NEEDED2”, “sam-028-NEEDED3”, “—–“, “another-test” }; var result = from s in list where (from c in s where c == ‘-‘ select c).Count() == 2 […]

让VS 2008停止强制命名空间缩进的方法?

我从来没有真正成为大多数编辑处理命名空间的忠实粉丝。 它们总是迫使你添加一个毫无意义的缩进级别。 例如,我在页面中有很多代码,我更愿意将其格式化为 namespace mycode{ class myclass{ void function(){ foo(); } void foo(){ bar(); } void bar(){ //code.. } } } 而不是像 namespace mycode{ class myclass{ void function(){ foo(); } void foo(){ bar(); } void bar(){ //code.. } } } 老实说,我甚至不喜欢大部分时间缩进类的东西,因为我通常每个文件只有1个类。 它在这里看起来并不那么糟糕,但是当你获得大量的代码和大量的范围时,你可以很容易地让缩进强迫你离开屏幕,而且在这里我只使用了2个空格的标签而不是4个空格正如我们所使用的那样。 无论如何, 有没有办法让Visual Studio停止尝试为我缩进名称空间?

c#中类,函数,变量等的正确命名符号是什么?

我是一个没有正式计算背景的网络开发人员,我现在已经编写代码了几年,但每次我需要创建一个新的类/函数/变量时,我花了大约两分钟来决定一个名字然后如何输入它。 例如,如果我写一个函数来总结一堆数字。 我应该打电话给它 Sum() GetSum() getSum() get_sum() AddNumbersReturnTotal() 我知道有一种正确的方法可以做到这一点,我要问的是一个关于良好权威来源的链接:D 作为c#编码标准/最佳实践的副本关闭

Enum.TryParse with Flags属性

我已经通过值或其名称为TryParse枚举编写了代码,如下所示。 如何扩展此代码以包含使用Flags属性解析枚举? public static bool TryParse(this T enum_type, object value, out T result) where T : struct { return enum_type.TryParse(value, true, out result); } public static bool TryParse(this T enum_type, object value, bool ignoreCase, out T result) where T : struct { result = default(T); var is_converted = false; var is_valid_value_for_conversion = new Func[]{ (e, […]

通过返回与If / Else控制流程

哪一个更好(通过if 返回或控制流的隐式控制流) – 见下文。 请解释一下你认为哪个是优点/缺点。 我喜欢选项A,因为它的代码更少。 流程返回: public ActionResult Edit(MyClass class) { if (!class.Editable) return null; class.Update(); return View(); } 通过If / Else流程: public ActionResult Edit(MyClass class) { if (class.Editable) { class.Update(); return View(); } else { return null; } }

使用Obsolete属性

我最近被告知,在我们的代码中使用[Obsolete]属性标记了许多方法是不好的做法。 这些方法是我们代码库的内部方法,而不是API。 这些方法处理旧的加密function。 我觉得向团队的其他成员表示不应该使用这些方法是一种快速而安全的方式,并提供了建议替代方案的信息。 其他人认为我应该完全删除这些方法,根据需要重写或重构现有代码。 此外,人们认为很容易忽视编译器警告。 当没有被第三方使用时,是否存在将代码标记为过时的“最佳实践”? 或者这主要是主观的?

延迟加载 – 最好的方法是什么?

我见过很多懒加载的例子 – 你有什么选择? 给定一个模型类,例如: public class Person { private IList _children; public IList Children { get { if (_children == null) LoadChildren(); return _children; } } } Person类不应该知道它是如何被装载的……或者它应该是什么? 当然它应该控制何时填充属性? 您是否有一个将Person与其子集合耦合在一起的存储库,或者您是否会使用不同的方法,例如使用lazyload类 – 即便如此,我也不希望在我的模型体系结构中使用lazyload类模糊。 如果首先请求一个Person然后它的子节点(即在这个例子中不是延迟加载)或者以某种方式延迟加载,你将如何处理性能。 这一切都归结为个人选择吗?

事件处理程序提升方法约定

我只是在浏览并遇到了这个问题: 行动与委托事件 来自nobug的答案包括以下代码: protected virtual void OnLeave(EmployeeEventArgs e) { var handler = Leave; if (handler != null) handler(this, e); } 使用“创建提升方法”快速修复时,Resharper也会生成类似的代码。 我的问题是,为什么这条线是必要的?: var handler = Leave; 为什么写这个更好?: protected virtual void OnLeave(EmployeeEventArgs e) { if (Leave != null) Leave(this, e); }

实施类/方法的属性装饰

继我最近关于大型复杂对象作为Web服务结果的问题之后 。 我一直在考虑如何确保所有未来的子类都可以序列化为XML。 现在,显然我可以实现IXmlSerializable接口然后读取它的读取器/写入器但我想避免它,因为它然后意味着我需要在我想要的时候实例化读取器/写入器,并且99.99%的时间我将使用字符串,所以我可能只写自己的字符串 。 但是,要序列化为XML,我只是用Xml来装饰类及其成员??? 属性( XmlRoot , XmlElement等),然后将其传递给XmlSerializer和StringWriter以获取字符串。 这一切都很好。 我打算把方法返回到一个通用的实用工具方法,所以我不需要担心类型等。 我担心的是:如果我没有使用必需的属性装饰类,则在运行时才会抛出错误。 有没有办法强制执行属性修饰? 可以用FxCop完成吗? (我还没用过FxCop) 更新: 很抱歉让这些人关闭,很多事要做! 绝对喜欢在测试用例中使用reflection来实现它的想法,而不是诉诸于FxCop(喜欢把所有东西放在一起).. Fredrik Kalseth的答案非常棒,感谢包含代码,因为它可能会让我有点挖掘弄清楚自己该怎么做! +1给其他人类似的建议:)