Her*_*rms 6 language-agnostic code-generation readability
我正在开发一个工具,它将生成一个接口的源代码和几个实现该接口的类.我的输出并不是特别复杂,因此输出符合我们正常的代码格式标准并不难.
但这让我想到:自动生成的代码需要多么可读?什么时候应该花费额外的努力来确保生成的代码很容易被人类阅读和理解?
在我的例子中,我生成的类本质上只是与构建的另一部分相关的一些数据的容器,其中包含获取数据的方法.没有人需要查看类本身的代码,他们只需要调用类提供的各种getter.因此,如果代码"干净",格式良好且易于人类阅读,则可能并不太重要.
但是,如果您生成的代码中包含少量简单逻辑,会发生什么?
是的,一点没错!; 我甚至可以为你讲述一个故事,解释为什么人类可以轻松阅读自动生成的代码这一点很重要......
我曾经有机会参与一个新项目.现在,当您开始编写代码时,您需要做的第一件事就是在数据库之间创建某种连接和数据表示.但是,我们不是手工编写这些代码,而是开发了自己的代码生成器,以便从数据库模式中自动构建基类.它真的很整洁,编写所有这些代码的繁琐工作现在已不在我们手中......唯一的问题是,生成的代码对于普通人来说远非可读.
当然我们没有这个,因为嘿,它只是为我们节省了很多工作.但是一段时间后事情开始出错,数据被错误地从用户输入中读取(或者我们认为是这样),数据库内部发生了损坏,而我们只读取数据.奇怪..因为阅读不会改变任何数据(再次,所以我们认为)...
像任何优秀的开发人员一样,我们开始质疑我们自己的代码,但经过几天的搜索...甚至重写代码,我们找不到任何东西......然后它就恍然大悟,自动生成的代码被破坏了!
所以现在有一个更大的任务等着我们,检查自动生成的代码,没有理智的人在合理的时间内理解......我说的是非缩进的,非常糟糕的样式代码,带有不可发音的变量和函数名称......事实证明,自己重写代码甚至更快,而不是试图弄清楚代码是如何工作的.
最后编写代码生成器的开发人员稍后会重新编写代码生成器,因此它现在可以生成可读代码,以防万一出现问题.
这是我刚刚找到的关于手头话题的链接 ; 我正在寻找"实用程序员"一书中的一章的链接,以指出我们为什么首先查看我们的代码.