Questions tagged «coding-style»

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


1
引入其他局部变量作为注释替换
使用其他技术上多余的局部变量来描述正在发生的事情是一种好风格吗? 例如: bool easyUnderstandableIsTrue = (/* rather cryptic boolean expessions */); if(easyUnderstandableIsTrue) { // ... } 当涉及到技术开销时,我希望编译器能够优化此附加功能。但这是否被认为是不必要的代码膨胀?在我看来,它减少了陈旧评论的风险。

3
非可选指针与C ++中的非常量引用
在其他C ++功能,参考参数的的谷歌C ++风格指南,我读的非const引用,不得使用。 通过引用传递的所有参数都必须标记为const。 很明显,对于C程序员来说,使用引用作为参数的函数调用绝对令人困惑,但是C和C ++现在是不同的语言。如果输出参数需要,使用指针为所需的输出参数,可能对被跳过整个功能体,这使得更复杂的功能(正式增加的实施圈复杂和深度的函数的)。 我想使C ++代码尽可能容易理解/维护,因此我通常对阅读编码风格指南感兴趣。但是,为了适应团队中的最佳实践,我认为理解样式指导元素背后的原理是一个重要因素。 非常量引用真的那么糟糕吗?是只禁止Google禁止使用它们还是被普遍接受的规则?是什么证明了将输出参数实现为指针所付出的额外努力?

7
记录器在参数列表中的位置应该是什么[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 5年前关闭。 在我的代码中,我通过构造函数的参数列表为许多类注入了记录器 我注意到我将其随机放置:有时它是列表中的第一个,有时是最后一个,有时是介于两者之间 你有什么喜好吗?我的直觉说,在这种情况下,一致性是有用的,而我个人的偏好是将其放在首位,这样在丢失时更容易被注意到,而在丢失时更容易跳过。

4
分配给新对象时切换或字典
最近,我开始倾向于使用Dictionaries而不是Switch语句来映射1-1关系。我发现它的编写速度更快,并且在心理上也更容易处理。不幸的是,当映射到对象的新实例时,我不想这样定义它: var fooDict = new Dictionary<int, IBigObject>() { { 0, new Foo() }, // Creates an instance of Foo { 1, new Bar() }, // Creates an instance of Bar { 2, new Baz() } // Creates an instance of Baz } var quux = fooDict[0]; // quux references Foo …
12 c#  coding-style 

2
有什么优雅的方法可以分析工程师的过程吗?
存在很多观点认为衡量提交是不合适的。 有没有做过任何尝试吸引更多资源而不是提交的研究,例如: 浏览模式 IDE工作(预提交) 空闲时间 多任务 我想不出一种简便的方法来执行这些措施,但是我想知道是否已经进行了任何研究。 就个人而言,我确实认为,反思自己的“指标”可能是有价值的,无论(或不使用)这些指标进行绩效评估。IE浏览器会以一种无偏见的方式来反映您的习惯。但这是问答之外的讨论问题。


5
编码标准的演变,您如何处理它们?
在现有代码库的项目中,您如何处理编码标准/样式指南中的演变?假设您的团队中的某人在编程语言中发现了一种更好的对象实例化方法。并不是说旧的方法是不好的或越野的,而是新的方法不再那么冗长,而感觉却更加优雅。所有团队成员都非常喜欢。您会更改所有现有代码吗? 假设您的代码库大约有500.000多行代码。您是否仍要更改所有现有代码?还是只让新代码遵守新标准?基本上失去一致性? 您如何处理项目编码标准的演变?

5
修改通过引用传递的对象是不好的做法吗?
过去,我通常会在创建/更新对象的主要方法中对对象进行大部分操作,但是最近发现自己采用了另一种方法,我很好奇它是否是不好的做法。 这是一个例子。假设我有一个接受User实体的存储库,但是在插入该实体之前,我们调用一些方法以确保其所有字段都设置为所需的值。现在,不是调用方法并从Insert方法中设置字段值,而是调用一系列准备方法,这些方法在对象插入之前对其进行成形。 旧方法: public void InsertUser(User user) { user.Username = GenerateUsername(user); user.Password = GeneratePassword(user); context.Users.Add(user); } 新方法: public void InsertUser(User user) { SetUsername(user); SetPassword(user); context.Users.Add(user); } private void SetUsername(User user) { var username = "random business logic"; user.Username = username; } private void SetPassword(User user) { var password = "more …

3
在Golang中使用“ this”
对于Golang而言,最接近于此处的样式指南的东西是这样写的: 方法的接收者的名称应反映其身份。通常,其类型的一个或两个字母缩写就足够了(例如,“ Client”(客户)使用“ c”或“ cl”)。不要使用诸如“我”,“此”或“自我”之类的通用名称,它们是面向对象语言的典型标识符,这些标识符更加强调方法而非功能。该名称不必像方法参数那样具有描述性,因为它的作用是显而易见的,没有任何文档目的。 我个人一直只是使用“ this”作为标识符,因为“ this”是我编写和编辑函数时正在研究的重点。听起来不错,而且(至少对我而言)是有道理的。 如果名称不需要描述,那么它的作用是显而易见的,并且没有记录目的,为什么“ this”的使用会被拒绝?

3
我应该将函数嵌套在允许我执行此操作的语言中还是应该避免使用它?
在JavaScript,PL / SQL和其他一些语言中,函数可以嵌套,即在另一个函数中声明。这可用于将大型功能分解为较小的部分,但将这些部分保留在较大功能的范围内。 function doTooMuch() { function doSomething () { ... } function doSomethingElse() { ... } function doYetAnotherThing() { ... } // doTooMuch body doSomething(); doSomethingElse(); doYetAnotherThing(); } 在某些情况下,当那些较小的函数不使用较大函数的局部变量时,可以很容易地将其更改为所有函数都未嵌套的版本。 function doSomething () { ... } function doSomethingElse() { ... } function doYetAnotherThing() { ... } function doTooMuch() { doSomething(); …


4
哪种方法仅对实现接口的一个类可用,而对另一种则不可用,则是一种更好的方法?
基本上,我需要在特定条件下执行不同的操作。现有代码以这种方式编写 基本介面 // DoSomething.java interface DoSomething { void letDoIt(String info); } 实施第一类工人 class DoItThisWay implements DoSomething { ... } 实施第二类工人 class DoItThatWay implements DoSomething { ... } 主班 class Main { public doingIt(String info) { DoSomething worker; if (info == 'this') { worker = new DoItThisWay(); } else { worker …

6
命名:您是否应该为了简洁而牺牲简洁性?
例如,以下函数循环遍历包含输入字段名称和错误的数组。它通过检查验证字段的名称,然后将错误信息推送到无效的字段数组来完成此操作。 简短点说并写成更好: addInvalidField (field, message) { const foundField = this.invalidFields.find(value => { return value.name === field.name }) const errors = foundField.errors if (!errors.some(error => error.name === message)) { errors.push({ name: message, message }) } }, 还是更具体地这样? addInvalidField (validatingField, message) { const foundField = this.invalidFields.find(invalidField => { return validatingField.name === invalidField.name …

4
Ruby:if变量vs if variable.nil?
我是Ruby的新手,当我发现除nil和false之外的所有对象均为真时,我感到很惊讶。偶数为0。 关于该语言的属性的一件好事是,您可以编写: if !variable # do stuff when variable is nil end 我的同事是经验丰富的Ruby开发人员,他们坚持认为我应该选择该选项,而不要使用.nil?像这样: if variable.nil? # do stuff when variable is nil end 但是,我认为后者是一个更好的选择,原因有两个:1.我认为它更面向对象,尤其是在像Ruby这样的语言中,一切都是对象和消息交换。2.我认为,即使它不那么紧凑,它也更具可读性。 我在这里犯“新手”错误吗?

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.