我喜欢编程。从我小时候起,我就一直在弄乱代码。我从来没有走过专业路线,但是我已经为各种雇主编写了一些内部应用程序的代码,其中包括一个项目,我在其中为银行建立了一个内部交易管理/报告系统。我很快就掌握了东西,理解了很多概念,并在整个编码过程中都感到很自在。

这么说,我感觉我永远都不知道自己的程序是否有用。当然,它们可以工作-但是代码是干净,紧凑,写得很好的东西吗,还是另一个编码器会看它并打我头?我在Stack Overflow上看到了一些东西,这让我大吃一惊,并使我进行编码的尝试显得微不足道。我的雇主对我所做的事情感到满意,但是没有同行评审,否则我就处于黑暗之中。

我已经研究了同行代码评审,但是很多东西不能由于NDA或机密性问题而被张贴。你们中的很多专业人士可能都有队友在您的肩膀上看东西或与他们讨论想法,但是像我这样的独立和独奏者呢?您如何学习最佳实践,并确保您的代码能如虎添翼?

,只要它能按预期运行并提供良好的用户体验,是否“最佳”就没关系了?

评论

您可以在codereview.stackexchange.com上发布摘要以供同行评审:)

在SO上看到的一些令人难以置信的东西不要太过分。我是一个非常优秀的程序员,但我仍然感到震惊-这就是为什么我来这里(而不是其他地方)寻求帮助! SO应该以一种很好的方式打动您的头脑,而不是让您感到自卑!站在巨人的肩膀上,所有这些。

当我醒来时,我的大部分非常好的代码都会消失...

好的代码是不需要注释的代码,例如“您不应理解” :)

@Maxpm-“其他开发人员”可能会在几年后成为您自己,以重新访问您的旧代码。到那里去做,拍了拍手,得到了疤痕证明。

#1 楼

对我来说,最大的提示是:

当您不得不返回并添加/修改功能时,会很难吗?进行更改时,是否会不断破坏现有功能?

如果以上回答是“是”,则您的总体设计可能不佳。

(对我来说)至少)在需要对更改做出响应之前很难判断一个设计(当然,这是出于一定理由;有些代码很糟糕,您可以马上说出来,但这甚至是有经验的。)

评论


这个。 10个。

– Kaleb Brasee
2011-3-24在23:54

+1,并且:如果您不必再更改一段代码,则是否“好”也没关系。鲍勃叔叔说:“一次子弹”。

– pdr
2011-3-25在2:55

@pdr:同意。我试图一直写出最好的代码,但是有时您不得不处理一些奇怪的情况,如果该代码不太可能更改,请使其尽可能发挥最大作用并继续前进。

– Ed S.
2011-3-25在2:58

我不断破坏现有的功能,但这是因为我对重构感到满意。磨练的另一种技巧。但这就是为什么我们发布了版本控制:-P

–杰里米·海勒(Jeremy Heiler)
2011-03-25 13:12



@Jeremy-+ 1,重构是提高技能的一种很好的工具,但是当您获得太多的强迫症(如我所知)时,它就会成为一种困扰。

–orokusaki
2011-3-25在16:19

#2 楼

这肯定是我工作的标准方法。




哪扇门代表您的代码?哪个门代表您的团队或您的公司?我们为什么在那个房间里?这仅仅是正常的代码审查,还是上线后不久我们发现了一系列可怕的问题?我们是否在恐慌中进行调试,仔细研究我们认为可行的代码?是客户成群结队而经理们垂涎三尺吗...


(罗伯特·C·马丁(Robert C Martin),清洁规范-上图打开的书)

评论


从字面上看? (10个字符)

–路易斯·瑞斯(Louis Rhys)
2011-3-25在10:15

在我的特定情况下,您会对这部动画片的准确性感到惊讶(或惊恐)。

– Phil.Wheeler
2011-3-26在9:02

“天哪,我能永远看到。”

– Maxpm
2011-3-27在0:22

我记得有关衡量比尔·盖茨会见他如何投下多少枚F-炸弹的故事。而且总是有很多。

– JeffO
2012年1月25日14:12

@jeffo这是乔尔(Joel)关于f字计数作为比尔·盖茨(Bill Gates)技术满意度的度量标准的故事joelonsoftware.com/items/2006/06/16.html

– MarkJ
13年5月18日在13:58

#3 楼

您知道您在以下情况下正在编写良好的代码:


事情很聪明,但不太聪明
算法在速度和可读性上都是最佳的
类,变量和函数都很好地命名并且有意义,而不必考虑太多
,您可以在周末休假后回到它,并且可以直接跳转
可以重复使用的事物是可重复使用的
单元测试易于编写


评论


+1为“单元测试...”如果难以记录,则可能是错误的。如果很难测试,那几乎肯定是错误的。

–kevin cline
2011年3月24日在21:29

+1代表可读性,良好的命名和聪明但又不太聪明。很好。如果它非常聪明,但是其他任何人都不可读,我就不会认为它是“好的代码”。

– Bobby Tables
2011年3月24日21:35

+1,可以在周末休假后直接跳入。我想这是自大学以来我在代码中看到的最大变化。

– Ethel Evans
2011-3-24在21:52

我更喜欢“优雅”而不是“聪明”。聪明是复杂的,优雅是简单的。

–菲利普·波特
2011-3-24在22:07

没关系,一个周末,当我在一年或一年后重返工作岗位时,我很喜欢它,我不记得写了,但是我对当时的工作印象深刻。希望它发生得更多。

–麦克·伍德豪斯(Mike Woodhouse)
2011-3-25在10:16

#4 楼

尽管您说您没有其他编码人员可以这样做,但是为了别人的方便,我将其包括在内。

代码质量测试:让另一个从未看过代码的程序员阅读该代码,以解释每个模块对您的影响。您跳入并解释某些内容的渴望越强烈,代码可能就越糟糕。如果您可以张着嘴平静地坐在那里,而他们不需要问很多问题,那么您可能很好。

为了您的利益,这里有一些关于何时不使用的一般指导原则不能有同龄人。它们不是绝对的,只是“闻起来”。

好兆头


方法往往很短,理想情况下只能执行一项任务。
您有足够的信息来调用方法而无需查看它们的主体。
单元测试很容易编写。

错误标志


由2-3个未分解为多个子任务的方法组成的长方法其他方法。
方法通过接口以外的其他方式共享数据。
如果更改一种方法(而不是接口)的实现,则需要更改其他方法的实现。
很多评论,尤其是冗长的评论。
您的代码永远无法在应用程序中运行,以提供“未来的灵活性”
大型try / catch块
您很难找到好的方法名称,或者它们包含“ “或”和“与”(例如GetInvoiceOrCustomer)
相同或几乎相同的代码块。

这里有较长的代码气味列表,这也将有所帮助。

评论


我从来不明白为什么有些人相信冗长的解释性评论是一件坏事。我评论了所有我写的东西,甚至有些复杂或混乱。当我在3个月(或3周)后回来时,它很方便,不知道该代码意味着什么,以及为什么我用这种方式编写它。评论没有错;如果您不想阅读它们,请更改语法突出显示以使其不那么引人注意。

–科迪·格雷
2011-3-25在5:12



“您很难找到好的方法名称,或者它们包含单词“ OR”和“ AND””-.NET,IEnumerable .FirstOrDefault。包含单词“或”,但非常有用。我不喜欢这种回应中许多要点的宗教观点。作为一般准则,它们是好的,但是实际上,那里的每个非平凡应用程序都可能在一个或另一个点中断所有它们。

– Ed S.
2011-03-25 5:41



“长方法由2-3个子任务组成,这些子任务没有分解为其他方法”。如果这2-3个子任务从未在您的代码中的其他地方使用,则这实际上不是必需的。我将这种抽象称为“抽象”。类似于(但不如创建通用抽象超类)(在通用抽象超类中定义类层次结构没有任何好处)(即,它永远不会变态并且没有公共元素)。将所有内容分解为最精细的粒度只会增加复杂性(并在调试过程中产生更多跳跃)。恕我直言,不必要的复杂性=代码味道。

–伊文·普莱斯
11 Mar 25 '11在8:31



@Evan-它不是关于抽象以供重用。它是关于抽象的,以便于进行可测试性和可读性。假设您有一个代码块,用于查询数据库中的订单。如果您有单独的方法“ GetOrder”,则比其他方法中的内联代码要容易得多。

–JohnFx
11 Mar 25 '11 at 13:01

@Cody-遵循良好的命名约定和编程习惯,您的代码几乎可以读成英语。如果(isCustomerPaymentOverdue(Bob)){sickDogsOn(Bob); {

–JohnFx
2011年3月26日14:57

#5 楼

就我个人而言,我认为这是我忘记代码的时候。换句话说:


错误很少发生
当错误发生时,其他人会解决它们而不会问我任何事情
更重要的是,没有人问过我什么关于我的代码
人们在阅读时没有很高的WTF / min
系统中的许多新类开始使用我的类(如史蒂夫·麦康奈尔所说的高扇入率)
很容易地在需要时修改和/或重构代码,而无需骂我(即使是我-骂我自己!)
当我猜到适量的代码时,我也喜欢它似乎适合团队中每个人的抽象

打开一年前编写的文件并看到类中所有不错的添加内容时,感觉很不错,但是修改很少,并且-很高的粉丝度! :)

当然,这些使我感到自己正在编写良好的代码,但实际上,这真的很难知道。我的猜测是,如果人们开始取笑您的代码多于取笑您,那么该担心了。

#6 楼

我有三个黄金法则:


如果我不得不复制/粘贴代码块,那我做错了什么
如果我不能把整个代码都拿走头我做错了什么
如果有人跳入并迷失了我的代码,我做错了什么

那些规则指导我进行了一些实际的体系结构改进,最终导致小型,干净且易于维护的类/方法。

评论


复制/粘贴可用于复制多个代码,而这些代码应仅保留在一个地方。

–乔纳斯·比斯特罗姆(JonasByström)
2011-3-25在16:29

#1-是的! #2-对于小型项目,是的。对于大的,不。 Linus可以一次将整个Linux内核保留在脑海中吗?我们使用抽象和封装,以便我们一次可以处理一个大问题的一部分,而不会破坏整个问题。 #3人们总是迷失在代码中。我会添加一些有关其是否需要做的指标-用户满意吗?

– GlenPeterson
13年2月6日14:43



@GlenPeterson:我不会把这个答案解释为是在谈论整个项目,而是在给定时间的整个工作范围。如果必须在编辑器窗口或API引用之间来回切换,则代码太复杂了。

–疯狂
13年11月17日在23:30

#7 楼

这是一个很好的问题,我为您甚至提出的问题而称赞。

首先,让您的头脑不时地振作起来是很好的。让您保持谦虚,让您意识到自己不了解所有事情,没有比这更好的人了,并为您提供了更好的奋斗目标。

现在,您怎么知道什么时候编写好代码?



当您的每个类都具有一个单独的,非常明确定义的目的,并与其他具有其他明确定义的目的的类分开时。
当您的方法比较短时-理想情况下少于50行,当然少于100行-其名称清楚地定义了它们的确切功能。方法不应该执行任何操作,而是其名称所隐含的含义。如果您要遍历100行或跳到很远的地方,则可以将某些内容引入其自身的功能中。
当您的代码提供一种做某事的方式时-当它不提供zig或zag选项时,而是为每个可能的操作过程提供一条线性路径,用户可以将其向下发送。
完成所有步骤后,您可以合理地减少类之间的耦合;因此,如果A类依赖于B类,并且删除了B类并将其放置在C类中,则几乎不必对A类进行任何更改。A类应该尽可能地避免对A类中发生的事情进行盲目操作
当代码中的任何人都可以读取并立即理解您的类,方法和变量名时,当'packetSize'读得更多时,就不需要'pktSize'。

正如其他人所说,从本质上讲,如果您正在进行面向对象的编程,并且当需要更改某些内容时,您会发现它像试图解开并倒回毛线球一样,代码并没有很好地遵循面向对象的原理。

如果您有兴趣进一步研究此书,我强烈推荐这本书“ Clean Code”。这对于新手和专家都是不错的阅读。

评论


100和50对我来说太多了。我不同意。

–任何人
2012年1月26日13:21

如太100/50太长或太严格?只是好奇。

–trycatch
2012年1月31日18:56

#8 楼

我的主要观点是:



可读性(对于您和其他研究您代码的人)

Maintainability(易于修改)

简单(不需要时不复杂)

效率(当然,您的代码应快速执行)

清晰(如果您的代码是不言自明的,那么大多数时候就不需要注释,命名您的方法/属性等。明智地,将冗长的代码分解,永远不要复制和粘贴代码块)

我不会将“设计”放在此列表中,因为我相信只要您的项目中保持一致,就可以编写出良好的代码而无需遵守设计模式。

关于此主题的MSDN优秀文章:什么使好的代码良好?

#9 楼

环顾四周,用自己喜欢的语言找到一个好的开源项目,然后看看它们的作用。例如,sendmail是寻找是否编写意大利面条式代码的地方。确实不是sendmail的错;它只有20年的历史,所以里面很多东西。因此,如果您的代码看起来像sendmail代码,那么您可能走错了路。

我最近还没有看过Postfix,它的设计可能很好。因此,如果您的内容看起来更像后缀,那么您的方向就正确了。

当我还是个孩子的时候开始编程时,没有互联网,您无法与之相比。但是现在有了成千上万的可供查看的代码行,您可以对是否做得正确有所了解。

仅因为Linux内核是Linux内核就可以了。并不意味着它写得很好。请记住这一点。

评论


我认为,这是您可以做的最有价值的事情。优秀的编码人员与优秀的编写人员的生产方式相同:他们阅读很多。找到一个众所周知的写得很好的开源项目,并深入其中。开始阅读代码可能会很无聊,但是如果您只是坐下来慢慢地将它拆开,几乎可以肯定,您的阅读能力将会大大提高。而且这不仅限于编码……它可能会改变有关软件开发方式的许多其他方面。正如stu所说,在开放源码时代,不乏要探索的良好代码。

–迈克·欧文斯(Mike Owens)
2011-3-25在1:55



啊! sendmail即将进入三十年代。 (来自1980/1983)实际上,我认为它的得分更高。

– ZJR
2012年5月3日,0:46

#10 楼

自从过去五个月从编程的大学领域转向行业以来,这一直是我的经验:易于使用非常重要,以至于我们只为设计用户界面而付钱。编码人员通常会迷上UI设计。
您发现,使其正常工作还不够
在现实世界中,优化变得越来越重要。
有上千种解决问题的方法。但是,通常情况下,这种方法并不能解决一些不太知名的因素,这些因素可能会对您的方法的性能产生不利影响,例如数据库身份验证,事务,文件I / O,反射,仅举几例。
可维护性是编码的一个非常重要的方面。仅仅因为您的代码经过超级优化和超级密集……并不意味着它很性感。有时它被简单地标记为“英雄编码”。
学习的是设计技能,而不是固有的。我敢肯定有一些脑力激荡的孩子,但是总的来说,针对现实世界问题的可靠设计需要时间,调查,而且最重要的是,要向上司传授知识= P
文档化不是便利,而是必要。
单元测试也是如此(当然,每个公司的情况都不尽相同)

我建议您抓住机会尝试一下开源项目。如果您与其他程序员一起工作,您将有机会了解您真正了解多少。开源项目可能是根据您的背景进行查找的最佳方法。

#11 楼

当您可以像散文一样阅读它时。

评论


它应该像an告一样阅读,并突出其重要特征。样式应采用经过彻底编辑的可接受格式。

– JeffO
2012年1月25日14:24

#12 楼

从代码和设计的角度来看,我喜欢其他人已经谈到的可维护性。

此外,我还关注稳定性。查看生产支持统计信息。如果您获得了看似基本功能的支持支持实例,但却发现许多人不了解如何使用该软件或发现该软件无法满足他们的需求,则说明存在问题。

当然,有些用户确实一无所知,但是如果随着时间的流逝,您仍然收到有关损坏,混乱或重大功能更改请求的报告,则表明以下一项或多项操作:适用:


要求已被破坏
代码已被破坏
应用程序不直观
开发人员不了解用户的需求
有人要求交货日期超过质量
有人没有很好地测试或不知道要测试什么


#13 楼

阅读良好的代码并弄清楚为什么如此。阅读错误的代码,找出原因。阅读平庸的代码,找出哪些部分是好的,哪些是坏的,哪些是好的。阅读您自己的代码并执行相同的操作。挑选几本(备受好评的)教科书,专门用于查看示例并理解为什么以这种方式编写示例。通常,请阅读代码,直到您可以分辨出好与坏之间的区别,并且可以自己编写“ Wtf?”。测试。

您通常无法识别出良好的代码,然后才能知道自己是否在编写良好的代码。仅仅因为您头顶上的东西并不代表它写得好...

(“阅读其他人的代码”在此线程上弹出了几个注释,但我认为应该这样做自己的帖子)

#14 楼

让别人接管您的工作一天,并检查他或她一天结束后的压力如何;-)

我不擅长记录和清理东西-所以我如何检查。

评论


大声笑-问题是,我的工作是混合工作...这里没有其他编码人员,没有人能理解我的意思。我是最重要的人-从Excel宏到SQL查询再到“嘿,要在下个星期二之前建立一个联系人管理系统有多难?”甚至我们的IT人员名单上也没有一位程序员。

– Jim
2011-3-24在21:18

我有此测试的变体。要求其他程序员在您的肩膀上看书,以阅读您的代码。如果您可以忍受向他们解释的需求,那可能就可以了。您被强迫做的谈话越多,就越糟。

–JohnFx
2011年3月24日在22:01

#15 楼


话虽这么说,我感觉我
从来不知道我的程序是否很好。
当然可以,但是
代码是干净,紧凑,写得很好的东西吗?
还是另一个编码器会看它并
把我打在脑海?


您是否考虑过问另一个编码员,他们对您的代码有何看法?

有些地方使用“同行评审”,即代码必须被另一个编码器接受,然后才能被代码存储库接受。

评论


我有-问题是,正如我在原始帖子中提到的那样,我的工作是这里没有其他编码人员可以展示,而且我不能在公司外部发布很多此类东西。但是,我喜欢这里有关开发开放源代码内容的想法,以使他们能够接受同行评审和其他人的代码。

– Jim
2011-3-25 14:24

我想念程序员的个人想法。在这种情况下,您需要Dó已经完成的工作。寻找同伴并进行一般性讨论。成为唯一的程序员很少是一件好事。

–user1249
2011-03-25 15:03



随意查看开放源代码的内容,但是如果您曾经在一家从事软件开发的公司工作,请确保您的雇主在贡献代码之前不拥有您的代码(或愿意将其发布)。

– cHao
2011-03-25 21:43

#16 楼

恕我直言,本质上没有“好的代码”,但是有“好的软件”。

当我们在做某事时,我们的工作受到很多约束,很多时候这会使我们产生不符合其他程序员的“好代码”标准的代码。

有人可能会说“好的代码”是易于维护的代码。对我来说,这种说法的反驳是,多么容易?我们是否需要花200%的精力来编写代码,以使其易于维护以实现“良好代码”标准,即使我们知道我们不需要维护那么多代码也是如此?很抱歉,我不这么认为。

实际上,我是在团队中真正推广“良好代码”的人,没人真正关心它。每次查看他们的代码时,我从未发现他们编写过任何完美的代码。但是,我必须接受他们确实完成了工作,并且能够充分满足我们公司的需求。当然,该应用有时有时会出错,但是我们只是及时完成了,这使我们的客户和用户感到满意,并使我们的公司遥遥领先于竞争对手。

所以,我要说的是:好的代码”就是产生所需内容的代码。您只需要考虑自己的真正需求,然后使用它来评估您的代码。

#17 楼

好的代码对人而言是主观的。一个专业的编码人员,读过很多书,参加过各种研讨会,并且使用了不同的编码技术,可能会把您的代码撕成碎片……但是,我发现代码确实表明了编码人员的经验水平。对我来说,它读起来就像一本历史书或一本自传。这是编码人员当时所知道的,或者他/她仅限于使用什么工具。

问问自己... Microsoft为什么要使用3个版本的软件才能正确处理问题?因为他们一直在纠正他们在先前版本中犯的错误。我知道我的代码在修订后总是越来越好。当然这里会有人说,我第一次写代码完美。如果您相信,那么我有一些沼泽地可以卖给您...

当您了解概念时,事情就会变得容易起来。对我来说,开始学习新东西是“我能使它工作吗?”,然后下一步是“我想知道我是否可以通过这种方式...”,然后通常在钉牢后我会问“如何使它变得更快” ...

如果您想成为一名程序员,那么您就必须深入研究它,然后再去做。这需要大量的工作,老实说,这就像一件无法完成的艺术品。但是,如果您只是想成为一个休闲爱好者,那么如果它起作用了,那就不用担心了。您必须适应周围的环境。如果您没有办法进行代码审查,那么无知是极乐=)

但是无论如何...每个人都会有自己的看法。当然,有正确的做事方式和错误的方式...但是大多数我发现,有比错误的方式做事更好的方法...

#18 楼

对于特定的代码段:

,如果它可行且可维护(请遵循您的良好做法),那么它就是好的代码。

对于您作为开发人员而言,随着时间的推移:

好是相对和动态的术语,涉及语言领域,问题领域,当前趋势,最重要的是您的经验。对于这个连续体的“良好”酸测试可能只是回顾您以前的工作,如果您说“我真的真的那样解决过吗?”那么您仍然有可能成长,并有可能继续编写良好的代码。

如果您回顾并看到完美的代码,那么您也可以-完美,并且有停滞的风险,并且您可能很快就会停止编写良好的代码。

#19 楼

释放您的代码,让一些人弄乱它,以确保它能够执行应有的功能。或者,如果您愿意,请设计规格并确保其符合所有这些规格。如果您通过了这两项测试中的一项或两项,则您的代码“立即适用”。对于大多数人来说,您的代码将永远都很棒,因为您会在一年后回来并说:“为什么这样做会更好,为什么我要这样做呢?”

更多的经验,您可以获得更好的代码。但是,如果您不断练习相同的习惯,那么您将不断陷入同样的​​陷阱。这只是古老的格言“实践使人永久”。如果您继续以正确的方式做事(例如测试您的代码以始终确保其能够按预期执行工作),那么您会变得更好。如果您继续以错误的方式做事(例如,从未在某些情况下测试代码,或者无法识别可能在哪里发生错误),您只会对代码感到固执。

评论


最好的学习方法是查看其他经验丰富的人的代码。在我开始职业生涯并开始看到别人编写的代码之前,我已经在筒仓中编程了10年左右。当我看到其他人比以前做得更好时,我的经验和良好的代码水平大大提高。

–stu
2011-3-24在21:22

希望那时我走在正确的道路上...我始终坚持不懈地追求最佳实践。我总是尝试学习做某事的最佳方法,并且当社区中存在争论时(例如,关于在iOS编程中应该/不应该使用单例的争论),我尝试学习每一方的争论并总结自己的观点心神。我会尝试牢记良好的设计习惯,继续阅读和学习,等等。谢谢您的回答!

– Jim
2011-3-24在21:24

#20 楼

拥有经验丰富的人员来查看您的代码是无与伦比的,但是有一些资源可以帮助您自己评估和改进代码。看看Martin Fowler的Refactoring(或网站)。如果您使用C ++编写,则Sutter和Alexandrescu的C ++编码标准很好。其中有很多建议与语言无关,但是其他建议也可以为其他语言推荐类似的书籍。测试驱动的开发对单独的开发人员非常有用,因为它可以在您进行过程中提供某种质量检查,并且您知道当测试变得难以编写时,这意味着您的代码可能可以使用重组。

其他一些迹象更注重过程。它们通常会导致更好的代码,但不是直接的。其中包括诸如使用源代码控制,自动构建过程,不直接在实时服务器上进行开发,使用错误跟踪软件等。

#21 楼

您可以使用代码分析工具,例如FindBugs,PMD。这将提供有关代码质量的一些信息。

#22 楼

为了更好地编写代码,我旨在确保该程序具有较高的功能和速度。确保所有内容都放置在适当的位置,以使文件,数据,功能和抽象非常明显。

之后,我进行了测试:在计算机中找到一个相当精通的人一般来说,尝试解释一些主要的代码模式。如果他们能读某种书,哇。干得好。

大多数情况下只是KISS并尝试创新,而不会崩溃。我还会对返回到代码并有一段不错的时间来改进和维护它做更多说明,但这已经很好地覆盖了。

#23 楼

永远不会。

“好的代码”只是尚无改进方法的代码。
正如Jeff Atwood所说:


是世界上少数能够产生精妙,完美代码的程序员。我们剩下的
所能做的就是让我们的
软件随着时间的流逝而变得不那么肮脏-持续改进的过程



这样,您就不必达到完美,因为有时,“充分的设计意味着糟糕的设计”。

评论


如果其他人找到了改善方法,该怎么办?

– JeffO
2012年1月25日15:01

#24 楼

我用5点来知道代码是否好:


过程,方法和类名都非常有用,但可以告诉我它们的作用。
任何包含的原因都会导致无法运行
一个月后查看代码,我可以按照流程
代码进行编译并干净地运行。
程序执行预期的操作,并且仅执行预期的操作。

对我来说,GetCustIDFromDB(var* DB,char* customer)比getcid(var* DB,char* c)更好,因为它可以告诉我我在看什么。但是* DBLookupCIDByName(var* DB,char* customer)也可以。

我经常测试看看我是否实际上仍然使用我所有的#includes ...如果可以删除它,很好。有时,可以检查您包含的标头,并通过#include来查看标头包含的内容中实际上是否需要的函数……但是我很少这样做,而且还节省了一些空间, “这可能会使添加新功能的过程变得更加困难。

#25 楼

这很难说。总是存在一个问题,那就是需要更长的时间来正确地做它,或者花费更少的时间来更快地完成它,以便您可以从事其他工作。

http://xkcd.com/844/

我回头看了看几年前编写的代码,我认为它看起来很糟糕。我们在这一领域不断学习,正确编写代码的最佳方法是查看他人的示例并从中学习。一旦您学到新东西,就可以与他人分享,以便我们所有人都可以从中受益。

评论


循环:“快速编码。它可以正常工作吗?不。”或“代码正确。您完成了吗?不。”

–Pindatjuh
2012年7月30日在23:42