boluobenbo 发表于 2023-6-23 00:42:14

isdkz 发表于 2023-6-23 00:44:53

参数验证在编写代码时是一个非常重要的环节,尤其是在写企业级别的代码时。这是因为参数验证可以帮助确保代码的稳定性,防止因参数类型错误,数量错误,值错误等导致的程序崩溃或不可预期的行为。另外,对于API和库函数,参数验证还有助于提供明确的错误消息,帮助使用者更好地理解如何正确使用这些函数。

在编写企业级代码时,具体是否需要进行参数验证,以及如何进行参数验证,往往取决于编程语言和代码规范。以下是一些可能的规范:

1. 所有的公开函数(即被其他模块或者类使用的函数)都需要进行参数验证。
2. 私有函数(即只在当前模块或者类内部使用的函数)可能不需要进行参数验证,因为其输入被当前模块或类的其他代码控制,可以确保参数的正确性。
3. 对于那些已经通过其他方法(如类型系统)确保了参数正确性的函数,可能不需要再进行参数验证。

在C或C++中,没有官方的参数验证函数,需要程序员自行编写验证代码。这可能包括检查输入的类型(尽管在静态类型语言中这个问题较小),检查参数的数目和值等。如果在函数开始处添加参数验证,可以在问题发生之前捕获错误,从而提高代码的稳健性。

在一些情况下,可能会选择不进行参数验证,例如:

1. 当性能是关键考虑因素,且已经可以确保参数总是正确的时候。
2. 在快速原型开发或者探索性编程中,可能首先关注功能实现,而非参数验证。

总的来说,参数验证是一种良好的编程实践,可以增加代码的稳定性和易用性。但是,是否以及如何进行参数验证应根据具体情况和代码规范进行决定。

boluobenbo 发表于 2023-6-23 00:51:57

isdkz 发表于 2023-6-23 00:53:55

boluobenbo 发表于 2023-6-23 00:51
谢谢详实的回复。有两个延伸的问题请教:
1、既然参数验证这么重要,为什么C或C++不提供官方的参数验证 ...

1. 对于C和C++等静态类型语言来说,许多类型错误都可以在编译时被捕获,而不需要在运行时进行检查。这就减小了运行时参数验证的需求。此外,C和C++的设计哲学强调给予程序员最大的控制权,包括在参数验证方面。这意味着这两种语言不会提供一种"一刀切"的参数验证机制,而是允许(并期望)程序员根据需要编写自己的验证代码。

    Python提供了一些内建的功能来帮助参数验证,例如 assert 语句和 isinstance 函数。另外,有许多开源库提供了更强大的参数验证功能,例如 voluptuous , schema , marshmallow 等。这些库通常提供一种声明性的方式来描述和验证数据结构。

2. 有关参数验证的内容,通常会在一些关于编程最佳实践或者软件工程的书籍中进行讨论。例如,《Clean Code》(《洁净的代码》),《Code Complete》(《代码大全》),《Pragmatic Programmer》(《程序员修炼之道》)等书籍都包含了关于编写良好函数,包括参数验证的内容。

    此外,许多编程教材和在线教程也可能会包含这方面的内容。具体到某一种语言,例如Python,那么你可能会在一些关于Python最佳实践的书籍或者教程中找到这方面的内容。

    无论是书籍还是教程,学习参数验证的最佳方式是结合实践,尝试在自己的代码中应用这些原则和技术,并观察其对代码质量的影响。

boluobenbo 发表于 2023-6-23 01:27:50

页: [1]
查看完整版本: 在企业写代码时,建立函数时都要进行参数验证么?