Questions tagged «coding-style»

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

7
这证明goto语句合理吗?
一秒钟前,我遇到了这个问题,我从中提出了一些建议:“ break n”结构有名称吗? 对于人们来说,这是一种不必要的复杂方法,它可以指示程序摆脱双重嵌套的for循环: for (i = 0; i < 10; i++) { bool broken = false; for (j = 10; j > 0; j--) { if (j == i) { broken = true; break; } } if (broken) break; } 我知道教科书喜欢说goto语句是魔鬼,而我本人一点也不喜欢它们,但这是否有例外的理由? 我正在寻找与n嵌套for循环有关的答案。 注意:无论您回答是,否还是介于两者之间,都不欢迎完全封闭的答案。特别是如果答案是否定的,请提供一个合理的正当理由(无论如何,这与Stack Exchange法规相距不远)。

9
程序员是否应该参加写作课程来增强代码的表达能力?
假设程序员是作者,并且编写代码来表达抽象的思想和概念,并且其他程序员应该阅读良好的代码而没有困难和误解,那么程序员是否应该参加写作课程来编写更好的代码? 抽象概念和现实世界中的问题/实体是编写优质代码的重要组成部分,并且对编码语言的良好掌握应该可以使程序员更轻松或以更好的方式表达自己的想法。此外,在尝试编写或重写某些代码以使其更好时,可以花很多时间来确定函数,变量或数据结构的名称。 我认为这也可以避免编写具有多种含义的代码,这通常会导致不同程序员之间的误解。代码应始终明确表达其功能。

4
流利的接口比属性更灵活吗?为什么?
在EF 4.1 Code First教程中,给出了以下代码: public class Department { public int DepartmentId { get; set; } [Required] public string Name { get; set; } public virtual ICollection<Collaborator> Collaborators { get; set; } } 然后说明了流畅的界面更加灵活: 数据批注绝对易于使用,但是最好使用编程方法来提供更大的灵活性。 然后给出使用流畅接口的示例: protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Department>().Property(dp => dp.Name).IsRequired(); modelBuilder.Entity<Manager>().HasKey(ma => ma.ManagerCode); modelBuilder.Entity<Manager>().Property(ma => ma.Name) …
15 c#  coding-style 

6
零为常数?
我最近遇到了这个编程习惯用法: const float Zero = 0.0; 然后用于比较: if (x > Zero) {..} 任何人都可以解释一下,这实际上是否比以下方法更有效,可读性或可维护性: if (x > 0.0) {..} 注意:我可以想到定义此常量的其他原因,我只是想知道它在此上下文中的使用。

2
Objective-C的方法开销是否不建议采用“许多小方法”设计方法?
我通常喜欢使用小方法,这是Bob Martin在Clean Code中所建议的。我对Objective-C的内部知识也已经读够了,至少对它的消息分发如何工作有一些了解(bbums系列对此特别有用)。 尽管有过早的优化问题,但我想知道,Objective-c使用objc_msgSend所做的所有工作,实际上是否足够重要,以至于“许多小方法”方法对于Objective-C项目而言是不可取的。 经验发现尤其值得欢迎(也许我有时会自己进行测试)。任何编写过大型Objective-C项目的人的经验也将很棒。 澄清度 这个问题的总体语气是故意的。我不是在问特定应用程序的性能调优(这就是为什么我在这里而不是在SO上问的原因),而是更多关于Objective-C的语言特性是否会阻碍某种设计方法。我观察到我从Apple和其他各方(在github等上)看到的许多代码都倾向于大型方法(和类),并且我想知道这是否由于语言而逐渐消失了本身。当然,我可能读错了代码,或者可能是文化因素而不是技术因素导致了这种趋势(如果存在)。 (对于它的价值,我目前正在编写Objective-C,并且正在使用小的方法) 进一步要求 我同意已经给出的两个答案。我想做的另一件事是让某人指向我(希望是实质性的)开源(或其他可见的)Objective-C代码库,该代码库使用了不错的简短方法(和小型类)。我尚未在Objective-C中看到任何东西可与(例如)fitnesse来源进行比较。

14
我们应该鼓励编码风格来支持开发人员的自治,还是不鼓励编码风格来实现一致性?
开发人员if/else使用单行代码语句编写块,例如: if (condition) // Do this one-line code else // Do this one-line code 另一个使用大括号: if (condition) { // Do this one-line code } else { // Do this one-line code } 开发人员首先实例化一个对象,然后使用它: HelperClass helper = new HelperClass(); helper.DoSomething(); 另一位开发人员实例化并在一行中使用该对象: new HelperClass().DoSomething(); 开发人员更容易使用数组和for循环: string[] ordinals = new string[] {'First', 'Second', …

10
良好的编码风格对于决定雇用程序员的重要性有多大?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 即使是学生,我也被要求查看未(未通过)测试的程序员的代码(在android上创建斐波那契数字的列表)。 虽然我对编码样式非常严格,但我只是读到有人使用的“块”样式(请阅读注释!)。 在我的职位上,我建议不要雇用使用这种风格的人。该代码与我所使用的编码风格完全相反。 在寻找编码风格以及如何解决编码风格不足时,我很好奇一件事:我是否应该聘请一个会严重的麻烦 适应公司使用的编码风格? 请:这一般不应该是关于编码风格的讨论,那是更好的选择。关于聘请决定的编码风格的重要性! 更多信息: 我不是做出决定的人,我只是根据代码给出我的意见。这个家伙必须通过一次面试,我们的负责人都要检查软技能。如果他通过了这一点,那么他就必须通过我们的小技巧测试,这是有时要求我检查书面代码的地方。我不能说是或否。我只想知道编码样式对我的审查应该有多重要...

6
什么是“使用命名空间”污染?
我在看[这里]的Google编码指南,他们不建议您使用using namespace或namespace::function-如果我没有误解的话。 这也适用std吗?cout<<没有它是行不通的。本书,推荐相同。那么,如何去使用cout<<没有using namespace std;或std::cout<<? 推荐的方法是什么?std::cout<<?大多数C ++教科书都向初学者讲授错误的using namespace std;编码实践吗?
15 c++  coding-style 


5
OOP编码风格:初始化构造函数上的所有内容吗?
我仍然认为自己是一个学徒程序员,所以我一直在寻找学习典型编程的“更好”方法。今天,我的同事认为我的编码风格做了一些不必要的工作,我想听听别人的意见。通常,当我使用OOP语言(通常是C ++或Python)设计类时,会将初始化分为两个不同的部分: class MyClass1 { public: Myclass1(type1 arg1, type2 arg2, type3 arg3); initMyClass1(); private: type1 param1; type2 param2; type3 param3; type4 anotherParam1; }; // Only the direct assignments from the input arguments are done in the constructor MyClass1::myClass1(type1 arg1, type2 arg2, type3 arg3) : param1(arg1) , param2(arg2) , param3(arg3) {} …

2
现在,并不是Java接口中的所有方法声明都是公共抽象的,是否应该使用这些修饰符来声明方法?
从Java 8开始,default方法被引入接口。有效地,这意味着并非in中的所有方法interface都是abstract。 从Java 9(也许)开始,private将允许使用方法。这意味着并非in中的所有方法interface都是public abstract。 问题“在Java接口中的方法是否应使用publicaccess修饰符声明?” 在/programming/161633/should-methods-in-a-java-interface-be-declared-with-or-without-a-public-access-m的堆栈溢出中被询问 那里,大多数答案都认为public abstract不应使用,因为中的任何方法都interface不能是public abstract。这已不再是这种情况。 因此,鉴于接口的这些新功能,是否应该public abstract在Java接口方法声明中使用关键字? 在我的特定环境中,我们将有一些经验丰富的软件工程师,但没有Java经验的人会不时读取Java代码。我觉得,public abstract对于那些不熟悉接口如何具有使用这些关键字的不同规则的历史的人来说,现在将关键字排除在外会造成更多的困惑。

7
如果我的代码不能兼而有之,那么应该是DRY还是可读的?
我正在为一个简单的加密练习编写Ruby代码,并且经常遇到这个难题(如果您必须知道的话,该练习是单人密码)。这是一个问题,我是否应该使用使函数可读的描述性变量和单步语句来填充我的逻辑,而不是使用简洁,密集的语句来消除重复和/或最大程度地减少错误的机会,从而填充我的逻辑。 我最近的例子:我的程序接受输入,并且由于严格的格式准则,它可以轻松确定输入是否应该加密或解密。为简化起见,一旦加密密钥和消息被转换/生成为兼容,就可以从加密消息中减去密钥,或者将密钥添加到未加密消息中,以获得所需的输出(将密钥视为加密,消息+加密=代码;代码-加密=消息)。DRY位置告诉我,我应将加密的消息与未加密的消息进行不同的转换,这样就无需区分使用加密密钥并将其应用于消息的功能。我发现这意味着我需要在函数中嵌套一些if语句,但逻辑似乎很牢固。但是,此代码不容易阅读。 另一方面,我可以编写两个不同的函数,这些函数根据应用程序确定加密或解密时设置的标志来调用。这将更易于阅读,但会复制将加密密钥应用于消息的高级功能(导致对其进行加密或解密)。 我应该倾向于可读代码还是简洁代码?还是我错过了获得此功能并满足这两个原则的另一种方法?这是一个必须考虑项目目的并做出最佳决策以达到该目的的规模吗? 到目前为止,相对于可读代码,我倾向于强调简洁的DRY代码。

3
何时使用typedef?
我对于是否以及何时应该在C ++中使用typedef感到有些困惑。我觉得这是可读性和清晰度之间的平衡。 这是一个没有任何typedef的代码示例: int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { static std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int> lookup_table; std::map<std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator>, int>::iterator lookup_it = lookup_table.find(lookup_key); if (lookup_it != lookup_table.end()) return lookup_it->second; ... } IMO很丑。因此,我将在函数内添加一些typedef以使其看起来更好: int sum(std::vector<int>::const_iterator first, std::vector<int>::const_iterator last) { typedef std::tuple<std::vector<int>::const_iterator, std::vector<int>::const_iterator> Lookup_key; typedef std::map<Lookup_key, int> Lookup_table; static Lookup_table lookup_table; Lookup_table::iterator lookup_it = lookup_table.find(lookup_key); …
14 c++  coding-style 

7
防御样板?
对我来说,样板代码显然是不好的。但是我遇到了一个开发人员,他在减少样板方面表现出了抵制。我意识到,随着时间的流逝,我对这种厌恶情绪还没有形成,经过深思熟虑的论点。 为了使我能够形成一个令人信服的理由,即主张减少样板,有哪些反对意见?换句话说,支持样板的论点是什么(如果有)? (我的意思是我通常认为是样板程序,但是一个很好的例子是Java中的getter和setter方法。)

5
为什么我看到这么多的for(;;)构造?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 按照我的想法,for循环用于迭代已知或可确定的范围。 String[] names = //something; for ( int i = 0; i < names.length; i++ ) { //do stuff } 这等效于(除i之外): String[] names = //something; int i = 0; while (i < names.length ) { // do stuff i++; } 换句话说,for对于常用的while构建体,循环只是一种(非常有用的)语法糖。 但是,我在网络上看到很多for(;;)在功能上等同于while(true) 这是什么原因呢?为什么无限for循环比无限while循环更受青睐? //我什至看到一本完全没有使用while循环的java教科书!导致如下可怕的构造: String input = getInput(); …

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.