Questions tagged «code-quality»

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

6
是什么使应用程序具有可伸缩性?
我在职位发布中不断看到,申请人必须具有编写“可扩展”应用程序的经验。是什么使应用程序具有可伸缩性?我如何知道我的代码可以扩展到数百万个用户? 我想表达这个问题的一种更好的方法是:如何在编写代码时考虑可伸缩性?这样一来,代码就可以从一开始就进行扩展,而不是事后才想到。是否有某些设计方法?还是仅仅是为工作选择正确的算法?



14
修复错误,还是等待客户找到它们?
其他人看到错误时会修复错误,还是等到崩溃/数据丢失/人死后才修复错误? 例子1 Customer customer = null; ... customer.Save(); 该代码显然是错误的,而且无法解决-在空引用上调用方法。它碰巧不会崩溃,因为Save碰巧不访问任何实例数据;因此就像调用静态函数一样。但是任何地方的任何微小更改都可能突然导致不会崩溃的代码损坏:开始崩溃。 但是,更正代码也是不可想象的: Customer customer = null; ... customer = new Customer(); try ... customer.Save(); ... finally customer.Free(); end; 可能会导致崩溃;一个没有通过全面测试的单元测试和手动用户测试发现的。 例子2 float speed = 0.5 * ((G * mass1 * mass2) / R) * Pow(time, 2); 认识物理学的人会认识到分母应该是R 2。 代码是错误的,这是绝对错误的。高估速度会导致反火箭发射得太早,杀死所有飞船上的人。 但是也有可能过高估计速度掩盖了另一个问题:在航天飞机移动得太快时,安全气囊无法展开。如果我们突然修改了代码: float speed = …
35 code-quality  bug 

14
为什么这么多开发人员认为性能,可读性和可维护性不能共存?
在回答这个问题时,我开始怀疑为什么这么多的开发人员认为好的设计不应该考虑性能,因为这样做会影响可读性和/或可维护性。 我相信,一个好的设计在编写时也要考虑性能,并且一个好的设计的优秀开发人员可以编写一个高效的程序,而不会对可读性或可维护性产生不利影响。 尽管我承认存在极端情况,但为什么许多开发人员坚持认为高效的程序/设计将导致较差的可读性和/或较差的可维护性,因此,性能不应作为设计考虑因素?

7
如果没有库就可以执行任务吗?[关闭]
我处于可以使用开源JavaScript插件完成任务的情况。但是,当我尝试使用它时,我发现自己不得不重新设计已经完成的很多工作,以我的拙见,这给项目增加了一定的复杂性。尽管我可以用干净的代码完成相同的任务,但我可以自己制作,而无需更改到目前为止的工作。 在这种情况下,您是否仍应选择一个库(例如,为了获得更好的质量代码?)

10
将成员变量作为方法参数传递
在一个项目中,我发现了这样的代码: class SomeClass { private SomeType _someField; public SomeType SomeField { get { return _someField; } set { _someField = value; } } protected virtual void SomeMethod(/*...., */SomeType someVar) { } private void SomeAnotherMethod() { //............. SomeMethod(_someField); //............. } }; 我如何说服我的队友这是错误的代码? 我相信这是不必要的并发症。如果已经有成员变量,为什么还要将其作为方法参数传递呢?这也违反了封装。 您还发现此代码还有其他问题吗?

9
在编写单元测试之前编写代码有什么缺点?
我一直看到建议,我们应该首先编写单元测试,然后再开始编写代码。但是我觉得(对我来说)走另一条路要舒适得多-编写代码,然后进行单元测试,因为在编写实际代码后,我觉得我们更加清楚了。如果我先编写代码然后进行测试,那么即使我将精力集中在创建可测试的设计上,也可能需要稍稍更改一下代码以使其可测试。另一方面,如果我先编写测试,然后编写代码,则当代码成形时,测试将非常频繁地更改。 正如我看到的有关开始编写测试然后继续进行编码的大量建议一样,如果我以其他方式进行编写,然后编写单元测试,则有什么缺点呢?



12
代码是否正在审查良好做法?
当我工作的公司雇用新的经理时,他们为我们提供了在每次会议上概述某人的代码的机会。我们每两周开会一次,因此每次开发人员要在投影机上展示他/她的代码时,其他人都将讨论它。 我认为这会很棒:每个开发人员在编写代码时都会更加小心,我们可以更好地分享我们的经验。但是不知何故,我们忘记了这一要约,而要约仍然是要约。 这有什么好处,有什么缺点吗?

16
简单是否会始终提高可读性?
最近,我正在为我们的公司开发一套编码标准。(我们是一个新团队,正在为公司扩展一种新语言。) 在我的初稿中,我设定了编码标准的目的是提高可读性,可维护性,可靠性和性能。(我忽略了可写性,可移植性,成本,与以前的标准的兼容性等) 编写本文档时,我的目标之一是推动代码简化的想法。想法是每行只能有一个函数调用或操作。我希望这将提高可读性。我从以前的语言中继承了这个想法。 但是,我对这种推动背后的假设提出了质疑: 简单是否会始终提高可读性? 是否存在编写更简单的代码会降低可读性的情况? 这很明显,但是“简单”并不是说“易于编写”,而是每行更少的内容。

13
在担任职位之前,如何确定潜在雇主守则的质量?[关闭]
根据我的经验,在您开始为公司工作之前,您没有机会查看代码库(我已经问过,出于保密原因,每个人都一直拒绝,我认为这很公平),所以在面试过程中,您是否想问最重要的问题以找出代码处于哪种状态(毕竟,如果它是狗,那么您将成为每天不得不走路的可怜的不幸者)? 更新: 清单:询问; 什么他们认为代码库。而且当您这样做时,请密切注意面部表情及其反应所需的时间。[阿农] 公司的CMM级别[DPD]是多少(如果您听到第5级的运行情况,则以其他方式运行[Doug T]) 他们使用什么生命周期[DPD](如果您确实听到了“敏捷”,那就是当您开始问一些有穿透性的问题,试图通过“敏捷”来弄清楚它们是指“敏捷还是牛仔编码” [Carson63000]) 他们使用什么工具来评估代码质量?[DPD] 他们使用什么工具进行开发?[DPD](寻找重构工具和连续构建服务器) 他们使用哪种源代码(版本控制)系统,以及良好的后续措施是询问为什么要使用它。[Zachary K]。 他们的测试程序是怎样的?[Karl Bielefeldt](特别是对于使用模拟框架并通过已建立的框架(例如NUnit / JUnit)强调彻底的自动化单元测试的团队;不要被那些不使用测试驱动的开发TDD的团队所推迟,而是如果他们不认为测试是整体软件开发不可或缺的组成部分,请保持警惕。请寻找有专门测试人员的团队。) 给新开发者什么样的任务?对于经验丰富的开发人员?[Karl Bielefeldt] 有多少人从事一个项目?[Karl Bielefeldt] 是否允许重构?鼓励?[Karl Bielefeldt] 正在考虑或最近进行了哪些与质量相关的过程或体系结构更改?[Karl Bielefeldt] 个人在模块上有多少自治权?[Karl Bielefeldt] 您将要开发较新的项目(未开发的项目)还是旧项目(未开发的项目)?(绿地开发通常更有趣,并且问题更少,因为您无需清理别人的错误)。 组织或团队中员工离职率高吗?(这通常表示代码质量较低)[M.Sameer] 您自己的一些编程问题;但请避免看起来像个混蛋。[活泼的] 开发人员如何进行协作,团队之间如何共享知识?(这应该与您的个性相匹配;我想说,单人和双人工作的混合可能是最好的,比例要符合您的社交需求) 他们的数据库与第三范式(3NF)的距离有多近?如果偏离了何处?为什么?(如果他们说“ 3NF ???”,请离开。如果没有,并且可能有充分的理由不这样做,请找出它们是什么)。 注意: 我接受了Anon的答案,因为大约一周后,社区认为这是最好的答案-我认为这表明您只是需要以某种方式开发第六感。但是,我认为每个人都有话要说。

5
在同一个文件中定义多个类是否被认为是Pythonic?
在第一次使用python时,我发现我最终在同一文件中编写了多个类,这与Java之类的其他语言(每个类使用一个文件)相反。 通常,这些类由1个抽象基类组成,其中1-2个具体实现的用法略有不同。我在下面发布了一个这样的文件: class Logger(object): def __init__(self, path, fileName): self.logFile = open(path + '/' + filename, 'w+') self.logFile.seek(0, 2) def log(self, stringtoLog): self.logFile.write(stringToLog) def __del__(self): self.logFile.close() class TestLogger(Logger): def __init__(self, serialNumber): Logger.__init__('/tests/ModuleName', serialNumber): def readStatusLine(self): self.logFile.seek(0,0) statusLine = self.logFile.readLine() self.logFile.seek(0,2) return StatusLine def modifyStatusLine(self, newStatusLine): self.logFile.seek(0,0) self.logFile.write(newStatusLine) self.logFile.seek(0,2) class GenericLogger(Logger): def …

11
哪些因素应该影响我如何确定何时与朋友一起放弃一个小项目?[关闭]
最近我发现自己处在困境中。现在已经与一个编程伙伴一起玩了将近8个月的游戏。我们都是从去年8月左右开始学习编程的新手,他是CS的二年级学生,我是一名IT贸易技术支持人员,并且是一位自学成才的程序员,拥有大量的书籍和在线订阅。 我一直看到的问题是,当我们写出一段代码时,它常常会被黑在一起,会有很多失败,如果这对我们中的一个人来说是一个全新的概念,那就是天真的解决方案。很好,我们正在学习,我希望我们的两个代码在第一遍或第二遍都被一起破解。当涉及到实际修复和重构那些被黑在一起的行为时,就会出现问题。 我的伴侣将坚持自己刚凑齐的行为,公然拒绝看到任何错误,因为它开始起作用。即使从结构上声称接近完美,即使它具有注释以及适当命名的方法和字段,我什至都无法尝试使用。无论我多么努力,我都无法让他看到明显的明显缺陷,这些缺陷将阻止行为的任何进一步更改或扩展,而又不会完全破坏行为,而与行为如此紧密耦合的所有事物也可能属于同一类。被黑客入侵的解决方案将永远保持被黑客入侵,深思熟虑的设计会像最初构思和测试时那样保持原样。 我花了很多时间来照顾新代码,就像我自己编写代码一样,我不知道该怎么做。我的伴侣今晚输了它,并明确表示,无论是什么,基准,常规做法,无可辩驳的证明,他的代码都将保持其最初的用法。即使已经写了整本关于您为什么要避免做某事的书,他也会拒绝承认其有效性,声称这只是别人的意见。 我对我们的项目有既得利益,但是我不确定是否可以继续与我的合作伙伴一起工作。我似乎有三个选择。 不再关心编译后的代码库功能,而只是尝试维护和解析几乎没有发展的行为。希望一旦事情开始严重破裂,他将看到并尝试做更多的事情,而不是仅仅对根本存在缺陷的设计施加创可贴。 继续对十年前其他能力更强的人提出的问题进行无休止的争论。 停止对该项目进行编程,放弃我的代码将近10,000行,并花费大量的时间进行设计工作,然后尝试自己寻找一个新项目。 我可以采取哪种方法来确定是否值得与这个人继续进行此项目?还是哪些因素会影响我的决定?我们已经编写了很多代码,除非有必要,否则我不想放弃。

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.