Tag: 编码风格

您更喜欢哪种接口:T ,IEnumerable ,IList 或其他?

好的,我希望整个社区能够帮助我们解决一段时间以来一直在进行的工作场所辩论。 这与定义接受或返回某种类型列表的接口有关。 有几种方法可以做到这一点: public interface Foo { Bar[] Bars { get; } IEnumerable Bars { get; } ICollection Bars { get; } IList Bars { get; } } 我自己的偏好是使用IEnumerable作为返回值的参数和数组: public interface Foo { void Do(IEnumerable bars); Bar[] Bars { get; } } 我对这种方法的论点是,实现类可以直接从IEnumerable创建一个List,并简单地用List.ToArray()返回它。 但是有些人认为应该返回IList而不是数组。 我在这里遇到的问题是,现在你需要再次使用ReadOnlyCollection复制它,然后再返回。 返回IEnumerable的选项对于客户端代码来说似乎很麻烦? 你用什么/喜欢什么? (特别是关于将由组织外部的其他开发人员使用的库)

Juval Lowy的C#编码标准问题

我很喜欢并强烈推荐Juval Lowy的 – C#Coding Standard 。 Juval明确地避免了每个指令的基本原理,以保持标准的严格(参见前言)。 但是,有一些指令让我对基本原理感到好奇。 来自Lowy的C#标准的以下指令的具体原理是什么? 希望这些答案很难(非主观)。 1.13避免使用完全限定的类型名称。 请改用“using”语句。 这是性能问题吗? 有时我只需要一个完全限定名称的实例,并添加一个看起来很重的使用 。 1.26在无参数匿名方法上使用空括号。 仅当匿名方法可以在任何委托上使用时,才省略括号。 实际上我只是被第二句话弄糊涂了。 对示例的解释会有所帮助,谢谢。 2.19避免定义自定义exception类 最小化数量有哪些考虑因素? (如果你确定它们,他接下来给出指导(在2.20中)。) 2.29避免使用三元条件运算符 读者难以消化或其他考虑因素? 2.31避免在布尔条件语句中调用函数。 分配到局部变量并检查它们。 我不认为我这样做,但我很好奇……为什么不呢? 2.47避免与一个成员的接口。 因为它总是/通常更优先做什么? 一种方法界面工作时? 2.53首选使用显式接口实现 为什么? 此外, Jon Skeet在这里不同意 。 提前致谢! 罗伯特

WPF,在InitializeComponent之后直接放置代码的不良做法?

我只是想知道什么。 我有一个加载页面的框架,目前每个页面都有一个Page_Loaded方法,每次访问页面时都会运行该方法。 这工作得很好,但如果我使用导航转到以前访问过的页面,我会注意到错误。 返回页面后,再次调用Page_Loaded ,我不想要。 使用调试,我注意到InitializeComponent只是在第一次实现页面时才被调用,并且想知道我是否可以在调用之后简单地放置我的Page_Loaded代码,如下所示: public partial class MyPage: Page { public MyPage() { InitializeComponent(); //======> To Here } private void Page_Loaded(object sender, RoutedEventArgs e) { //Put Code from here <====== } } 这可以解决我的问题,但这是一个不好的做法? 如果是这样,我可能会遇到什么问题? 谢谢,Kohan

是否有可读的方法将数百万的数据放入c#代码中?

这有点难以阅读: int x = 100000000; 有没有简单的方法写: int x = 100,000,000; 那么规模是显而易见的吗? 请注意,这不是关于输出的格式。

不断滥用?

我在一些具有以下常量的C#项目中遇到了一堆代码: const int ZERO_RECORDS = 0; const int FIRST_ROW = 0; const int DEFAULT_INDEX = 0; const int STRINGS_ARE_EQUAL = 0; 有没有人见过这样的东西? 有没有办法合理化使用常量来表示语言结构? IE:C#在数组中的第一个索引位于第0位。我认为如果开发人员需要依赖常量来告诉他们语言是0,那么手头有一个更大的问题。 这些常量的最常见用法是处理数据表或“for”循环。 我是不是觉得这些是代码味道? 我觉得这些并不比以下更好: const int ZERO = 0; const string A = “A”;

为可变范围目的使用大括号是错误的吗?

我有时会使用大括号来隔离代码块,以避免以后错误地使用变量。 例如,当我在同一个方法中放入几个SqlCommand时,我经常复制粘贴代码块,最后混合名称并执行两次命令。 添加大括号有助于避免这种情况,因为在错误的位置使用错误的SqlCommand将导致错误。 这是一个例子: Collection existingCategories = new Collection(); // Here a beginning of a block { SqlCommand getCategories = new SqlCommand(“select Title from Movie.Category where SourceId = @sourceId”, sqlConnection, sqlTransaction); getCategories.Parameters.AddWithValue(“@sourceId”, sourceId); using (SqlDataReader categoriesReader = getCategories.ExecuteReader(System.Data.CommandBehavior.SingleResult)) { while (categoriesReader.Read()) { existingCategories.Add(categoriesReader[“Title”].ToString()); } } } if (!existingCategories.Contains(newCategory)) { SqlCommand addCategory = new SqlCommand(“insert into […]

(0 ==变量)或(null == obj):C#中过时的练习?

完全重复: 为什么在C#中经常会看到“null!= variable”而不是“variable!= null”? 我见过高级开发人员使用标题中提到的语法。 是否需要在.NET中指定常量? (与C / C ++世界相反)

在C#中使用if(!bool)vs if(bool == false)

以下两种编码风格是否存在任何forms的共识? 我更好奇的是,如果在C#中的优秀代码中通常首选一个这样的东西,或者如果这是在为编码项目选择样式时决定的事情。 风格1:使用! 标志表示不符合条件 if (!myBool) { //Do Stuff… } 样式2:使用== false表示在条件中检查虚假 if (myBool == false) { //Do Stuff… } 谢谢!

重构代码:什么时候做?

自从我开始使用.NET以来,我一直在创建Helper类或Partial类,以保持代码位于并包含在自己的小容器中等。 我想知道的是使代码尽可能干净和完美的最佳实践。 显然干净的代码是主观的,但我在谈论什么时候使用东西(不是如何使用它们),如多态,inheritance,接口,类以及如何更恰当地设计类(使它们更有用,而不仅仅是说’ DatabaseHelper’,正如一些人认为代码中的这种不良做法闻起来wiki )。 是否有任何资源可能有助于这种决策? 请记住,我甚至没有开设过CS或软件工程课程,而且教学资源在现实生活中相当有限。

编码指南+最佳实践?

我找不到任何直接适用于我的查询的问题,因此我将此作为一个新问题发布。 如果有任何可能对我有帮助的讨论,请指出并结束问题。 题: 我将介绍C#编码指南,但不应限制编码标准。 所以我有一个粗略的想法,但我认为我需要解决良好的编程实践。 所以内容将是这样的。 基本编码标准 – 套管,格式化等 良好实践 – 使用Hashset优于其他数据结构,String vs String Builder,字符串的不变性以及有效地使用它们等 真的,我想添加更多好的做法(特别是为了提高性能。)所以想听听一些与C#一起使用的更好的做法。 有什么建议??? (不需要大的描述:)只是这个想法就足够了。)