隐式编程与显式编程:概念与区别解析

Blog
Author:
Joseph SibonyJoseph Sibony
Published On:
6月 27, 2024
Estimated reading time:
1 minute

目录

众所周知,软件开发充满了行话和复杂的概念,其中之一就是隐式编程和显式编概念与两者的区别,了解这些区别将直接影响代码运行方式以及维护的顺畅程度。

所以,进入编程模式,(或许再来一杯咖啡),让我们详细探讨每种编程方式。

相信我们,这比凌晨 3 点调试代码要有趣得多!

什么是隐式编程?

隐式编程指的是代码背后发生的过程,它依赖于默认行为、类型推断和内置函数来处理任务,而不需要你指定每一个细节。

例如,想象一下你正在编写一个“Hello, World!”的脚本,你可能只需要写一条输出文本“Hello, World!”的语句,而不需要明确指定它应该被视为一个字符串。

编程语言会根据你在引号内提供的文本来推断(假设)你想要的就是这个。

什么是显式编程?

另一方面,显式编程是明确而具体地说明你希望代码执行的操作。它涉及在代码中直接指定类型、函数返回值和其他细节,而不是依赖语言来推断或假设。这里没有假设或模糊的余地,你在一步步明确地说明应该发生什么。

回到我们“Hello, World!”的例子,如果你使用显式编程,你会编写代码明确声明输出为字符串,即使这看起来很显而易见。通过这种方式,你向程序(以及任何可能阅读你代码的开发人员)明确表示你确实希望输出被视为字符串,没有任何解释的空间。

隐式编程与显式编程:主要区别

现在我们知道了如何定义隐式编程和显式编程,让我们讨论一下每种风格之间的主要区别:

运行时与预编译决策

首先,是代码中决策的时间和方式。隐式编程让语言在编译或解释期间自动处理事情。它使用上下文和约定来为你解决类型推断和默认行为等方面的问题。

另一方面,显式编程意味着在代码被编译或解释并运行之前,你控制每一个细节。你预先声明变量类型、函数返回类型和其他细节。

简洁性和可读性

然后是代码的简洁性和可读性。隐式编程可以通过减少样板代码和重复声明,使代码更短且更易读。但要注意,它也可能带来意外,因为语言会在幕后做出一些决定。例如,当你编写一个输出数字的函数时,类型可能会模糊(是整数还是浮点数?)。

相比之下,显式编程可能会使你的代码更冗长,因为你必须指定所有内容。但这种冗长带来了一个好处:清晰。因此,当你定义一个使用“int”输出整数的函数时,你确切知道你得到的是什么。

隐式和显式:在编程中的意义

每种编程语言都有一套约定,规定了你需要多么隐式或显式地编写代码。

C++ Java 等语言为例,这些语言以显式著称。你通常需要声明变量类型、函数参数和返回值。如果你在一个大团队中进行一个大型项目,显式编程可以帮助每个人确切地理解正在发生的事情。

相反,像 Python Ruby 这样的动态语言则更为宽松和隐式。你通常不需要显式声明变量类型、函数参数或返回值。这可以加快你的工作流程,但可能引入模糊性,因为你的代码在表面上不是那么显式可解释的。

混合和匹配隐式和显式编程

这里变得有趣了:你经常在单一语言中混合和匹配隐式和显式编程风格。例如,尽管 C++ Java 具有显式特性,但它们具有“auto”类型推导和“var”等特性,这引入了一些隐式性。这些特性让编译器推断类型,省去了你编写类型的麻烦。

另一方面,Python 最近引入了可选的类型提示。这些提示允许你显式地指定类型,这对于维护大型代码库或团队合作来说是救命稻草。

最终代码解析

好了,这就是隐式编程与显式编程的概念与主要区别解析!

那么,哪种风格更好,显式还是隐式?唯一有效的答案是,这取决于具体情况,两种风格各有优缺点。在隐式和显式编程之间的选择归结为你使用的语言、项目的规模和复杂性以及你的个人编码风格。

不过,为什么不试试 Incredibuild 强大的加速平台呢?

Incredibuild 加速你的构建时间,使快速迭代和测试变得轻而易举。此外,其强大的分布式计算可以像专业人士一样处理复杂的模拟。而且,它与所有你喜爱的 C++  IDE 和构建工具完美兼容。

准备好提升你的软件水平了吗?今天就来了解 Incredibuild

隐式编程与显式编程常见问题

什么是编程中的隐式和显式声明?

编程中的隐式声明是指语言为你找出关键细节。

你不指定变量类型,语言从你分配的值中推断出来。这就像说“我要一杯咖啡”,然后咖啡师知道给你一杯普通的黑咖啡。

而显式声明是指你自己提供所有细节,需要明确指定变量应该是什么类型。这就像说“我要一大杯加多泡沫的卡布奇诺”,你没有留任何猜测的空间。

什么是隐式编程的例子?

想象一下你在使用 Python JavaScript 编写代码,当给变量赋值时,你不需要声明其类型。

例如,如果你将变量设置为 42x=42),语言自动知道它是一个整数,而不需要你指定。这就是隐式编程,语言在幕后处理类型推断。

什么是显式编程的例子?

想想像 C++ Java 这样的语言,你需要显式声明每个变量的类型。例如,如果你想存储数字 42,你会在赋值之前明确声明变量为整数类型(int x = 42)。

这样,你可以从一开始就明确定义变量的类型。