首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该使用类来定义将使用相同参数的函数,还是应该使用全局变量?

在软件开发中,使用类来定义将使用相同参数的函数是更好的选择,而不是使用全局变量。以下是详细解释:

  1. 类的定义:类是一种面向对象编程的概念,它可以封装数据和函数,并通过创建对象来使用这些封装的内容。类可以定义属性和方法,属性用于存储数据,方法用于执行操作。
  2. 函数的参数:函数是一段可重复使用的代码块,它接收输入参数并返回输出结果。函数的参数用于传递数据给函数进行处理。
  3. 类的优势:
    • 封装性:类可以将相关的数据和函数封装在一起,提高代码的可读性和可维护性。
    • 继承性:类可以通过继承机制派生出子类,子类可以继承父类的属性和方法,减少重复代码的编写。
    • 多态性:类的多态性允许不同的对象对相同的消息做出不同的响应,提高代码的灵活性和扩展性。
  • 全局变量的问题:
    • 命名冲突:全局变量容易与其他代码中的变量发生命名冲突,导致不可预测的错误。
    • 可维护性:全局变量的修改和使用可能分散在代码的不同位置,增加了代码的维护难度。
    • 安全性:全局变量的值可以被任何函数修改,可能导致意外的副作用和错误。
  • 使用类的好处:
    • 封装性:类可以将函数和相关的数据封装在一起,提高代码的可读性和可维护性。
    • 代码复用:可以通过创建类的实例来重复使用类中定义的函数和数据。
    • 可扩展性:可以通过继承和多态等特性扩展类的功能,满足不同的需求。

综上所述,使用类来定义将使用相同参数的函数是更好的选择,因为它提供了更好的封装性、代码复用性和可扩展性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

深入理解Java变量

变量是我们经常用到一种,在刚学 Java 时候,也经常被各种变量概念折磨,当时并没有细抠,但是在写一篇类似的文章中,想把变量作为一种小标题简述一下,但是发现,变量这个概念还是比较繁琐,本篇文章就来深入认识一下...如果你有其他语言编程经验,比如 C、C++ 的话,你会接触到全局变量这个概念,你可以使用下面代码创建全局变量 #include // 全局变量 int A; int B;...局部变量仅在方法声明、构造函数或者块内可见,局部变量只能在调用这些方法、构造函数或者块内部使用 局部变量没有默认值,所以局部变量应该在第一次使用或者声明时候就应该初始化完成 #...成员变量和实例变量是否相同呢?我们下面有个回答 第一句就给出,实例变量和变量都称为成员变量,然后给出了 JDK 官网手册对变量定义。...另外,可以添加关键字 final 表示 常量 。 局部变量 :没有特殊关键字制定变量声明为局部变量、确定其声明完全取决于声明变量位置。

19120

Python 进阶指南(编程轻松进阶):五、发现代码异味

消息相似但不完全相同。在程序第三个改进中,对代码进行了参数化,以消除相同部分重复数据。同时,timeOfDay参数和timeOfDay循环变量替换不同部分。...但是,如果您对一系列变量使用数字后缀,请考虑用一种数据结构(如列表或字典)替换它们。 应该只有函数或模块 使用 Java 等语言程序员习惯于创建组织他们程序代码。...如果您发现创建对象只是为了进行单个函数调用,或者如果您编写只包含静态方法,这些代码异味表明您可能更适合编写函数。 在 Python 中,我们使用模块而不是函数组合在一起。...你在函数使用每一个全局变量实际上都变成了函数另一个输入,就像参数一样。更多参数意味着更多复杂性,这反过来意味着更高错误可能性。...带有数字后缀变量,比如x1、x2、x3等等,通常最好用包含列表单个变量替换。与 Java 等语言不同,在 Python 中,我们使用模块而不是函数组合在一起。

97130
  • 提高代码质量:如何编写函数

    当然这个并不是绝对,关键还是要团队共同制定和遵守同一套命名规则。 函数参数 函数使用者在调用函数时,必须严格遵守函数定义参数,这对函数易用性,可测试性等方面都是至关重要。...下面从几个方面谈谈关于如何优化好函数参数一些想法。 参数数量 毫无疑问,函数参数越多,函数易用性就越差,因为使用者需要严格眼中参数列表依次输入参数,如果某个参数输错,导致不可意料结果。...这种函数定义使用者来说非常方便,直接调用即可,不用输入任何参数。但是这里可能会有潜在bug:全局变量可能在其他地方被修改成其他值了,难以进行单元测试等等问题。...当然,在保证函数不依赖于全局变量和测试性情况下,函数参数还是越少越好。《代码大全》中提出函数参数限制在7个以内,这个可以作为我们参考。...有的时候,我们不可避免地要使用超过10个以上函数,在这中情况下,我们可以考虑类似的参数构造成一个,我们来看看一个典型例子。

    94220

    提高代码质量:如何编写函数

    当然这个并不是绝对,关键还是要团队共同制定和遵守同一套命名规则。 函数参数 函数使用者在调用函数时,必须严格遵守函数定义参数,这对函数易用性,可测试性等方面都是至关重要。...下面从几个方面谈谈关于如何优化好函数参数一些想法。 参数数量 毫无疑问,函数参数越多,函数易用性就越差,因为使用者需要严格眼中参数列表依次输入参数,如果某个参数输错,导致不可意料结果。...这种函数定义使用者来说非常方便,直接调用即可,不用输入任何参数。但是这里可能会有潜在bug:全局变量可能在其他地方被修改成其他值了,难以进行单元测试等等问题。...当然,在保证函数不依赖于全局变量和测试性情况下,函数参数还是越少越好。《代码大全》中提出函数参数限制在7个以内,这个可以作为我们参考。...有的时候,我们不可避免地要使用超过10个以上函数,在这中情况下,我们可以考虑类似的参数构造成一个,我们来看看一个典型例子。

    82720

    C++ CreateThread使用

    实际上不管线程属于哪个进程, 它们在系统怀抱中是平等; 在优先级(后面详谈)相同情况下, 系统会在相同时间间隔内运行一下每个线程, 不过这个间隔很小很小, 以至于让我们误以为程序是在不间断地运行...), 用它可以指定任何数据; 本例是把鼠标点击窗体坐标传递给线程入口函数, 每次点击窗体都会创建一个线程. 5、参数3:入口函数指针 到了入口函数了, 学到这个地方, 查了一个入口函数标准定义...; 以后会尽量使用 DWORD 做入口函数返回值....CreateThread 第三个参数函数指针, 新线程建立后立即执行该函数, 函数执行完毕, 系统销毁此线程从而结束多线程故事. 6、参数2:堆栈大小 栈是私有的但堆是公用 CreateThread...不过还是尽量使用局部变量, 或者在继承 TThread 时使用成员变量, 因为 ThreadVar 效率不好, 据说比局部变量能慢 10 倍. 7、参数1:安全设置 CreateThread 第一个参数

    1.2K30

    Python开发编码规范

    较长代码行选择Python在小括号,中括号以及大括号中隐式续行方式。 通过小括号内表达式换行方式长串折成多行。这种方式应该优先使用,而不是使用反斜杠续行。 反斜杠有时依然很有用。...方法定义用一个空行隔开。 编码 不论什么情况使用 UTF-8 吧!...在扩展切片操作中,所有的冒号必须有相同间距。例外情况:当一个切片参数被省略时,空格就被省略了。...如果使用具有不同优先级运算符,请考虑在具有最低优先级运算符周围添加空格。 有时需要通过自己判断;但是,不要使用一个以上空格,并且在二元运算符两边使用相同数量空格。...全局变量名 这些约定与那些用于函数约定差不多.被设计可以通过"from M import *"来使用那些模块,应该在那些不想被导入全局变量(还有内部函数)前加一个下划线).

    59320

    Python之函数参数,返回值,嵌套调用,作用域,匿名函数

    2、形参和实参 形参:定义函数时,⼩括号中参数,是⽤来接收参数,在函数内部作为变量使⽤; 实参:调⽤函数时,⼩括号中参数,是⽤把数据传递到 函数内部⽤ 。...("名字叫 remove") # 调用函数 add() 5、变量作用域 变量分为局部变量和全局变量。...5.1 局部变量 局部变量是在函数内部 定义变量,只能在函数内部使⽤; 函数执⾏结束后,函数内部局部变量,会被系统回收; 不同函数,可以定义相同名字局部变量,彼此之间不会产⽣影响...5.2 全局变量 全局变量是在函数外部定义变量,所有函数内部都可以使⽤这个变量 。 为了保证所有的函数都能够正确使⽤到全局变量应该全局变量定义放在其他函数上方。...调⽤函数时,如果没有传⼊缺省参数值,则在函数内部使⽤定义函数时指定参数默认值 。 函数缺省参数常⻅值设置为参数缺省值,从⽽简化函数调⽤ 。

    1.1K20

    Python基础教程

    函数变量被称为局部变量(local variable),这是与全局变量相反概念。参数工作原理类似于局部变量,所以用全局变量名字作为参数名并没有问题。...抽象是隐藏多余细节艺术。定义处理细节函数可以让程序更抽象。 函数定义函数使用def语句定义。它们是由语句组成块,可以从“外部世界”获取值(参数),也可以返回一个或者多个值作为运算结果。...定义子类只是个定义更多(也有可能是重载已经存在)方法过程。 7.2.2 创建自己 7.2.3 特性、函数和方法 事实上,self参数正是方法和参数区别。...尽管最后一个方法调用看起来与函数调用十分相似,但是变量birdsongs引用绑定方法bird.sing上,也就意味着这还是会对self参数进行访问(也就是说,它仍旧绑定到相同实例上)。...__inaccessible> 但实际上还是能够在外访问这些私有方法,尽管不应该这么做: >>> s._Secretive.

    76220

    Python基础—让你规范Python语言使用

    模块或包应该定义自己特定域异常基, 这个基应该从内建Exception继承. 模块异常基应该叫做”Error”....例如 全局变量 定义: 定义在模块级变量. 优点: 偶尔有用. 缺点: 导入时可能改变模块行为, 因为导入模块时会对模块级变量赋值. 结论: 避免使用全局变量, 用变量代替....但也有一些例外: 脚本默认选项. 模块级常量. 例如:PI = 3.14159. 常量应该全大写, 用下划线连接. 有时候用全局变量缓存值或者作为函数返回值很有用....如果需要, 全局变量应该仅在模块内部可用, 并通过模块级公共函数来访问. 嵌套/局部/内部类或函数 定义: 可以定义在方法, 函数或者中. 函数可以定义在方法或函数中....函数与方法装饰器 定义: 用于函数及方法装饰器 (也就是@标记). 最常见装饰器是@classmethod 和@staticmethod, 用于常规函数转换成方法或静态方法.

    1.6K80

    【C++】自引用this指针秘密

    首先应该明确是指针和引用在底层实现是相同,之所以叫this指针,是因为最开始C++称作带C,而引用则是在C++1.0版才加入使用,因此叫做this指针。...this在成员函数开始执行前构造,在成员执行结束后清除 this指针存放于何处?堆、栈、全局变量还是其他地方? this指针会因编译器不同,而放置位置不同。...当然,在成员函数里,你是可以知道this指针位置(可以&this获得),也可以直接使用。 每个编译后,是否创建一个函数保存函数指针,以便调用函数?...普通函数(不论是成员函数还是静态函数),都不会创建一个函数保存函数指针。只有虚函数才会被放到函数表中。...在实例化时,只分配变量空间,并没有为函数分配空间。自从函数定义完成后,它就在那儿,不会跑。 为什么this指针不能再静态函数使用

    83120

    每天 3 分钟,小闫带你学 Python(二十二)

    2.全局变量 定义:如果一个变量,既能在一个函数使用,也能在其他函数使用,这样变量就是全局变量全局变量定义函数外部。 作用:方便多个函数调用,减少重复变量创建。...而全局变量则是一台公共电话,可以使用,你也可以使用。.... >>> a = "是测试用例" >>> function(a) >>> print(a) 是测试用例 2.给函数中传入一个可变数据类型时候,函数运算有可能会更改传入参数变量。...4.在调用函数时假如需要传递实参,那么函数必须定义形参进行接收,而且实参个数由形参决定。(不要忘记缺省参数和不定长参数使用。) 5.在同一个程序中不能出现多个相同函数函数。...6.在同一个程序中避免变量名和函数相同。 7.调用函数时,实参个数和先后顺序应该定义函数中要求一致。而且函数有返回值,必须使用变量进行保存结果。

    47320

    PEP8-Python代码规范样式编写指南摘录

    注释块注释内镶注释文档字符串命名约定首要原则描述性:命名样式说明性:命名约定避免使用名称ASCII兼容性软件包和模块名称名类型变量名异常名称全局变量函数和变量名函数和方法参数方法名称和实例变量常量继承设计...当用来指定关键字参数或者用来指定未定义函数参数默认值时,请不要在 = 前后使用空格。...为所有公共模块,函数和方法编写文档字符串。对于非公共方法,文档字符串不是必需,但是您应该使用注释描述该方法作用。该注释应出现在 def 行之后。 PEP 257描述了良好文档字符串约定。...但是,您应该在异常名称上使用后缀“ Error”(如果异常实际上是一个错误)。 全局变量名 (我们希望这些变量只能在一个模块内使用。)约定与函数约定大致相同。...继承设计 始终确定方法和实例变量(统称为“属性”)应该是公共还是非公开。如有疑问,请选择非公开;后期将其变为公共属性比公共属性变为非公开属性要容易。

    1.6K10

    CC++面试必备知识

    calloc在动态分配完内存后,内存空间置为零。malloc不初始化,里边数据是随机脏数据。 static 静态全局变量:在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。...定义全局变量就可以实现变量在文件中共享,但定义静态全局变量还有以下好处: 静态全局变量不能被其它文件所用 其它文件中可以定义相同名字变量,不会发生冲突 static在函数用法 当函数定义一个static...程序在运行时,由程序员使用内存分配函数(如malloc函数申请内存,使用完之后再由程序员自己负责使用内存释放函数(如free函数释放内存。...如果程序是由多个源文件构成,那么全局变量只要在一个文件中定义,就可以在其他所有的文件中使用,但必须在其他文件中通过使用extern关键字声明该全局变量。...一般地,可以通过下面的方法改变缺省对界条件: 使用伪指令 #pragma pack (n),C 编译器按照 n 个字节对齐。

    21930

    一种Python全局配置规范以及其修改

    但这种用法其实非常不好,按照函数规范而言,纯函数输入应该只有输入参数确定,不应该在执行过程中引用外部变量。并且,global也不是用来进行全局配置用。...这是在Python中自定义数据类型基本操作了,自定义完成后然后写一个装饰器继承转化成单例。 单例模式写法可以看Stackoverflow上关于单例模式高票回答。...3、函数中直接引用单例字典参数放到函数参数列表中,由调用方获取单例字典内容,由传参方法传入被调用函数,这样做是为了满足函数式编程中纯函数原则。 不应该这么用: ? 应该这样用 ?...这里有个办法就是每个产品都通过同一个模块配置,然后在初始化时根据以产品名称命名一个json文件修改模块参数。这样就可以达到引用模块方式不变,但模块内容是根据json文件内容配置。...相对于在每个初始化时直接调用json配置变量这种方案是有好处定义了configs模块有助于代码静态检查,形成了一种像C语言中.h文件和.c文件关系,在头文件中定义相关变量,在.c文件中实现或使用

    2K90

    C++extern关键字知识点

    第二,当extern不与"C"在一起修饰变量或函数时,如在头文件中: extern int g_Int; 它作用就是声明函数全局变量作用范围关键字,其声明函数和变量可以在本模块活其他模块中使用...应该声明改为extern char a[ ]。   ...但是在运行过程中,因为少了或者多了输入参数,往往会照成系统错误,这种情况应该如何解决?   ...4 问题:extern “C”   在C++环境下使用C函数时候,常常会出现编译器无法找到obj模块中C函数定义,从而导致链接失败情况,应该如何解决这种情况呢?   ...即下述两个函数声明没有明显区别: extern int f(); 和int f();   当然,这样用处还是有的,就是在程序中取代include “*.h”声明函数,在一些复杂项目中,比较习惯在所有的函数声明前添加

    1K40

    轻松带你解决c语言堆、栈、数据段、代码段、bss段疑惑

    提出了一个关于数据初始化问题,如下图,正如你所见这个可能比较简单,但是要理解这里面的知识点,还是要花点时间总结一下): 一、栈: 这里可能没有介绍什么是栈,但是老司机你,应该知道问度娘,...一般来讲,栈主要是为局部变量(一般是定义函数里面)、函数参数分配内存大小,但是当他们离开这个"本职岗位"范围之后,就会被操作系统强行给咔嚓掉,最终被释放了出来,归还了给操作系统。...遗留性:栈内存由于反复使用,每次使用后程序不会去清理,因此在使用栈时还是上次栈中遗留下数值。 临时性:(函数不能返回栈变量指针,因为这个空间是临时)。...(3)如果需要一段内存存储数据,究竟应该把这个数据存储在哪里?  (或者说定义一个变量,究竟应该定义为局部变量还是全局变量还是用malloc实现)。...不同存储方式有不同特点,简单总结如下: * 函数内部临时使用,出了函数不会用到,就定义局部变量。堆内存和数据段几乎拥有完全相同属性,大部分时候是可以完全替换。但是生命周期不一。

    1.4K20

    Python编程思想(20):变量作用域

    在程序中定义一个变量时,这个变量是有作用范围。变量作用范围被称为它作用域。根据定义变量位置,变量分为如下两种: 局部变量。在函数定义变量,包括参数,都被称为局部变量; 全局变量。...如果不传入 object参数,vars()和 locals()作用完全相同。...()获取“变量字典”只应该被访问,不应该被修改。...但实际上,不管是使用 globals()还是使用 locals()获取全局范围内“变量字典”,都可以被修改,而这种修改会真正改变全局变量本身,但通过 locals获取局部范围内“变量字典”,即使对它修改也不会影响局部变量...() print(name) # Mike 2.在函数中声明全局变量 为了避免在函数中对全局变量赋值(不是重新定义局部变量),可使用 global语句声明全局变量

    55820

    C++中静态变量和静态方法使用介绍

    分两个方面总结,面向过程与面向对象. 一:面向过程中static关键字 1.静态全局变量 定义全局变量前,加上关键字static,该变量就被定义成了一个静态全局变量....static int n;//定义静态全局变量 改为: int n;//定义全局变量 区别: 静态全局变量不能被其他文件所用.因而其他文件可以定义相同名字变量,而不会发生冲突....但是,全局变量或对象是有局限性。这一章里,我们主要讲述静态成员实现数据共享。...在初始化N对象时,对N对象三个int型数据成员值求和后又加到Sum已有的值上,于是Sum保存另后值。所以,不论是通过对象M还是通过对象N引用值都是一样,即为54,s.A=3。...从中可看出,调用静态成员函数使用如下格式:::(); 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/140544.html原文链接

    2.3K20

    SAP ETL开发规范「建议收藏」

    应该在本地定义变量一些示例是: 要加载Dataflow平面文件源文件名 用于条件或while循环增量变量 所使用全局变量应该在整个公司内标准化。...工作流程不应该依赖全局变量完成本地任务; 相反,本地变量应声明为本地并作为参数传递给需要它们数据流。...关于使用全局变量相同标准也应该应用于while循环。这意味着需要更新变量(如迭代变量)应声明为局部变量。应使用参数局部变量传递给基础数据流。...自定义函数应该写在逻辑太复杂地方,不能直接写入Dataflow映射部分,或者需要对逻辑进行组件化,重用和更详细记录。 全局变量应该在自定义函数中引用; 它们应该作为参数传入/传出。...自定义函数可以在多个作业中共享,因此引用作业级全局变量是不好做法。 使用定义功能时请注意以下几点要小心: 通常,自定义函数导致数据流下推SQL无法有效生成。

    2.1K10

    Python学习笔记:PEP8常用编程规

    6.多条语句同行:即使是简单语句,即使可以使用分号,但是不推荐写在同一行,比如再简单if/for/while语句也应该分行写 二、空行 1.顶级定义:顶级函数定义前后使用两个空行隔开 2.方法...:中方法定义使用一个空行隔开 3.逻辑分段:函数功能组和逻辑段使用空行隔开(视情况灵活运用) 三、import语句 1.import *和from xxx import *:这种通配符星号用法应该尽量避免使用...,在全局变量和常量定义之前 5.导入顺序:导入顺序应该是标准库,三方库,以及本地模块,且需要加空行分隔 6.导入路径:导入应该尽量使用绝对路径,或使用显式相对路径也是可行(如:from . import...应该省去不必要空格a, b = b, a 3.切片中空格:切片冒号左右两边应该相同空格,切片下标如果是数字或变量,建议冒号两边不用空格,如果下标是多个变量表达式或者函数表达式,则建议冒号两边使用一个空格分隔...”后缀 13.函数名:全小写,为了提高可读性也可以使用下划线,大小写混合情况只限于为了与原来代码兼容情况 14.全局变量:只在模块内使用全局变量和普通变量一样定义,但是需要注意使用“from xxx

    85710
    领券