我们都做到了:当勾住妈妈不注意一个cookie,周围守护的曲线走了有点太快了。我们甚至还让坐在车里的停车位仪表到期后。是的,我们都违反了任何数量的编程的基本规则,每个人都同意的那些是坏的。我们偷偷喜欢它。
我们翻阅我们的鼻子良好的编程规则,打出来的代码是完全坏的 - 而我们的生活。共有来自编程神没有闪电。我们的台式机没有爆炸。事实上,我们的代码编译和运,似乎客户满意就够了。
这是因为不好的编程是不一样的联赛,比如说,舔电动栅栏或拉老虎的尾巴。在大多数情况下,它的作品了。这些规则往往准则或建议的风格,而不是必须服从或死亡的代码将遵循硬和快速的规则。当然,你的代码可能会被人耻笑,甚至可能是公开的,但你正在逆势约定的事实增加了快感的一点点颠覆,甚至在不经意间,什么往往不是达的愉快代码社会风气。
为了使问题更复杂的,有时它是更好地打破规则。(嘘!)的代码出来清洁。它甚至可能会更快,更简单。规则通常是有点太宽,一只展翅欲飞的程序员可以通过打破他们提高了代码。不要告诉你的上司,但有时是有意义的你自己的方式编码。
下面是一些可以考虑无懈可击的九个规则列表,但我们很多人往往突破,既有成功和快乐。
编程习惯1:使用去
使用禁止去
日期时代的许多结构化编程工具之前甚至存在。如果程序员想创建一个循环或跳转到另一个程序,他们需要输入去
后跟一个行号。几年后,编译器团队让程序员使用的字符串标签,而不是行号。这被认为是一个热门的新功能,当时的情况。
一些所谓的结果“意大利面条式的代码”。这是任何人都不可能在以后读你的代码,并按照执行路径。这是线程的混乱,永远纠缠不清。Edsger Dijkstra算法与禁止题为drolly手稿命令“GOTO语句是有害的。”
但绝对的分支是没有问题的。这是纠结的结果。经常巧妙打破
要么返回
将提供什么代码在那个地方做一个非常干净的声明。有时,增加去
一个case语句会产生一些更简单多了一个结构合理的级联的if-then-else块列表理解。
有反例。在苹果公司的SSL堆栈中的“转到失败”的安全漏洞就是最好的实例之一。但是,如果我们小心地避免某些情况下,语句和循环的粗糙的问题,我们可以插入不错,绝对的跳跃,这使它更容易为读者了解发生了什么事情。我们可以把在打破
或返回
这是更清洁和更令人愉快的每个人 - 也许除了去
仇敌。
编程习惯二:成功避开文档
我的一个朋友工作的一个铁石心肠的老板谁没写过任何代码,但理解就足以知道,每一个功能必须包括文档。如果程序员不包括评论,他们必须受到惩罚。所以,我的朋友连在一起的伊丽莎般的AI到他的编辑,就万事大吉了,每一个功能有几行“的文件。”老板是不够了解的是,线意味着什么聪明,所以我的朋友打爆。他的代码被正式记录在案。我想,他甚至得到了提升!
许多功能,甚至有的班级都或多或少的自我记录。与名称类似的功能insertReservation
要么取消预订
要么删除所有
不需要另一条线或三个解释发生了什么事情。选择正确的名字的功能往往是不够好。事实上,它是比写长文档,因为该函数的名称出现在代码中的其他地方更好。该文件只在一个地方。自我记录的函数名的地方改善它们出现的每个文件。
在有些情况下,当它更糟糕的是有文件。当代码正在迅速改变和团队重构像疯了似的,文档,能发散。该守则的一两件事,但该文档解释发生了什么事四五年前修订。这种情况经常发生在那里有人写了什么应该发生的一个很好的总结了代码的顶部。重构团队可能要小心,不足以解决他们转变职能的意见,但他们可能甚至看不到的评论在文件的顶部。
当代码和文本分歧,意见一文不值,有时甚至是危险的。在这样的情况下,好,自我记录的代码是没有意见好。
编程习惯3:在一行干扰太多的代码
沿着我的道路必杀技一个老板送了一个讨厌的电子邮件的团队。突然,我们都必须重写我们的代码遵循的风格非常严格的规定。最引人注目的要求:每个动作或步骤或条款必须对自己的行。你不能链功能与点语法一起呼吁。你不能有两个以上的条款,在分支语句布尔。如果你定义一个变量,把它放在自己的路线。如果你正在做一个复杂的计算,不使用括号。把每个片段各占一行。
他有一个点。他的法令将使调试更加容易。当你通过代码加强,调试器会从步行动对行动。它不会在同一行会被卡住。这是更容易执行。
但是孩子做了代码得到长。我的键盘上的回车键坏了,我不停地插入线。我敢肯定,他吹嘘如何多行代码他的团队在写。
唉,有时它可以更容易地宣布一组变量在一行。有时它是简单的把所有的布尔条款在一起 - 一切都更加紧凑。这意味着我们看到更多的逻辑在屏幕上而无需滚动。它更容易阅读,这意味着理解来自更快。就这么简单。
编程习惯4:不声明类型
谁爱类型语言的人有他的道理。我们写的更好,当我们添加的每个变量的数据类型的明确声明更没有bug的代码。暂停一会儿拼出类型有助于编译器标志愚蠢的错误代码开始运行之前。这可能是一个痛苦,但它帮助。这是一个皮带和 - 吊带的编程方法是停止错误。
时代已经变了。许多新的编译器是足够聪明,通过查看代码来推断类型。他们可以通过代码向后和向前的工作,直到他们可以肯定的是,变量必须是串
或INT
或者是其他东西。如果这些推断的类型不排队,那么就可以提高一个错误标志了。他们并不需要我们输入变量了。
这意味着它现在更容易留下了一些最简单的声明,以节省数位。该代码变得有点清洁,读者通常是很能猜测到该变量命名一世
在for循环中是一个整数。