Tag: 编码风格

AngularJS风格指南 – Todd Motto vs John Papa vs Minko Gechev

我对Angular很新,我想从一开始就学习好的做法。 我遇到过三个Angular风格的指南 ,他们都很棒。 我想知道哪一个最适合我采用,但是我没有资格成为评委,因为我对大型Angular应用程序没有经验。 那么哪一个是最好的? 或者即使不是更好,那么在开发过程中更直观/更less的问题呢? 也许你们中的一些人都有经验,可以指出他们的优点和缺点? 链接: 托德座右铭: https : //github.com/toddmotto/angularjs-styleguide 约翰爸爸的: https : //github.com/johnpapa/angularjs-styleguide Minko Gechev的: https : //github.com/mgechev/angularjs-style-guide

我是否应该将所有我认为不应该被用作基础类的课程封印?

我是否应该把我所知道的所有class级都封为基础class,即使没有切实的performance或安全考虑,或者这只不过是加重了这个问题?

如何缩进Python列表parsing?

列表parsing在某些情况下可能是有用的,但是它们也可能是相当可怕的阅读。作为一个稍微夸张的例子,你将如何缩进? allUuids = [x.id for x in self.db.query(schema.allPostsUuid).execute(timeout = 20) if x.type == "post" and x.deleted is not False]

如果使用私人访问修改器,是否应该使用冗余?

鉴于这两个例子是相同的,你认为哪一个更可取? 没有明确的修饰语 public class MyClass { string name = "james"; public string Name { get { return name; } set { name = value; } } void SomeMethod() { … } } 用明确的修饰符 public class MyClass { private string name = "james"; public string Name { get { return name; } set { name = […]

命名块来限制variables范围:好主意?

多年来,我一直在使用命名块来限制临时variables的范围。 我从来没有在其他地方看到过这个,这让我怀疑这是不是一个好主意。 特别是因为Eclipse IDE默认将这些标记为警告。 我已经用我自己的代码来使用这个效果了。 但是由于好的程序员在看到它的时候会不信任它,所以我真的有两种方法可以从这里开始: 避免这样做,或者 促进它,希望它会成为一个成语。 示例(在更大的方法中): final Date nextTuesday; initNextTuesday: { GregorianCalendar cal = new GregorianCalendar(); … // About 5-10 lines of setting the calendar fields nextTuesday = cal.getTime(); } 在这里,我使用的是一个GregorianCalendar来初始化一个date,我想确保我不会意外地重用它。 有些人评论说,你实际上并不需要命名该块。 虽然这是真的,但原始块更像是一个错误,因为意图不清楚。 此外,命名的东西鼓励你思考块的意图。 这里的目标是识别不同部分的代码,而不是将每个临时variables赋给它自己的范围。 很多人评论说最好是直接采用小方法。 我同意这应该是你的第一本能。 但是,可能有几个缓解因素: 为了甚至考虑一个命名块,代码应该是短的,一次性的代码,永远不会在其他地方调用。 一个命名块是一个快速的方法来组织一个超大的方法,而不用创build一个十几个参数的一次性方法。 当一个课程处于不断变化之中时,情况尤其如此,而且input可能会随着版本的变化而变化。 创build一个新的方法鼓励重用,如果用例不完善,这可能是不明智的。 一个命名块更容易(至less在心理上)扔掉。 特别是对于unit testing,你可能需要为一次性断言定义十几个不同的对象,而且它们只是不同而已,你还不能find一种方法将它们合并成less数的方法,你也不能想办法将它们与不是一英里长的名称区分开来。 使用命名范围的优点: 不能意外重用临时variables 有限的范围给垃圾收集器和JIT编译器提供了关于程序员意图的更多信息 块名称提供了一个代码块的评论,我发现比开放式评论更可读 使代码从大方法重构成小方法变得更容易,反之亦然,因为命名块比非结构化代码更容易分离。 缺点: 不是惯用的:程序员谁也没有看到命名块的使用(即每个人,但我)认为这是错误的,因为他们无法find块名称的引用。 […]

抽象类命名约定

我们是否应该有一个团队编码标准,抽象类的名称有前缀Abstract ? 例如 public abstract class AbstractB implements B {}

Code to logging ratio?

什么是logging比率的理想代码? 我不习惯写日志,因为我开发的大多数应用程序都没有太多的日志logging。 最近虽然我已经改变了工作,并且我注意到你看不到调用log4net的应用程序代码。 我明白,这是有用的,但肯定有太多的debugging语句是一样糟糕,根本没有任何? 有logging语句告诉你什么时候每个方法开始和结束以及它们返回什么。 几乎什么都做完了。 在编译时使用reflection来添加日志语句的插件会不会更容易,所以当您试图查看代码时,它们并没有妨碍您的工作。 同样在这些强大的IDE和远程debugging的日子,那么多日志logging真的nescisary?

如何从列表中删除空string,然后从列表中删除重复的值

比方说,我有一个来自表的列值的列表,我如何删除空string和重复的值。 请看下面的代码: List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList(); 这就是我刚刚编写的代码,但是Amiram的代码更加优雅,所以我会select这个答案是我做的: DataTable dtReportsList = someclass.GetReportsList(); if (dtReportsList.Rows.Count > 0) { List<string> dtList = dtReportsList.AsEnumerable().Select(dr => dr.Field<string>("column1")).ToList(); dtList.RemoveAll(x=>x == ""); dtList = dtList.Distinct().ToList(); rcboModule.DataSource = dtList; rcboModule.DataBind(); rcboModule.Items.Insert(0, new RadComboBoxItem("All", "All")); }

在C中使用true和false

据我所知,有三种方法可以在c中使用布尔值 与布尔types,从那时起使用真假 使用预处理器#define FALSE 0 … #define TRUE !(FALSE)定义#define FALSE 0 … #define TRUE !(FALSE) 只是直接使用常量,即1和0 还有其他的方法我错过了吗? 什么是不同的方法的利弊? 我认为最快的是3号,2号更容易阅读(尽pipe按位否定会稍微增加开销),1是最可读的,不兼容所有的编译器。

为什么尝试块昂贵?

我已经听到了build议,如果可能的话,你应该避免尝试catch块,因为它们很贵。 我的问题是关于.NET平台:为什么尝试块昂贵? 回应摘要: 在这个问题上显然有两个阵营:那些说试块的代价是昂贵的,而那些说“也许是一点点”的。 那些说try块是昂贵的,通常提到解除调用堆栈的“高成本”。 就我个人而言,我并不相信这个说法 – 特别是在阅读了这里存储exception处理程序之后。 Jon Skeet坐在“也许是一点点”的阵营,写了两篇关于例外和表演的文章,你可以在这里find。 有一篇文章我觉得非常有趣:它讨论了try块的“其他”性能影响(不一定是内存或cpu消耗)。 Peter Ritchie提到他发现try块内部的代码没有被编译器优化。 你可以在这里阅读他的发现。 最后,还有一个关于在CLR中实现exception的人的问题的博客条目。 去看看Chris Brumme的文章吧。