Questions tagged «coding-style»

编码样式是一组准则,有助于提高可读性和对源代码的理解。

8
如何学习有效地编写Pythonic代码?
用谷歌搜索“ pythonic”会发现各种各样的解释。在维基百科页面称: Python社区中最常见的新词是pythonic,它具有与程序样式相关的广泛含义。说代码是pythonic就是说它很好地使用了Python习惯用法,它是自然的,或者显示出流利的语言。同样,要说它是pythonic的接口或语言功能,就是说它与Python惯用语配合得很好,并且它的使用与语言的其余部分很好地结合在一起。 它还讨论了术语“ unpythonic”: 相反,非Python代码的标志是它试图用Python编写C ++(或Lisp,Perl或Java)代码-也就是说,提供的是粗略的转录,而不是来自另一种语言的惯用形式的翻译。pythonicity的概念与Python的极简主义的可读性哲学紧密相关,并且避免了“有多种方法可以做到这一点”。不可读的代码或无法理解的习惯用法是难以理解的。 术语“ pythonic”是什么意思?如何学习在实践中有效地应用它?

3
视障程序员的编码样式
我是视障人士。戴眼镜时,我看得很清楚,可以开车,但是以我喜欢的字体大小,我一次只能看到15行,每行100个字符。这影响了我的编码风格。 我要做的一件事是编写较短的函数。我的代码倾向于获得良好的评价,因为这些带有好名的短函数使高层函数易读,但是在高性能情况下,有些人通过将变量向下传递几层来评论我在堆栈上占用了多少空间。处理。 我要做的第二件事是将文件之间的类划分为更短的文件。这减少了滚动到相关功能的距离,并且根据组织的不同,我可以将文件放在不同的监视器上以一起查看它们。 这两种做法都使得大多数编码样式都需要我编写文档的单元更具文档性,这通过扩展文件的长度以及相关函数之间的距离进一步加剧了该问题。 我目前正在使用Visual Studio,它允许在功能和注释块级别(我经常使用)折叠代码,但不能像Notepad ++那样在括号级别折叠。提供更好的代码折叠功能的编辑器并不具备VS的所有智能功能。我可以在VS中使用区域,但是如果每10行使用一次,则看起来很混乱。在我处理代码的其他功能时,折叠有时对使完整的代码看不见很有帮助。 谁能推荐更好的编码实践来帮助限制代码的可见性?

9
是否使用JOIN关键字
以下SQL查询是相同的: SELECT column1, column2 FROM table1, table2 WHERE table1.id = table2.id; SELECT column1, column2 FROM table1 JOIN table2 ON table1.id = table2.id; 肯定会在我尝试过的每个DBMS上产生相同的查询计划。 但是我经常听到或听到这样的观点:一个绝对比另一个更好。当然,这些主张从不带有任何解释。 在我工作的地方,第二版似乎受到了大多数其他开发人员的青睐,因此我也倾向于这种风格,以最大程度地减少意外。但是在我的心中,我真的在想第一个(因为这是我最初学习它的方式)。 这些形式中的一种在客观上是否优于另一种?如果没有,那么为什么一个使用另一个?
45 sql  coding-style 

12
故意拼写错误以避免保留字
我经常看到这样的代码,其中包含常见单词的故意拼写错误,无论好坏,这些单词已成为保留单词: klass或clazz为类:Class clazz = ThisClass.class kount用于计数在SQL:count(*) AS kount 我个人认为这会降低可读性。在我自己的实践中,我发现没有太多案例无法使用更好的名称- itemClass或recordTotal。 JavaDocs for Class中的示例在参数中显示了这一点: public <U> Class<? extends U> asSubclass(Class<U> clazz) 这是否显示合理的用例?

10
LINQ和Lambda表达式的使用会导致代码可读性降低吗?[关闭]
我正在与Linq的同事讨论,我将在此处复制: 同事:让我们在这里诚实。Linq语法很烂。这是令人困惑和不直观的。 我:哦,比T-SQL更令人困惑吗? 同事:嗯,是的。 我:它具有相同的基本部分,选择,位置和来源 同事:对我来说,Linq是关系+ OO的混蛋。同事:不要误会我的意思-它功能强大,但是他们将SQL重新定位为使用agains对象集合。 我认为使用Linq + Lamda的功能非常强大(他同意),并且还使代码更易于阅读(他不同意这一点): pickFiles = from f in pickFolder.GetFiles("*.txt") where ValidAuditFileName.IsMatch(f.Name) select f; 要么 var existing = from s in ActiveRecordLinq.AsQueryable<ScannedEntity>() where s.FileName == f.FullName && s.DocumentType != "Unknown" select s; 或(此处为VB代码) Dim notVerified = From image In images.AsParallel Group Join verifyFile In …

6
如果条件允许,最可读的格式化长条格式?[关闭]
if尽可能避免长绕组条件,但有时我们最终都会编写它们。即使这是一个非常简单的条件,有时所涉及的语句也很罗condition,因此整个条件最终变得非常冗长。格式化这些格式最可读的方式是什么? if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy) { thud(); } 要么 if ( FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy ) { thud(); } 要么 if (FoobarBaz::quxQuux(corge, grault) || !garply(waldo) || fred(plugh) !== xyzzy) { thud(); } 要么 thudable = FoobarBaz::quxQuux(corge, grault); thudable ||= !garply(waldo); thudable …

9
“避免溜溜球问题”是允许“原始痴迷”的正当理由吗?
根据什么时候原始的迷恋不是代码气味?,我应该创建一个ZipCode对象来代表一个邮政编码而不是一个String对象。 但是,根据我的经验,我更喜欢看到 public class Address{ public String zipCode; } 代替 public class Address{ public ZipCode zipCode; } 因为我认为后者需要我转到ZipCode类才能理解该程序。 而且我相信如果每个原始数据字段都被一个类替换,那么我需要在许多类之间移动以查看定义,这感觉就像是在遭受溜溜球问题(一种反模式)。 因此,我想将ZipCode方法移到新类中,例如: 旧: public class ZipCode{ public boolean validate(String zipCode){ } } 新: public class ZipCodeHelper{ public static boolean validate(String zipCode){ } } 因此只有需要验证邮政编码的人才能依赖ZipCodeHelper类。而且我发现保持原始痴迷的另一个“好处”是:它使类看起来像其序列化形式(如果有),例如:带有字符串列zipCode的地址表。 我的问题是,“避免溜溜球问题”(在类定义之间移动)是否是允许“原始痴迷”的有效理由?


8
反转IF语句
因此,我已经编程了几年,最近又开始更多地使用ReSharper。ReSharper经常向我建议的一件事是“反转'if'语句以减少嵌套”。 假设我有以下代码: foreach (someObject in someObjectList) { if(someObject != null) { someOtherObject = someObject.SomeProperty; } } ReSharper建议我这样做: foreach (someObject in someObjectList) { if(someObject == null) continue; someOtherObject = someObject.SomeProperty; } 看来,无论进行多少嵌套,ReSharper都会总是建议我反转IF。这个问题是我至少在某些情况下喜欢嵌套。对我来说,似乎更容易阅读和弄清某些地方的情况。并非总是如此,但有时我感到更舒适的嵌套。 我的问题是:除了个人喜好或可读性之外,还有其他减少嵌套的理由吗?是否存在性能差异或其他我可能不知道的东西?

13
使用布尔参数确定值是否错误?
根据使用布尔参数确定行为是否错误?,我知道避免使用布尔参数来确定行为的重要性,例如: 原始版本 public void setState(boolean flag){ if(flag){ a(); }else{ b(); } c(); } 新版本: public void setStateTrue(){ a(); c(); } public void setStateFalse(){ b(); c(); } 但是,使用boolean参数来确定值而不是行为的情况如何呢?例如: public void setHint(boolean isHintOn){ this.layer1.visible=isHintOn; this.layer2.visible=!isHintOn; this.layer3.visible=isHintOn; } 我试图消除isHintOn标志并创建2个单独的函数: public void setHintOn(){ this.layer1.visible=true; this.layer2.visible=false; this.layer3.visible=true; } public void setHintOff(){ this.layer1.visible=false; this.layer2.visible=true; this.layer3.visible=false; } …

13
在不允许下划线使用整数常量的语言中,创建10亿个常量的好习惯吗?
在不允许在整数文字中使用下划线的语言中,创建一个十亿常量是个好主意吗?例如在C ++中: size_t ONE_BILLION = 1000000000; 当然,我们不应该为小数(例如100)创建常量。但是对于9个零,可以很容易地忽略零或在代码中添加一个额外的数字,如下所示: tv_sec = timeInNanosec / 1000000000; tv_nsec = timeInNanosec % 1000000000;

14
在紧迫的期限内清理别人的代码有多重要?[关闭]
(我说的是HTML / CSS代码(不是编程语言),但我认为我们也面临与程序员相同的问题。) 我是团队中的高级前端设计师,而且我经常不得不在紧迫的期限内重新处理初级人员的输出。 我面临两个问题: 他们的编码风格有点混乱。 美学不好。 我发现,它们的编码风格是混合的,没有适当的约定/标准。在清理代码或只是处理他们的代码(甚至复制他们的工作方式)之间,我感到很痛苦。 我确实觉得遵循他们的编码风格感到沮丧,因为我觉得我可能会学到坏习惯。但是,那是完成截止日期的最快方法。 对于那些有更多经验的人,哪个更有效?我应该保存清理以备后用吗?还是在进行更改时进行清理? (尽管我不想听起来很自大,但这是现实。要花更多的时间来编写更好的代码。我知道,我刚开始写的是凌乱的代码。)

11
是否可以在不遵循最佳实践的开源项目上进行编码样式更改?
最近,我在GitHub上遇到了许多开源Ruby(或大多数是Ruby)项目,当使用诸如Rubocop之类的代码分析工具进行检查时,会造成很多冒犯。 现在,大多数此类违法行为包括使用双引号而不是单引号(未插值时),不遵循每级2个空格规则,超过80个字符的行长规则或对多行块使用{和}。 [The Ruby风格指南]推荐了最佳实践,以便现实世界中的Ruby程序员可以编写可由其他现实世界中的Ruby程序员维护的代码。〜资料来源:Ruby样式指南 尽管它们很小且易于修复,但是否适合通过修正违规并提出“拉取请求”来更改开源项目的编码风格?我承认,某些项目(例如Rails)不接受外观更改,而有些项目太大而无法一次“修复”(例如,在运行Rubocop时,Rails会产生80,000多个违规行为-不管它们有自己的一小套编码)贡献时应遵循的惯例)。毕竟,《Ruby样式指南》与诸如Rubocop之类的工具一起存在是有原因的。 人们喜欢一致性,因此对Ruby社区来说,进行此类更改通常是一件好事,对吧? [Ruby样式指南的作者]并非一无所有地提出了所有规则-它们主要是基于我作为专业软件工程师的广泛职业,以及来自Ruby社区成员和各种人的反馈和建议。高度评价的Ruby编程资源,例如“ Programming Ruby 1.9”和“ The Ruby Programming Language”。〜资料来源:Ruby样式指南 难道不是遵循社区编码风格的惯例和最佳实践基本上是在鼓励不良实践吗?

8
使用方法链接时,我是否重用对象或创建对象?
使用方法链接时: var car = new Car().OfBrand(Brand.Ford).OfModel(12345).PaintedIn(Color.Silver).Create(); 可能有两种方法: 重用同一对象,如下所示: public Car PaintedIn(Color color) { this.Color = color; return this; } Car在每个步骤中创建一个新的类型的对象,如下所示: public Car PaintedIn(Color color) { var car = new Car(this); // Clone the current object. car.Color = color; // Assign the values to the clone, not the original object. return …

8
在Java中使用`this`关键字可以接受的样式是什么?
我来自Python或Javascript之类的语言(以及其他一些不太面向对象的语言),并且我试图提高我的Java工作知识,而我只是以肤浅的方式知道这些知识。 总是this在当前实例属性之前添加前缀是否被认为是不好的做法?我觉得写起来更自然 ... private String foo; public void printFoo() { System.out.println(this.foo); } ... 比 ... private String foo; public void printFoo() { System.out.println(foo); } ... 因为它可以帮助我区分实例属性和局部变量。 当然,在像Javascript这样的语言中,始终使用会更有意义this,因为可以嵌套更多的函数,因此局部变量来自更大的作用域。据我了解,在Java中,这样的嵌套是不可能的(内部类除外),因此可能不是什么大问题。 无论如何,我都倾向于使用this。会觉得很奇怪而不是习惯吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.