因此,我正在用C ++编写我的第一个项目,似乎需要更多的精力来使代码“干净”,而不仅仅是工作。也就是说,似乎C ++允许编写丑陋但有效的代码。
这让我开始思考,
编程语言可以通过设计强制执行干净的代码吗?已经有这样的语言了吗?
另外,如何将其作为设计原则纳入编程语言开发/理论中?使用什么样的措施?
因此,我正在用C ++编写我的第一个项目,似乎需要更多的精力来使代码“干净”,而不仅仅是工作。也就是说,似乎C ++允许编写丑陋但有效的代码。
这让我开始思考,
编程语言可以通过设计强制执行干净的代码吗?已经有这样的语言了吗?
另外,如何将其作为设计原则纳入编程语言开发/理论中?使用什么样的措施?
Answers:
语言设计对“纯净代码”的主要影响是在语法层面上。具有许多速记和晦涩运算符(Perl / APL)的语言很容易出现“脏”代码,而元素较少的语言(例如Python)会使它们更干净。
但是,语义学是完全不同的动物。无法强制以一种干净的方式使用某种语言的语义,特别是因为作为编译器,您无法知道该语言的用户想要完成的工作。一个强大的工具就是-一个强大的工具,无论好坏。
归根结底,语义比语法更重要。这也是作为维护开发人员最难理解的部分(例如“此代码实际上是什么意思?我知道它的作用是什么……”)。
因此,我想说没有强制执行简洁代码的设计,但是您可以编写具有简洁语义的简单语法,从而使编写起来更加容易。无论好坏,干净的代码主要是开发人员的知识,动力,纪律和技能的问题。
语言可以强迫或鼓励程序员解决某些类的错误,这是干净代码定义的一部分。例如,多种语言在解决以下问题方面做得相对不错:
但是,这只会使您陷入困境,因为干净的代码主要是关于人与人之间的交流。编程语言实际上只有一个杠杆可以帮助实现这一点,这就是它们的表达能力。这确实是一个很难定义的术语,但是从根本上来说,好的程序员可以使用更具表现力的语言编写更简洁的代码。他们拥有更多可用的工具,可以轻松表达与其他人进行良好交流的算法。别误会,您可以(几乎)使用任何编程语言编写简洁的代码。只是有些语言使它变得更容易,并且具有更好的相对结果。
但是,您不能仅仅提高表现力,人们会神奇地开始编写更好的代码。对于大多数程序员来说,您给他们更多的旋钮来切换他们的语言,他们不知道如何正确使用它们,因此他们的代码实际上最终会变得更糟。需要纪律和良好的指导才能提高您的代码质量。没有银弹。
如果可以量化它,则可以创建一种可以对其进行优化的语言。
虽然我不知道实际上执行“干净代码”策略的任何特定语言,但是在构建中运行的样式警察很常见。
这是独立于语言而又是单独步骤的主要原因在很大程度上取决于优先级。为了使编程人员具有最大的灵活性,以得到最广泛的采用,这是编程语言的最大利益。有太多不同的编程语言和DSL,它们会通过挑剔和对允许输入的内容进行人为限制,从而人为地限制了用户群,这可能会妨碍更广泛的采用。
例如,强迫人们写代码与C#的最大利益无关。
if (condition)
{
代替
if (condition) {
但是可以将样式检查器视为挑剔的,因为这是他们设计的目的。
所以,要回答这个问题
编程语言可以通过设计强制执行干净的代码吗?
重点矿
绝对可以,只要您为“干净代码”的含义提供了明确的定义。
例如,我可以定义“干净的代码”来表示:
并且您可能不同意其中的一些或全部约定,但最终这些约定是可以量化的,可以通过编程方式强制执行。