CN108614694A - 一种优化代码的方法和装置 - Google Patents
一种优化代码的方法和装置 Download PDFInfo
- Publication number
- CN108614694A CN108614694A CN201611258449.3A CN201611258449A CN108614694A CN 108614694 A CN108614694 A CN 108614694A CN 201611258449 A CN201611258449 A CN 201611258449A CN 108614694 A CN108614694 A CN 108614694A
- Authority
- CN
- China
- Prior art keywords
- function
- large type
- fractionation
- super large
- target super
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例提供了一种优化代码的方法和装置,用于优化超大型函数的代码。所述方法包括:创建N个用于容置函数代码的拆分函数;其中,N为正整数;将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种优化代码的方法和装置。
背景技术
随着智能设备的广泛使用,应用的功能也越来越丰富。以直播应用为例,直播应用需要为用户提供大量功能,例如发送弹幕、聊天、发送虚拟礼物、接收虚拟礼物、充值、屏蔽用户、举报用户、观看直播、调节亮度、调节声音和旋转屏幕方向等。为了实现各个功能,需要为不同的功能编写代码。但是,有些复杂功能,其函数的代码具有成千上万行,形成超大型函数。
现有技术中,超大型函数代码杂乱,数量繁多,给功能扩充和维护应用带来困难。
发明内容
本发明实施例提供了一种优化代码的方法和装置,用于优化超大型函数的代码。
第一方面,本发明提供了一种优化代码的方法,包括:
创建N个用于容置函数代码的拆分函数;其中,N为正整数;
将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;
建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
可选的,所述拆分函数具有对应的源代码文件和头文件,将目标超大型函数中的函数集合导入所述拆分函数中,包括:
将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中;
建立所述目标超大型函数调用N个所述拆分函数的调用关系,包括:
将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
可选的,所述拆分函数包括不输入参数且不返回结果的第一类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,还包括:
将所述目标超大型函数中不依赖上下文的所述函数集合导入所述第一类型拆分函数中。
可选的,所述拆分函数还包括输入参数但不返回结果的第二类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,还包括:
将所述目标超大型函数中依赖上文且不依赖下文的所述函数集合导入所述第二类型拆分函数中。
可选的,所述拆分函数还包括输入参数且返回结果的第三类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,包括:
将所述目标超大型函数中依赖上下文的所述函数集合导入所述第三类型拆分函数中。
第二方面,本发明提供了一种优化代码的装置,包括:
创建模块,用于创建N个用于容置函数代码的拆分函数;其中,N为正整数;
导入模块,用于将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;
调用模块,用于建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
可选的,所述拆分函数具有对应的源代码文件和头文件,所述导入模块用于将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中;
所述调用模块用于将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
可选的,所述拆分函数包括不输入参数且不返回结果的第一类型拆分函数,所述导入模块用于将所述目标超大型函数中不依赖上下文的所述函数集合导入所述第一类型拆分函数中。
可选的,所述拆分函数还包括输入参数但不返回结果的第二类型拆分函数,所述导入模块还用于将所述目标超大型函数中依赖上文且不依赖下文的所述函数集合导入所述第二类型拆分函数中。
可选的,所述拆分函数还包括输入参数且返回结果的第三类型拆分函数,所述导入模块还用于将所述目标超大型函数中依赖上下文的所述函数集合导入所述第三类型拆分函数中。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,首先创建N个用于容置函数代码的拆分函数,其中,N为正整数,然后将目标超大型函数中的函数集合导入拆分函数中,其中,目标超大型函数中包括N个函数集合,每个函数集合用于实现目标应用的一个或多个目标功能,一个函数集合导入一个拆分函数中,最后建立目标超大型函数调用N个拆分函数的调用关系,以使得目标超大型函数能够调用N个拆分函数中的函数集合实现对应的一个或多个目标功能。由此可见,通过将目标超大型函数中的用于实现一个或多个功能的每个函数集合一一导入拆分函数中,故而,在拆分函数中对代码进行维护,就方便地实现了对不同功能的维护,由此降低了功能扩充和维护应用的难度,实现了对超大型函数的代码优化。
附图说明
图1为本发明实施例中优化代码的方法流程图;
图2为现有技术一UIViewController的示意图;
图3为本发明实施例中一优化后的UIViewController示意图;
图4为本发明实施例中另一优化后的UIViewController示意图;
图5为本发明实施例中优化代码的装置结构示意图。
具体实施方式
本发明实施例提供了一种优化代码的方法和装置,用于优化超大型函数的代码。
为了解决上述技术问题,本发明提供的技术方案总体思路如下:
在本发明实施例的技术方案中,首先创建N个用于容置函数代码的拆分函数,其中,N为正整数,然后将目标超大型函数中的函数集合导入拆分函数中,其中,目标超大型函数中包括N个函数集合,每个函数集合用于实现目标应用的一个或多个目标功能,一个函数集合导入一个拆分函数中,最后建立目标超大型函数调用N个拆分函数的调用关系,以使得目标超大型函数能够调用N个拆分函数中的函数集合实现对应的一个或多个目标功能。由此可见,通过将目标超大型函数中的用于实现一个或多个功能的每个函数集合一一导入拆分函数中,故而,在拆分函数中对代码进行维护,就方便地实现了对不同功能的维护,由此降低了功能扩充和维护应用的难度,实现了对超大型函数的代码优化。
下面通过附图以及具体实施例对本发明技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明第一方面提供了一种优化代码的方法,请参考图1,为本发明实施例中优化代码的方法流程图。该方法包括:
S101:创建N个用于容置函数代码的拆分函数;
S102:将目标超大型函数中的函数集合导入所述拆分函数中;
S103:建立所述目标超大型函数调用N个所述拆分函数的调用关系。
具体来讲,本发明实施例中的目标超大型函数例如为界面控制器UIViewController类函数,或者其他代码超过100行的函数,本发明不做具体限制。UIViewController类是用于控制界面的类。目标应用例如直播应用、购物应用、聊天应用或修图应用等,本发明不做具体限制。目标功能为目标应用的功能,例如目标应用为直播应用,目标功能为充值功能、赠送虚拟礼物功能、聊天功能和调节亮度功能等。
本发明实施例中的拆分函数用于容置函数超大型函数中的代码。S101中创建的拆分函数共有N个。N为正整数,例如1,2,3或4等。在具体实现过程中,可以先创建出全部N个拆分函数之后,再执行S102和S103,进而优化目标超大型函数。或者,在每次需要从目标超大型函数中优化一个函数集合时,创建一个拆分函数,然后执行S102和S103。下一次需要优化时,再次创建下一个拆分函数,然后再次执行S102和S103,依此类推,直到创建完成N各拆分函数。本发明所属领域的普通技术人员可以根据实际进行设置,本发明不做具体限制。
另外,在本发明实施例中,拆分函数可以创建在目标超大型函数的本类中。举例来说,假设目标超大型函数为UIViewController类,则可以在UIViewController类中创建N个拆分函数。或者,拆分函数也可以独立于目标大型函数类。还是以UIViewController类为例,可以创建N个UIViewController分类作为N个拆分函数,进而使得拆分函数不在UIViewController类本类中。在具体实现过程中,本发明所属领域的普通技术人员可以根据实际进行选择,本发明不做具体限制。在后文中将进一步介绍如何创建拆分函数。
创建拆分函数之后,在S102中,将目标超大型函数的函数集合导入拆分函数中。具体来讲,本发明实施例中的函数集合为用于实现一个功能,或者多个相关功能的函数的集合。举例来说,用于实现充值功能的函数具有100个,则将该100个函数划分聚合为一个函数集合;用于实现发送文字聊天功能的函数有30个,用于实现发送表情聊天功能的函数有40个,由于发送文字聊天功能和发送表情聊天功能相关,因此可以将上述用于实现发送文字聊天功能的30个函数和用于实现发送表情聊天功能的40个函数聚合为一个函数集合。在具体实现过程中,如何将目标超大型函数中的函数划分和聚合为函数集合,本发明所属领域的普通技术人员可以根据实际进行选择,本发明不做具体限制。
在本发明实施例中,目标超大型函数包括的函数集合具有N个。在将目标超大型函数中的N个函数集合导入拆分函数中时,为了方便维护各个功能,以及方便目标超大型函数实现各个功能,具体为将一个函数集合导入一个拆分函数中,即函数集合与拆分函数一一对应。因此,最终创建拆分函数数量与函数集合数量相同。
另外,本领域技术人员应当理解,本发明实施例中的目标超大型函数尽管也是函数,但是,函数集合包含的函数为目标超大型函数内部的函数和子函数,而不包含目标超大型函数本身。
在将函数集合导入对应的拆分函数中后,为保证目标超大型函数仍然能够正常实现一个或多个目标功能,进一步还需要执行S103,建立目标超大型函数调用N个拆分函数的调用关系。
那么,一方面将目标超大型函数中杂乱无章的函数拆分并导入N个拆分函数中,优化了目标超大型函数中的庞大代码。另一方面,建立目标超大型函数对各个拆分函数的调用关系,使目标超大型函数在需要调用导入拆分函数中的函数集合时能够基于调用关系准确调用,由此保证了目标超大型函数的正常运行。
下面对如何将函数集合导入拆分函数进行详细介绍。
在本发明实施例中,由于创建拆分函数的方法有两种,因此,将函数集合导入拆分函数的方法有两种,因此将函数集合导入拆分函数的方法也有两种。
第一种:
在第一种方法中,拆分函数创建在超大型函数的内部。因此将函数集合在目标超大型函数中原始代码拷贝到拆分函数中,然后,再将原始代码删除。另外,删除原始代码的位置,添加对于的拆分函数的调用关系。
举例来说,请参考图2。图2示出了现有技术中一UIViewController类的示意图,图3示出了本发明实施例中一优化后的UIViewController类示意图。在图2和图3中,以功能A、功能B、功能C、…、功能Z表示UIViewController类中包括26个功能和/或相关功能。功能A对应的函数集合包括功能A函数1、功能A函数2、…和功能A函数NA,功能B对应的函数集合包括功能B函数1、功能B函数2、…和功能B函数NB,功能C对应的函数集合包括功能C函数1、功能C函数2、…和功能C函数NC,…,功能Z对应的函数集合包括功能Z函数1、功能Z函数2、…和功能Z函数NZ。其中,NA、NB、NC、…和NZ均为正整数。
对应于26个功能和/或相关功能,共需在UIViewController中创建26个拆分函数。该26个拆分函数具体为拆分函数A、拆分函数B、拆分函数C、...和拆分函数Z。
将功能A对应的函数集合的方法导入拆分函数A中,将功能B对应的函数集合的方法导入拆分函数B中,将功能C对应的函数集合的方法导入拆分函数C中,…,将功能Z对应的函数集合的方法导入拆分函数Z中。图2示出的UIViewController杂乱无章,完成函数集合的导入后,UIViewController类被优化为如图3所示。
可以看出,通过第一种方式将超大型函数中杂乱无章的代码按照所实现的功能导入不同的拆分函数中。因此,当需要维护目标应用的某个功能时,只需要在对应的拆分函数中进行维护即可,不需要再在目标超大型函数的多个位置一一进行修改,因此降低了维护难度。
进一步,为了更加方便维护,在具体实现过程中,可以将拆分函数集中排布在超大型函数的开头,或者结尾,从而更加便于寻找需要维护的拆分函数。同时,超大型函数的正文部分主逻辑清晰可见,使得对于主逻辑的维护也很方便。
第二种:
在第二种方法中,拆分函数创建在目标超大型函数的外部,也即拆分函数的类独立于目标超大型函数的类。具体来讲,以苹果智能移动终端操作系统ios系统为例,ios系统中的每个类都具有源代码文件.m文件和头文件.h文件。因此,本发明实施例在创建拆分函数的类时,也需要对应创建拆分函数的.m文件和.h文件。其中,.m文件用于放置函数的具体代码和属性,.h文件中则用于放置函数的声明。换言之,在需要创建一个拆分函数时,具体为创建该拆分函数的.m文件和.h文件,就实现了创建该拆分函数。
因此,在第二种方法中,S102中则具体包括:
将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中;
进一步,S103则包括:
将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
具体来讲,首先,将目标超大型函数中的函数集合的原始代码拷贝到拆分函数的.m文件中,然后从目标超大型函数中删除已完成拷贝的原始代码。另外,为了使得目标超大型函数能够正常调用函数集合,在删除函数集合后的地方,导入拆分函数的.h文件。进而,目标超大型函数通过每个拆分函数的.h文件调用每个拆分函.m文件中的函数集合。
沿用上文中的图2来举例说明。图4示出了本发明实施例中另一优化后的UIViewController类示意图。
对应于26个功能和/或相关功能,共需创建26个拆分函数类。该26个拆分函数类具体为拆分函数A类、拆分函数B类、拆分函数C类、...和拆分函数Z类。创建上述26个拆分函数类时,具体为创建拆分函数A.m文件和拆分函数A.h文件、拆分函数B.m文件和拆分函数B.h文件、拆分函数C.m文件和拆分函数C.h文件、…和拆分函数Z.m文件和拆分函数Z.h文件。
然后,将功能A对应的函数集合导入拆分函数A.m文件中,将功能B对应的函数集合导入拆分函数B.m文件中,将功能C对应的函数集合导入拆分函数C.m文件中,…,将功能Z对应的函数集合导入拆分函数Z.m文件中。然后,在UIViewController类中导入拆分函数A.h文件,拆分函数B.h文件,拆分函数C.h文件,…和拆分函数Z.h文件。完成函数集合优化后,UIViewController类被优化为如图4所示。
可以看出,通过第二种方式将目标超大型函数中杂乱无章的代码按照所实现的功能导入不同的拆分函数源代码文件中。因此,当需要维护目标应用某个功能时,只需要在对应的拆分函数源代码文件和/或头文件中进行维护即可,不需要再在目标超大型函数的多个位置一一进行修改,因此优化了超大型函数。
进一步,将函数集合导入目标超大型函数以外的拆分函数中,不仅便于维护目标超大型函数,并且由于目标超大型函数中的大量代码被导出,因此还减少了目标超大型函数中的总代码量。
在具体实现过程中,本发明所属领域的普通技术人员可以根据实际选择上述两种方法中的任意一种,本发明不做具体限制。
更进一步,在具体实现过程中,目标超大型函数中的函数可以根据是否需要输入参数以及是否需要返回结果划分为三种类型。
具体来讲,第一种类型为不需要前面运行的函数为其输入参数就可以运行,并且运行结束后不需要向后面允许的函数返回结果的函数,因此这种函数不依赖环境上下文,本发明实施例将第一种类型的函数称为不依赖上下文的函数。举例来说,一个具有弹幕内容的发送函数,不需要其他函数提供弹幕内容,也不需要返回弹幕发送结果。
第二种类型为需要前面运行的函数为其输入参数才可以运行,但是运行结束后并不需要返回结果的函数,因此这种函数依赖环境上文,但不依赖下文,本发明实施例将第二种类型的函数称为依赖上文且不依赖下文的函数。举例来说,一个不具有弹幕内容的发送函数,需要其他函数输出弹幕内容才能运行,但是不需要向其他函数返回是否发送成功的结果。
第三种类型为需要前面运行的函数为其输入参数才可以运行,并且运行结束后还需要返回结果给后面的函数的函数,因此这种函数既依赖环境上文,又依赖下文,本发明实施例将第三种类型的函数称为依赖上下文的函数。举例来说,一个不具有弹幕内容的发送函数,需要其他函数输出弹幕内容才能运行,并且还需要通知后续函数弹幕是否发送成功。
可以看出,不同类型的函数集合在进行优化时也需要类型匹配的拆分函数才能使得函数集合在优化后正常运行。因此,在本发明实施例中,对应于三种类型的函数,拆分函数也具体包括第一类型拆分函数、第二类型拆分函数和第三类型拆分函数。
由于上文中已经详细介绍如何创建独立于目标超大型函数的拆分函数了,因此下面则以如何在目标超大型函数中创建拆分函数来介绍三种拆分函数类型的创建。
具体来讲,第一种类型拆分函数用于容置不依赖上下文的函数集合,故第一种类型拆分函数不输入参数且不返回结果。在具体实现过程中,创建第一种类型拆分函数,可以通过设置拆分函数的返回值为空void,且不引入参数即可。以不依赖上下文的发送弹幕函数为例,为该函数创建–(void)sendDanmu的第一种类型拆分函数。其中,sendDanmu为该拆分函数的名。然后,将发送弹幕函数的代码拷贝到(void)sendDanmu中,并删除目标超大型函数中该发送弹幕函数的原始代码。
进一步,在目标超大型函数中建立第一种类型拆分函数的调用关系时,由于第一种类型拆分函数不需要输入参数也不需要返回结果,因此直接调用即可。例如,如果调用上文中的(void)sendDanmu,则在原始代码的位置添加[self sendDanmu]的调用即可。
第二种类型拆分函数用于容置依赖上文且不依赖下文的函数集合,故需要输入参数但不不返回结果。在具体实现过程中,创建第二种类型的拆分函数,可以通过设置拆分函数的返回值为空void并引入参数即可。以依赖上文且不依赖下文的发送弹幕函数为例,为该函数创建–-(void)sendDanmu:(NSString*)text的第二种类型拆分函数。其中,(NSString*)text为其他函数传入的弹幕内容。然后,将发送弹幕函数的代码拷贝到-(void)sendDanmu:(NSString*)text中,并删除目标超大型函数中该发送弹幕函数的原始代码。
进一步,在目标超大型函数中建立第二种类型拆分函数的调用关系时,由于第二种类型拆分函数需要输入参数但不需要返回结果,因此调用时还需要传入参数。例如,如果调用上文中的-(void)sendDanmu:(NSString*)text,则在原始代码的位置添加[selfsendDanmu:@”(NSString*)text”]即可。
第三种类型拆分函数用于容置依赖上下文的函数集合,故需要输入参数且需要返回结果。在具体实现过程中,创建第三种类型拆分函数,设置获取拆分函数的返回值,且引入参数。以依赖上下文的发送弹幕函数为例,为该函数创建-(BOOL)sendDanmu:(NSString*)text的第三种类型拆分函数。其中,(NSString*)text为其他函数传入的弹幕内容。BOOL表示返回布尔结果,在具体实现过程中可以为其他类型的值。然后,将发送弹幕函数的代码拷贝到-(BOOL)sendDanmu:(NSString*)text中,并删除目标超大型函数中该发送弹幕函数的原始代码。
进一步,在目标超大型函数中建立第三种类型拆分函数的调用关系时,由于第三种类型拆分函数需要输入参数且需要返回结果,因此调用时需要传入参数,并且读取返回结果。例如,如果调用上文中的-(BOOL)sendDanmu:(NSString*)text,则在原始代码的位置添加BOOL isSuccess=[self sendDanmu:@”(NSString*)text”]即可。
基于与前述实施例中优化代码的方法同样的发明构思,本发明第二方面还提供一种优化代码的装置,如图5所示,包括:
创建模块101,用于创建N个用于容置函数代码的拆分函数;其中,N为正整数;
导入模块102,用于将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;
调用模块103,用于建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
具体来讲,拆分函数具有对应的源代码文件和头文件,则导入模块102用于将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中,调用模块103用于将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
进一步,拆分函数包括不输入参数且不返回结果的第一类型拆分函数,则导入模块102用于将所述目标超大型函数中不依赖上下文的所述函数集合导入所述第一类型拆分函数中。
更进一步,拆分函数还包括输入参数但不返回结果的第二类型拆分函数,则导入模块102还用于将所述目标超大型函数中依赖上文且不依赖下文的所述函数集合导入所述第二类型拆分函数中。
更进一步,拆分函数还包括输入参数且返回结果的第三类型拆分函数,则导入模块102还用于将所述目标超大型函数中依赖上下文的所述函数集合导入所述第三类型拆分函数中。
前述图1-图4实施例中的优化代码的方法的各种变化方式和具体实例同样适用于本实施例的优化代码的装置,通过前述对优化代码方法的详细描述,本领域技术人员可以清楚的知道本实施例中优化代码的装置的实施方法,所以为了说明书的简洁,在此不再详述。
本申请实施例中的上述一个或多个技术方案,至少具有如下一种或多种技术效果:
在本发明实施例的技术方案中,首先创建N个用于容置函数代码的拆分函数,其中,N为正整数,然后将目标超大型函数中的函数集合导入拆分函数中,其中,目标超大型函数中包括N个函数集合,每个函数集合用于实现目标应用的一个或多个目标功能,一个函数集合导入一个拆分函数中,最后建立目标超大型函数调用N个拆分函数的调用关系,以使得目标超大型函数能够调用N个拆分函数中的函数集合实现对应的一个或多个目标功能。由此可见,通过将目标超大型函数中的用于实现一个或多个功能的每个函数集合一一导入拆分函数中,故而,在拆分函数中对代码进行维护,就方便地实现了对不同功能的维护,由此降低了功能扩充和维护应用的难度,实现了对超大型函数的代码优化。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种优化代码的方法,其特征在于,包括:
创建N个用于容置函数代码的拆分函数;其中,N为正整数;
将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;
建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
2.如权利要求1所述的方法,其特征在于,所述拆分函数具有对应的源代码文件和头文件,将目标超大型函数中的函数集合导入所述拆分函数中,包括:
将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中;
建立所述目标超大型函数调用N个所述拆分函数的调用关系,包括:
将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
3.如权利要求1或2所述的方法,其特征在于,所述拆分函数包括不输入参数且不返回结果的第一类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,包括:
将所述目标超大型函数中不依赖上下文的所述函数集合导入所述第一类型拆分函数中。
4.如权利要求3所述的方法,其特征在于,所述拆分函数还包括输入参数但不返回结果的第二类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,还包括:
将所述目标超大型函数中依赖上文且不依赖下文的所述函数集合导入所述第二类型拆分函数中。
5.如权利要求4所述的方法,其特征在于,所述拆分函数还包括输入参数且返回结果的第三类型拆分函数,将目标超大型函数中的函数集合导入所述拆分函数中,还包括:
将所述目标超大型函数中依赖上下文的所述函数集合导入所述第三类型拆分函数中。
6.一种优化代码的装置,其特征在于,包括:
创建模块,用于创建N个用于容置函数代码的拆分函数;其中,N为正整数;
导入模块,用于将目标超大型函数中的函数集合导入所述拆分函数中,其中,所述目标超大型函数中包括N个所述函数集合,每个所述函数集合用于实现目标应用的一个或多个目标功能,一个所述函数集合导入一个所述拆分函数中;
调用模块,用于建立所述目标超大型函数调用N个所述拆分函数的调用关系,以使得所述目标超大型函数能够调用N个所述拆分函数中的所述函数集合实现对应的一个或多个所述目标功能。
7.如权利要求6所述的装置,其特征在于,所述拆分函数具有对应的源代码文件和头文件,所述导入模块用于将所述目标超大型函数的所述函数集合导入所述拆分函数的源代码文件中;
所述调用模块用于将所述拆分函数的头文件导入所述目标超大型函数的源代码文件。
8.如权利要求6或7所述的装置,其特征在于,所述拆分函数包括不输入参数且不返回结果的第一类型拆分函数,所述导入模块用于将所述目标超大型函数中不依赖上下文的所述函数集合导入所述第一类型拆分函数中。
9.如权利要求8所述的装置,其特征在于,所述拆分函数还包括输入参数但不返回结果的第二类型拆分函数,所述导入模块还用于将所述目标超大型函数中依赖上文且不依赖下文的所述函数集合导入所述第二类型拆分函数中。
10.如权利要求9所述的装置,其特征在于,所述拆分函数还包括输入参数且返回结果的第三类型拆分函数,所述导入模块还用于将所述目标超大型函数中依赖上下文的所述函数集合导入所述第三类型拆分函数中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611258449.3A CN108614694A (zh) | 2016-12-30 | 2016-12-30 | 一种优化代码的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611258449.3A CN108614694A (zh) | 2016-12-30 | 2016-12-30 | 一种优化代码的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108614694A true CN108614694A (zh) | 2018-10-02 |
Family
ID=63658587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611258449.3A Pending CN108614694A (zh) | 2016-12-30 | 2016-12-30 | 一种优化代码的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108614694A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408216A (zh) * | 2018-11-12 | 2019-03-01 | 北京字节跳动网络技术有限公司 | 任务生成方法、装置、设备及存储介质 |
US20230266950A1 (en) * | 2022-02-18 | 2023-08-24 | Huawei Technologies Co., Ltd. | Methods and devices for compiler function fusion |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188291A1 (en) * | 2002-03-22 | 2003-10-02 | Marina Fisher | Design and redesign of enterprise applications |
CN102662656A (zh) * | 2012-03-15 | 2012-09-12 | 北京神州数码思特奇信息技术股份有限公司 | 一种程序结构插件化方法及系统 |
CN104699485A (zh) * | 2015-03-19 | 2015-06-10 | 神华集团有限责任公司 | 海量程序管理方法及构建方法 |
-
2016
- 2016-12-30 CN CN201611258449.3A patent/CN108614694A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030188291A1 (en) * | 2002-03-22 | 2003-10-02 | Marina Fisher | Design and redesign of enterprise applications |
CN102662656A (zh) * | 2012-03-15 | 2012-09-12 | 北京神州数码思特奇信息技术股份有限公司 | 一种程序结构插件化方法及系统 |
CN104699485A (zh) * | 2015-03-19 | 2015-06-10 | 神华集团有限责任公司 | 海量程序管理方法及构建方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109408216A (zh) * | 2018-11-12 | 2019-03-01 | 北京字节跳动网络技术有限公司 | 任务生成方法、装置、设备及存储介质 |
US20230266950A1 (en) * | 2022-02-18 | 2023-08-24 | Huawei Technologies Co., Ltd. | Methods and devices for compiler function fusion |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200366463A1 (en) | Apparatuses for Providing a Set of Cryptographically Protected, Filtered, and Sorted Transaction Data Records of a Link of a Blockchain | |
CN104898592A (zh) | 一种联动规则的生成方法及电子设备 | |
CN109117209A (zh) | 序列化和反序列化方法及装置 | |
CN105204859A (zh) | 动画管理方法及其系统 | |
CN106982249A (zh) | 多线程分段下载方法、设备、客户端设备及电子设备 | |
CN109656617A (zh) | 一种Web Service前端部署方法、存储介质、电子设备及系统 | |
CN110069312A (zh) | 一种ui组件配置和生成ui组件库的方法及装置 | |
CN105630581A (zh) | 一种任务处理方法、设备及计算机存储介质 | |
CN108614694A (zh) | 一种优化代码的方法和装置 | |
CN107179910A (zh) | 一种在线编辑即时生效的逻辑组态方法 | |
CN107784090B (zh) | 一种文件分享方法、设备及计算机可读介质 | |
CN106815015A (zh) | 一种ios中视图组织方法及系统 | |
CN104461001A (zh) | 一种信息处理方法及电子设备 | |
CN108572594A (zh) | 智能设备控制指令的生成方法、装置及终端设备 | |
CN104598113A (zh) | 一种信息处理的方法及电子设备 | |
CN106648335A (zh) | 一种二级联动菜单的创建方法及装置 | |
CN113780847A (zh) | 基于物联网的智慧社区信息处理方法及服务器 | |
CN106775700A (zh) | 一种简化代码的方法和装置 | |
CN111736942A (zh) | Vr系统中多应用场景显示方法、装置及vr设备 | |
CN114449063B (zh) | 一种报文处理方法、装置及设备 | |
CN116842715A (zh) | 一种仿真数据结构化处理系统 | |
CN104808976B (zh) | 一种文件分享方法 | |
CN108255486B (zh) | 用于表单设计的视图转换方法、装置和电子设备 | |
JP2018502402A (ja) | システムファームウェアのプログラミングスピードを速める方法 | |
CN107484006A (zh) | 一种界面处理方法、机顶盒及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181002 |
|
RJ01 | Rejection of invention patent application after publication |