Questions tagged «code-quality»

有关编写高质量代码的最佳做法的问题。

13
我们是否应该避免C ++具有但Java没有的语言功能?
假设我只能在项目环境中使用C ++。防止使用C ++拥有但Java没有的某些语言功能是否很好(例如:多重继承,运算符重载)? 我认为原因是: 由于Java比C ++更新,因此如果Java没有提供C ++具有的功能,则意味着该功能不好,因此我们应避免使用它。 具有C ++特定功能(例如:朋友功能,多重继承)的C ++代码只能由C ++程序员维护或检查,但是如果我们只编写Java之类的C ++(没有C ++语言特定的功能),则两者都可以维护或检查代码。 C ++和Java程序员。 有一天可能会要求您将代码转换为Java 没有C ++特定功能的代码通常更易于维护 每个C ++语言特定的功能(例如:多重继承)都应具有在Java中实现的替代方法。如果不是这样,则意味着设计模式或代码体系结构存在问题。 真的吗?
110 java  c++  code-quality 

14
简洁在什么时候不再是一种美德?
最近的错误修复要求我检查其他团队成员编写的代码,在这里发现了这一点(它是C#): return (decimal)CostIn > 0 && CostOut > 0 ? (((decimal)CostOut - (decimal)CostIn) / (decimal)CostOut) * 100 : 0; 现在,有充分的理由进行所有这些强制转换,这仍然很难遵循。计算中有一个小错误,我不得不解开它以解决问题。 我从代码审查中知道了此人的编码风格,他的方法是较短的总是更好。当然,这里还有价值:我们都已经看到了不必要的复杂的条件逻辑链,这些逻辑可以与一些位置合理的运算符一起整理。但是他显然比我更擅长追随运营商,他们陷入了一个单一的问题。 当然,这最终是样式问题。但是,是否有任何关于识别代码简洁性不再有用并成为理解障碍的观点的写作或研究? 进行强制转换的原因是实体框架。数据库需要将它们存储为可空类型。小数?不等同于C#中的Decimal,需要进行强制转换。


30
查看代码时,哪些事情会立即敲响警钟?[关闭]
几周前,我参加了一次软件工艺活动,当时发表的评论之一是“我相信我们在看到错误代码后都会认出错误代码”,每个人都明智地点头,无需进一步讨论。 这种事情总是让我感到担忧,因为有人认为每个人都认为自己是高于平均水平的司机。尽管我认为我可以识别错误的代码,但我还是想了解更多有关其他人认为代码气味的信息,因为很少有人在博客上或仅在少数书籍中对此进行详细讨论。尤其是,我想听到一种语言而不是另一种语言中的代码味道会很有趣。 我将从一个简单的开始: 源代码管理中注释掉代码比例很高的代码 -为什么在其中?是要删除吗?是半成品吗?也许不应该将其注释掉,而只有在有人测试某些东西时才进行注释?就个人而言,我发现这种事情确实很烦人,即使只是到处都是奇数行,但是当您看到大块的代码散布在其余的代码中时,那是完全不可接受的。通常,这也表明该代码的其余部分也可能具有可疑的质量。

13
如何处理初级开发人员的“差不多好”的代码?[关闭]
我有一个有关团队管理的问题。现在,我正在与一个初级开发人员打交道,该人员正在编码工厂远程工作。这个家伙很容易受到批评并且乐于学习,但是我有些怀疑我应该投入多少。 现在,当某些事情变得直截了当且显而易见时,就会违反良好做法:例如违反SRP,上帝反对,方法或变量的无意义名称;我指出他必须解决的问题,并尝试解释为什么这是错误的。 我的问题是:何时停止?现在,如果存在一些轻微的违反编码风格的行为,例如变量名使用了错误的语言(以前的团队使用西班牙语和英语混合,并且我试图解决该问题),或者如果我遇到一些结构性的小问题,我可以放手进行修复,如果我有任何空闲时间或碰巧需要修改有问题的课程。我觉得这对团队士气是有好处的,所以我不会不断地向初学者介绍代码,这些细节看起来像是很小的细节,这可能会令人沮丧,但是我也担心过于“软化”会阻止这个家伙从学习如何做一些事情。 我如何在教这个人与不因不断批评而把他烧光之间平衡?对于一个大三学生来说,如果您告诉他重做一些他眼中正在工作的东西,那可能会令人沮丧。

11
为什么main()应该很短?
我已经进行了9年以上的编程工作,并且根据我的第一位编程老师的建议,我始终将我的main()函数保持得非常简短。 起初我不知道为什么。我只是听从而不理解,这让我的教授们非常高兴。 在获得经验之后,我意识到,如果我正确地设计了代码,则具有短main()函数的情况就会发生。编写模块化代码并遵循单一职责原则,使我的代码可以“分批”设计,并且main()无非是推动程序运行的催化剂。 快到几周前,我正在查看Python的源代码,然后找到了该main()函数: /* Minimal main program -- everything is loaded from the library */ ... int main(int argc, char **argv) { ... return Py_Main(argc, argv); } 是的python。短main()函数==良好的代码。 编程老师是对的。 想深入了解一下,我看了一下Py_Main。整个定义如下: /* Main program */ int Py_Main(int argc, char **argv) { int c; int sts; char *command = NULL; char …

20
减少代码中的行数有多重要?
我是从事J2SE(核心Java)的软件开发人员。 通常在我们的代码审查期间,我们被要求减少代码中的行数。 这并不是删除多余的代码,而是遵循一种专注于用更少的代码行来完成相同事情的样式,而我相信即使要增加行数,代码也要清晰。 您认为正确的做事方式是什么? 如果LOC(代码行)很小,它将如何影响代码?如果LOC是一个较大的数字,它将如何影响代码? 网站上的示例:“ javaranch”- public static void happyBirthday(int age) { if ((age == 16) || (age == 21) || ((age > 21) && (((age % 10) == 0) || ((age % 25) == 0)))) { System.out.println("Super special party, this year!"); } else { System.out.println("One year older. Again."); …

15
为什么干很重要?
非常简单,当我需要做的就是重复几次相同的过程并做一些细微调整后,为什么还要编写适用于所有情况和可伸缩数据的代码? 我不太可能需要在不久的将来再次进行编辑。 看起来要减少很多工作... function doStuff1(){/*.a.*/} function doStuff2(){/*.b.*/} function doStuff3(){/*.c.*/} 如果我需要添加一些内容... function doStuff4(){/*.d.*/} 如果我需要将其删除,则可以将其删除。 很难弄清楚如何将所有这些都变成一个简单的模式,以便我可以将数据输入并处理所有情况,并进行很多我不希望拥有的更改去做。 当看起来像快速剪切+粘贴会减少工作量时,为什么要干呢?
81 code-quality  dry 

9
当代码远离“干净代码”实践时,如何维护庞大的开源库?
我仍然缺乏编写高质量代码的经验,因此我阅读了解决诸如Robert C. Martin的Clean Code之类的问题的书籍,并不断检查著名库的代码以提高我的技能。 尽管许多开源库已经维护了多年,这意味着它们不太可能走在正确的道路上,但我发现其中许多代码与编写干净代码的原理相去甚远,例如包含数百行代码。 因此,我的问题是:干净代码的原则是否太受限制,我们可以在许多此类库中不使用它们吗?如果没有,如何在不考虑许多这些原则的情况下维护庞大的库? 任何简短的说明,我将不胜感激。如果这个问题对一个新手来说似乎很愚蠢,我深表歉意。 编辑 在Butterknife库中查看此示例-Butterknife库-Android社区中最知名的库之一。

6
所有的魔术数字都一样吗?
在最近的项目中,我需要将字节转换为千字节 kibibyte。代码很简单: var kBval = byteVal / 1024; 编写完之后,我就完成了其余的功能并继续进行。 但是后来,我开始怀疑我是否在代码中嵌入了一个幻数。我的一部分说这很好,因为该数字是固定的常数,应该很容易理解。但是我的另一部分认为,如果将其包裹在一个已定义的常量(如)中,它将非常清晰BYTES_PER_KBYTE。 那么,众所周知的常数是否真的那么神奇呢? 相关问题: 数字什么时候是魔数?而被认为是在代码中的每个号码的“幻数”?-相似,但问题比我要问的要广泛得多。我的问题集中在那些问题中没有解决的众所周知的常数上。 消除魔术数字:什么时候该说“不”?也是相关的,但专注于重构,而不是常数是否为幻数。

13
进行代码审查的最有效方法是什么?[关闭]
我从来没有找到执行代码审查的理想方法,但是我的客户经常需要它们。每个客户似乎都以不同的方式来做他们,而我从未对其中的任何一个感到满意。 您执行代码审查的最有效方法是什么? 例如: 是一个人被认为是质量的守门员并审查代码,还是团队拥有该标准? 您是否使用投影仪作为团队练习来检查代码? 是亲自完成,通过电子邮件还是使用工具完成的? 您是否避免使用代码编程和集体代码所有权等评论来确保代码质量?

10
我被迫编写错误的代码。如何保存我的脸?[关闭]
我只是一个初级开发人员,但是我的工作迫使我使用非常糟糕的PHP代码(想想您所见过的最糟糕的PHP代码;然后再考虑糟糕两倍的代码)。我通常会尝试修复错误并与代码库抗衡以添加新功能。有时,我被勒令让事情尽快运行,而这往往涉及肮脏的骇客。 该产品以前是开源的,我担心它将来可能会开源。如果有人(尤其是潜在的雇主)能在某些变更集旁边找到我的名字,我会感到ham愧。我该怎么做才能保护自己的好名声? 我不确定这是否有意义,但我要补充一点,我的老板和同事都不想承认代码不好,但是我不确定我是否可以为此责怪他们-对于许多人来说,这就是他们的第一份工作。

12
防止在截止日期后编译不赞成使用的代码[关闭]
在我的团队中,我们已经在一个大型整体项目中清理了很多旧东西(整个类,方法等)。 在执行这些清理任务时,我想知道是否存在比平时更好的注释或库@Deprecated。@FancyDeprecated如果您在特定日期过去之后仍未清除旧的未使用的代码,则这将阻止项目的构建成功。 我一直在Internet上搜索,但找不到具有以下功能的任何东西: 应该是注释或类似内容,以便在特定日期之前放入要删除的代码中 在此日期之前,代码将被编译,并且一切将正常运行 在此日期之后,代码将无法编译,并且会向您显示一条消息,警告您有关该问题的信息 我想我正在寻找一个独角兽...任何程序语言都有类似的技术吗? 作为一个计划,BI正在考虑通过对打算删除的代码进行一些单元测试来制造魔术的可能性,这些测试在“最后期限”开始失败。你怎么看待这件事?有更好的主意吗?

11
如何量化项目中存在的技术债务金额?
有谁知道是否有某种工具可以将某种代码基础的技术债务作为一种代码指标?如果不是,是否有人知道它的算法或启发式方法? 如果到目前为止这些东西都不存在,那么我将对如何开始使用这种东西感兴趣。也就是说,如何量化由方法,类,名称空间,程序集等引起的技术债务。 我对分析和评估C#代码库最感兴趣,但也请随时注意其他语言,尤其是在概念是语言超越的情况下。

16
我们有责任改进旧代码吗?
我正在查看我编写的一些旧代码。它可以工作,但不是很好的代码。我现在比那时知道的更多,所以我可以改善它。这不是当前的项目,而是当前的,有效的生产代码。我们是否有责任退一步来改进我们过去编写的代码,还是正确的态度“如果没有破裂,就不要修复”?几年前,我公司赞助了一次代码审查课程,其中一项主要收获是,有时它已经足够了。继续。 因此,在某个时候您应该只称其足够好并继续前进,还是应该在认为可能更好的情况下尝试推动项目以改进旧代码?

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.