9我们暗中爱的不良编程习惯

打破规则可以带来一点刺激 - 并产生更好,更高效的代码

9我们暗中爱的不良编程习惯
维基百科

我们已经完成了它:当妈妈没有看时,陷入困境,围绕死人的曲线一点太快了。在仪表到期后,我们甚至让汽车坐在停车位。是的,我们都违反了任何数量的编程规则,每个人都同意的那些是坏事。我们暗中喜欢它。

我们在良好的编程规则中拇指向鼻子,键入了完全糟糕的代码 - 我们已经居住了。从编程神没有闪电螺栓。我们的桌面没有爆炸。事实上,我们的代码编译和发货,客户似乎足够高兴。

这是因为糟糕的编程不在同一个联赛中,例如,舔电围栏或拉扯老虎的尾巴。大多数时候,它都有所作为。规则更常见的是指导方针或风格的建议,而不是必须服从或代码死亡的艰难和快速的规则。当然,你的代码可能会被嘲笑,可能是公开的,但你支付的惯例的事实增加了一点点令人兴奋,甚至无意中地颠倒了,这比不对乐趣的社会奇体更常见的是什么。

要使事情变得更加复杂,有时违反规则更好。(Shhhh!)代码出现清洁。它甚至可能更快,更简单。规则通常是太广泛的,并且纵画的程序员可以通过打破它们来改进代码。不要告诉你的老板,但有时代码自己的方式是有意义的。

以下是有些规则的列表,其中一些可能会考虑无法实现的,但我们许多人经常突破,既成功则休息。

编程习惯第1号:使用

禁止使用在甚至存在的结构化编程的许多工具之前,日期。如果程序员想要创建循环或跳转到另一个例程,则需要键入然后是一条线号。几年后,编译器团队让程序员使用字符串标签而不是行号。那是一个热门的新功能。

有些称为结果“意大利面条代码”。任何人都不可能稍后阅读您的代码并遵循执行路径。这是一个混乱的线程,永远纠结。edsger dijkstra向粗略标题的稿件禁止命令“goto声明被认为有害”。

但绝对分支不是问题。这是结果的纠结。通常是艺术打破要么返回将提供关于代码在该点做的事情的非常干净的陈述。有时加倍对于一个案例声明,将产生比级联if-wess-else块的更适当的结构化列表更简单的东西。

有反例。Apple的SSL堆栈中的“转到失败”安全漏洞是最好的实例之一。但如果我们小心避免案例陈述和循环的一些GNARLY问题,我们可以插入好的,绝对的跳跃,使读者更容易理解正在发生的事情。我们可以放入一个打破或者返回对每个人来说,这是更清洁的,除了可能的仇恨。

编程习惯第2号:挖掘文档

我的一位朋友为一个顽固的老板工作,从未写过任何代码,只能知道每个函数必须包括文档。如果程序员没有包含评论,他们必须受到惩罚。所以我的朋友将一个伊丽莎勃勃的AI联系在一起,他的编辑和voilà,每个函数都有几行“文档”。老板没有足够聪明,以了解这些线条意味着什么,所以我的朋友脱离了钩子。他的代码已正式记录。我觉得他甚至得到了促销活动!

许多功能甚至某些课程都或多或少是自我记录的。函数与名称一样insertreservation.要么取消预订要么删除所有不需要另外三个线来解释发生了什么。选择函数的正确名称通常足够好。事实上,它比写入长文档更好,因为函数名称出现在代码中的其他地方。该文件仅在一个地方。自我记录函数名称可改善它们出现的每个文件。

有案例才能有文件更糟糕。当代码快速变化时,团队重构就像疯狂的重构,文档可以分歧。代码说了一件事,但文件正在解释发生了四五个或五个修订前的事情。这经常发生在代码的顶端,有人写了一个很好的摘要应该发生的事情。重构团队可能会谨慎地修复他们改变的功能的评论,但它们甚至可能甚至没有看到文件顶部的注释。

当代码和文本发散时,评论变得毫无价值,有时甚至是危险的。如果像这样,良好的,自我记录的代码没有评论更好。

编程习惯第3号:在一行上干扰太多的代码

沿着我的路径前往Nirvana的一位老板发出了一个令人讨厌的电子邮件给球队。突然间,我们所有人都必须重写我们的代码来遵循非常严格的风格规则。最戏剧性的要求:每个行动或步骤或条款必须在自己的行中。您不能将函数调用与点语法一起。在分支声明中,您无法在布尔中的两个或多个条款。如果定义变量,请将其放在自己的行上。如果您正在进行复杂的计算,请不要使用括号。将每个片段放在自己的线上。

他有一个点。他的法令将使调试更容易。当您踏上代码时,调试器将从action迈出操作。它不会被困在一条线上。更容易遵循。

但是男孩的代码已经很久了。当我保持插入线时,键盘上的返回键就会出现。而且我相信他吹嘘他的团队写作的多少行代码。

唉,有时它会更容易在一行中声明一堆变量。有时将所有布尔子句放在一起更简单 - 一切都更加紧凑。这意味着我们在屏幕上看到更多逻辑而不滚动。它更容易阅读,这意味着了解更快。这很简单。

编程习惯第4号:未声明类型

喜欢类型的语言的人有一个观点。当我们添加每个变量的数据类型的清除声明时,我们编写更好的更好的免费代码。暂停拼写删除类型帮助编译器标志在代码开始运行之前的愚蠢错误。它可能是一种痛苦,但它有所帮助。这是一种腰带和暂停程序来编程,即停止错误。

时代已经改变了。许多较新的编译器都足够智能来通过查看代码来推断类型。他们可以向后工作,并通过代码向前工作,直到它们可以确保变量必须是一个或者或者是其他东西。如果这些推断类型不排队,那么它们也可以提高错误标志。它们不需要我们更键入变量。

这意味着它现在更容易通过离开一些最简单的声明来节省几个比特。代码变得有点清洁,读者通常可以猜测变量命名一世在for循环中是一个整数。

有关:
12 4.
第1页,共2页
IT薪水调查:结果是