首先,您将苹果与橙子进行比较,所以让我尝试从两个角度来解释这一点。键入是指如何执行对值/变量的操作以及它们是否被允许。与内聚相反,耦合是指一个(或多个)软件的架构。两者根本没有直接关系。
强类型与弱类型
强类型语言(通常)是一件好事,因为行为是明确定义的。以维基百科的这两个例子为例:
弱打字:
a = 2
b = '2'
concatenate(a, b) # Returns '22'
add(a, b) # Returns 4
上面的内容可能会有点混乱,而且定义不太明确,因为某些语言可能使用 ASCII(可能是十六进制,可能是八进制等)数值来进行加法或连接,因此存在很大的错误空间。此外,很难看出a
最初是integer
a 还是 a string
(这可能很重要,但语言并不关心)。
强类型:
a = 2
b = '2'
#concatenate(a, b) # Type Error
#add(a, b) # Type Error
concatenate(str(a), b) # Returns '22'
add(a, int(b)) # Returns 4
正如您在此处看到的,一切都更加明确,您知道什么是变量以及何时更改任何变量的类型。
维基百科说:
弱类型所声称的优势在于,它比程序员需要更少的努力,因为编译器或解释器隐式地执行某些类型的转换。然而,一个声称的缺点是弱类型编程系统在编译时捕获的错误较少,其中一些可能在测试完成后仍然存在。支持多种隐式转换的两种常用语言是 C 和 C++,有时会声称它们是弱类型语言。然而,其他人认为这些语言对如何混合不同类型的操作数施加了足够的限制,因此这两种语言应该被视为强类型语言。
强类型和弱类型都有其优点和缺点,没有好坏之分。了解差异和相似之处很重要。
松耦合与紧耦合
直接来自维基百科:
在计算机科学中,耦合或依赖是每个程序模块依赖于其他模块的程度。
耦合通常与内聚形成对比。低耦合通常与高内聚相关,反之亦然。耦合和内聚的软件质量度量是由结构化设计的原始开发者 Larry Constantine 发明的,他也是这些概念的早期支持者(另见 SSADM)。低耦合通常是结构良好的计算机系统和良好设计的标志,当与高内聚相结合时,支持高可读性和可维护性的总体目标。
简而言之,低耦合是代码非常紧凑、可读和可维护的标志。在处理大量 API 或不同部分交互形成整体的大型项目时,首选高耦合。既不好也不坏。有些项目应该是紧密耦合的,即嵌入式操作系统。其他应该是松耦合的,即网站CMS。
希望我在这里有所启发:)