代码解耦方法及相关设备与流程

文档序号:18894231发布日期:2019-10-15 22:39阅读:373来源:国知局
代码解耦方法及相关设备与流程

本申请涉及电子技术领域,尤其涉及一种代码解耦方法及相关设备。



背景技术:

同一个应用常会存在多个使用对象(例如快递类应用会存在管理者、寄件者、揽件者、收件者等),多个使用对象会存在部分功能的重叠。而目前代码的撰写极其不规范,对于存在多个使用对象的应用的代码撰写方式为分别对每个使用对象进行开发,导致多个使用对象可调用的共同公共代码重复编写,造成了源代码的冗杂臃肿,可维护性低。



技术实现要素:

本申请实施例提供一种代码解耦方法及相关设备,用于简化源代码和提升源代码的可维护性。

第一方面,本申请实施例提供一种代码解耦方法,所述方法包括:

获取目标应用的源代码;

解析所述源代码,以得到所述目标应用的多个使用对象;

基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

第二方面,本申请实施例提供一种代码解耦装置,应用于电子设备,所述装置包括:

获取单元,用于获取目标应用的源代码;

解析单元,用于解析所述源代码,以得到所述目标应用的多个使用对象;

解耦单元,用于基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

第三方面,本申请实施例提供一种电子设备,包括处理器、存储器、通信接口,以及一个或多个程序,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行本申请实施例第一方面所述的方法中的步骤的指令。

第四方面,本申请实施例提供了一种计算机可读存储介质,其中,上述计算机可读存储介质用于存储计算机程序,其中,上述计算机程序被处理器执行,以实现如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。

第五方面,本申请实施例提供了一种计算机程序产品,其中,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如本申请实施例第一方面所述的方法中所描述的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

可以看出,在本申请实施例中,电子设备获取目标应用的源代码,解析所述源代码,以得到所述目标应用的多个使用对象;然后基于多个使用对象将源代码解耦为公共调用代码和对象调用代码。相较于解耦前的源代码,解耦得到的源代码中只包含公共调用代码和对象调用代码,剔除了解耦前的源代码中重复撰写的公共调用代码,从而使得解耦后的源代码更加简洁,可读性强。在后期维护过程中,只需要对需要维护的公共调用代码或者对象调用代码进行重新调整,不需要对源代码的整体框架进行大的变更,减小了维护过程中的难度,从而提升了源代码的可维护性。

附图说明

为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例提供的一种代码解耦方法的流程示意图;

图2是本申请实施例提供的另一种代码解耦方法的流程示意图;

图3是本申请实施例提供的一种电子设备的结构示意图;

图4是本申请实施例提供的一种代码解耦装置。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

以下分别进行详细说明。

本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本申请提及的电子设备可以包括各种具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备、服务设备或连接到无线调制解调器的其他处理设备,以及各种形式的用户设备(userequipment,ue),移动台(mobilestation,ms),终端设备(terminaldevice)等等。

请参见图1,图1是本申请实施例提供的一种代码解耦方法,应用于电子设备,所述方法包括:

步骤101:获取目标应用的源代码。

进一步地,在获取目标应用的源代码之前,所述方法还包括:接收代码解耦指令,所述代码解耦指令携带所述目标应用的源代码的标识。

其中,代码解耦指令是指降低代码之间相互关联的指令。在软件工程中,代码之间有依赖关系必然存在耦合,理论上的绝对零耦合是做不到的,但是可以通过一些现有的方法将耦合度降至最低,因此代码解耦并不是指完全解除代码间的耦合,而是降低代码之间的耦合。

其中,所述源代码是指未编译的按照一定的程序设计语言规范书写的目标应用的文本文件,是一系列人类可读的计算机语言指令。在现代程序语言中,源代码可以是以书籍或者磁带的形式出现,但最为常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。

步骤102:解析所述源代码,以得到所述目标应用的多个使用对象。

具体地,所述解析所述源代码,以得到所述目标应用的多个使用对象的一具体方式为:解析所述源代码,以得到所述源代码的代码文本;确定所述代码文本中是否包含使用对象关键字;若所述代码文本中包含所述使用对象关键字,则基于所述使用对象关键字确定所述目标应用的多个使用对象。

举例说明,假定目标应用为pa揽客,电子设备解析的源代码得到代码文本,若所述代码文本中包含“salesmanofpa”、“recommender”“salesmanofthirdpart”、“adminofpa”,则可确定所述pa揽客的多个使用对象为:pa业务员、推荐员、第三方业务员、pa管理员,其中salesmanofpa为代码文本中pa业务员的表示字符,recommender为代码文本中推荐员的表示字符,salesmanofthirdpart为代码文本中第三方业务员的表示字符,adminofpa为代码文本中管理员的表示字符。

步骤103:基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

具体地,所述基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,包括:将所述源代码按照功能划分为多个子源代码;确定每个子源代码允许被调用的使用对象;若子源代码j允许调用的使用对象的数量大于或等于2,则确定所述子源代码j为所述公共调用代码中的一个第一代码;若所述子源代码允许调用的使用对象的数量为1,则确定所述子源代码j为其所允许调用的使用对象对应的子对象调用代码中的一个第二代码。

举例说明,假设目标应用为pa揽客,所述pa揽客的使用对象包括以下四个:pa业务员、推荐员、第三方业务员、pa管理员,每个使用对象具有的相同功能例如为发送消息功能、接收消息功能,pa业务员单独具有的功能为发布任务功能,推荐员单独具有的功能为推荐任务功能,第三方业务员单独具有的功能为接受任务功能,pa管理员单独具有的功能为管理任务功能,则实现上述的功能具有相应的代码,发送消息功能代码、接收消息功能代码、发布任务功能代码、推荐任务功能代码、接受任务功能代码、管理任务功能代码,将发送消息功能代码、接收消息功能代码作为公共调用代码,将发布任务功能代码、推荐任务代码、接受任务功能代码、管理任务功能代码作为对象调用代码。

可以看出,在本申请实施例中,电子设备获取目标应用的源代码,解析所述源代码,以得到所述目标应用的多个使用对象;然后基于多个使用对象将源代码解耦为公共调用代码和对象调用代码。相较于解耦前的源代码,解耦得到的源代码中只包含公共调用代码和对象调用代码,剔除了解耦前的源代码中重复撰写的公共调用代码,从而使得解耦后的源代码更加简洁,可读性强。在后期维护过程中,只需要对需要维护的公共调用代码或者对象调用代码进行重新调整,不需要对源代码的整体框架进行大的变更,减小了维护过程中的难度,从而提升了源代码的可维护性。

本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述方法还包括:

将所有的第二代码进行相互匹配,以得到匹配结果,所述匹配结果包括m个第一匹配成功记录,每个第一匹配成功记录包括使用对象相同的至少两个第二代码的标识,每个第一匹配成功记录对应一个子对象调用代码,所述m为正整数;

基于每个第一匹配成功记录删除其对应的子对象调用代码中的多个第一目标第二代码,删除后的每个子对象调用代码不存在任意两个第二代码相匹配的情况,每个第一匹配成功记录中包括的所述至少两个第二代码的标识包括其对应的所述多个第一目标第二代码的标识。

举例说明,对象调用代码包括子对象调用代码1、子对象调用代码2、子对象调用代码3;子对象调用代码1包括第二代码a11、第二代码b11、第二代码c11、第二代码a12;子对象调用代码2包括第二代码c21、第二代码d21、第二代码e21;子对象调用代码3包括第二代码b31、第二代码f31、第二代码g31。将所有的第二代码进行相互匹配后得到匹配结果,匹配结果中包括一个第一匹配成功记录:a11和a12,则删除子对象调用代码1中的第二代码a11或第二代码a12。

本申请的一实现方式中,所述匹配结果还包括n个第二匹配成功记录,每个第二匹配成功记录包括使用对象不同的至少两个第二代码的标识,所述n为正整数,所述方法还包括:

每个第二匹配成功记录中包括的所述至少两个第二代码的标识中的其中一个标识对应的第二代码移动至所述公共调用代码中,以及将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中除所述其中一个标识对应的第二代码删除。

举例说明,对象调用代码包括子对象调用代码1、子对象调用代码2、子对象调用代码3;子对象调用代码1包括第二代码a11、第二代码b11、第二代码c11、第二代码a12;子对象调用代码2包括第二代码c21、第二代码d21、第二代码e21;子对象调用代码3包括第二代码b31、第二代码f31、第二代码g31。将所有的第二代码进行相互匹配后得到匹配结果,匹配结果中包括一个第二匹配成功记录:b11和b31,则删除第二代码b11或第二代码b31,然后将剩余的第二代码b11或第二代码b31移动至公共调用代码中。

进一步地,在将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中的其中一个标识对应的第二代码移动至所述公共调用代码中之后,所述方法还包括:

将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中除所述其中一个标识对应的第二代码的使用对象关联至所述其中一个标识对应的第二代码上。

举例说明,将所有的第二代码进行相互匹配后得到匹配结果,匹配结果中包括一个第二匹配成功记录:b11和b31,则删除第二代码b11或第二代码b31,然后将剩余的第二代码b11或第二代码b31移动至公共调用代码中。若删除的第二代码为b11,则将第二代码b11的使用对象关联至第二代码b31上,以使得第二代码b31既可以被第二代码b31原来的使用对象调用,也可以被第二代码b11原来的使用对象调用。

本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述方法还包括:

接收代码调用指令,所述代码调用指令携带请求调用的代码类型;

若所述请求调用的代码类型为公共调用代码类型,则发送第一响应指令,所述第一响应指令携带所述电子设备中存在的至少一个公共调用代码;

若所述请求调用的代码类型为对象调用代码类型,则确定所述代码调用指令请求调用代码的第一目标使用对象;发送第二响应指令,所述第二响应指令携带所述第一目标使用对象对应的子对象调用代码。

具体地,所述确定所述代码调用指令请求调用代码的第一目标使用对象的一具体实现方式为:确定所述代码调用指令的发送端电子设备;基于所述代码调用指令的发送端电子设备确定确定所述代码调用指令请求调用代码的第一目标使用对象。

举例说明,假设目标应用为pa揽客,所述pa揽客的使用对象包括以下至少一个:pa业务员、推荐员、第三方业务员、pa管理员,若所述电子端发送设备为pa业务员端的电子设备,则确定第一目标使用对象为pa业务员,第一目标使用对象为推荐员、第三方业务员、pa管理员的确定方式同pa业务员。需要说明的是发送端电子设备的确定方式可以通过识别在所述发送端电子设备上目标应用的账户信息确定。

本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述方法还包括:

在接收到携带第三代码的增加代码指令时,确定所述第三代码的使用对象;

若所述第三代码的使用对象的数量大于或等于2,则将所述第三代码移动至所述公共调用代码中;

若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象包括所述第三代码的使用对象,则将所述第三代码移动至所述第三代码的使用对象对应的子对象调用代码中;

若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象不包括所述第三代码的使用对象,则新建一个子对象调用代码以及将所述第三代码移动至所述新建的子对象调用代码中。

需要说明的是,上述实施例对应的是代码开发过程中增加使用对象的情况。若在开发过程中,需要增添一个功能,则需要确定实现该功能的代码,然后确定能够调用该代码的使用对象,若使用对象数量大于或等于2则可直接确定该代码为公共调用代码;若使用对象只有1个,则需要进一步先前的多个使用对象是否包括该使用对象,如果包括,则可直接将该代码归类至其相应的子对象调用代码中,若不包括,则需新建一个子对象调用代码以及将该代码移动至新建的子对象调用代码中。

本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述方法还包括:

接收解除关联指令,所述解除关联指令用于解除第二目标使用对象与第四代码的关联,所述第二目标使用对象为所述多个使用对象中的一个使用对象,所述第四代码为所述公共调用代码包括的多个第一代码中的一个第一代码,所述第四代码的使用对象包括所述第二目标使用对象和第三目标使用对象;

将所述第四代码移动至所述第三目标使用对象的子对象调用代码中。

需要说明的是,上述实施例对应的是代码开发过程中减少使用对象的情况,若第四代码的使用对象大于2,则解除其中一个使用对象与第四代码的关联之后,该第四代码剩余关联的使用对象仍大于或等于2,所以该第四代码依旧是一个公共调用代码,不需作如上处理。

本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述方法还包括:

编译所述公共调用代码和所述对象调用代码,编译后的所述公共调用代码和所述对象调用代码允许被所述目标应用运行。

与所述图1所示的实施例一致的,请参阅图2,图2是本申请实施例提供的另一种代码解耦方法,应用于电子设备,所述方法包括:

步骤201:获取目标应用的源代码。

步骤202:解析所述源代码,以得到所述目标应用的多个使用对象。

步骤203:基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

步骤204:将所有的第二代码进行相互匹配,以得到匹配结果,所述匹配结果包括m个第一匹配成功记录,每个第一匹配成功记录包括使用对象相同的至少两个第二代码的标识,每个第一匹配成功记录对应一个子对象调用代码,所述m为正整数。

步骤205:基于每个第一匹配成功记录删除其对应的子对象调用代码中的多个第一目标第二代码,删除后的每个子对象调用代码不存在任意两个第二代码相匹配的情况,每个第一匹配成功记录中包括的所述至少两个第二代码的标识包括其对应的所述多个第一目标第二代码的标识。

步骤206:所述匹配结果还包括n个第二匹配成功记录,每个第二匹配成功记录包括使用对象不同的至少两个第二代码的标识,所述n为正整数,将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中的其中一个标识对应的第二代码移动至所述公共调用代码中。

步骤207:将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中除所述其中一个标识对应的第二代码删除。

步骤208:接收代码调用指令,所述代码调用指令携带请求调用的代码类型。

步骤209:若所述请求调用的代码类型为公共调用代码类型,则发送第一响应指令,所述第一响应指令携带所述电子设备中存在的至少一个公共调用代码。

步骤210:若所述请求调用的代码类型为对象调用代码类型,则确定所述代码调用指令请求调用代码的第一目标使用对象以及发送第二响应指令,所述第二响应指令携带所述第一目标使用对象对应的子对象调用代码。

步骤211:在接收到携带第三代码的增加代码指令时,确定所述第三代码的使用对象。

步骤212:若所述第三代码的使用对象的数量大于或等于2,则将所述第三代码移动至所述公共调用代码中。

步骤213:若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象包括所述第三代码的使用对象,则将所述第三代码移动至所述第三代码的使用对象对应的子对象调用代码中。

步骤214:若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象不包括所述第三代码的使用对象,则新建一个子对象调用代码以及将所述第三代码移动至所述新建的子对象调用代码中。

步骤215:接收解除关联指令,所述解除关联指令用于解除第二目标使用对象与第四代码的关联,所述第二目标使用对象为所述多个使用对象中的一个使用对象,所述第四代码为所述公共调用代码包括的多个第一代码中的一个第一代码,所述第四代码的使用对象包括所述第二目标使用对象和第三目标使用对象。

步骤216:将所述第四代码移动至所述第三目标使用对象的子对象调用代码中。

步骤217:编译所述公共调用代码和所述对象调用代码,编译后的所述公共调用代码和所述对象调用代码允许被所述目标应用运行。

需要说明的是,步骤208-210可以在步骤211之前,也可以在步骤211之后;步骤211-214可以在步骤208之前,也可以在步骤216之后;步骤214和步骤215可以在208之前,也可以在208之后,本实施例的具体实现过程可参见上述方法实施例所述的具体实现过程,在此不再叙述。

与上述图1和图2所示的实施例一致的,请参阅图3,图3是本申请实施例提供的一种电子设备的结构示意图,包括处理器、存储器、通信接口以及一个或多个程序,其中,上述一个或多个程序被存储在上述存储器中,并且被配置由上述处理器执行,上述程序包括用于执行以下步骤的指令:

获取目标应用的源代码;

解析所述源代码,以得到所述目标应用的多个使用对象;

基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

可以看出,在本申请实施例中,电子设备获取目标应用的源代码,解析所述源代码,以得到所述目标应用的多个使用对象;然后基于多个使用对象将源代码解耦为公共调用代码和对象调用代码。相较于解耦前的源代码,解耦得到的源代码中只包含公共调用代码和对象调用代码,剔除了解耦前的源代码中重复撰写的公共调用代码,从而使得解耦后的源代码更加简洁,可读性强。在后期维护过程中,只需要对需要维护的公共调用代码或者对象调用代码进行重新调整,不需要对源代码的整体框架进行大的变更,减小了维护过程中的难度,从而提升了源代码的可维护性。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码方面,上述程序包括具体用于执行以下步骤的指令:

将所述源代码按照功能划分为多个子源代码;

确定每个子源代码允许被调用的使用对象;

若子源代码j允许调用的使用对象的数量大于或等于2,则确定所述子源代码j为所述公共调用代码中的一个第一代码;

若所述子源代码允许调用的使用对象的数量为1,则确定所述子源代码j为其所允许调用的使用对象对应的子对象调用代码中的一个第二代码。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,上述程序包括还用于执行以下步骤的指令:

将所有的第二代码进行相互匹配,以得到匹配结果,所述匹配结果包括m个第一匹配成功记录,每个第一匹配成功记录包括使用对象相同的至少两个第二代码的标识,每个第一匹配成功记录对应一个子对象调用代码,所述m为正整数;

基于每个第一匹配成功记录删除其对应的子对象调用代码中的多个第一目标第二代码,删除后的每个子对象调用代码不存在任意两个第二代码相匹配的情况,每个第一匹配成功记录中包括的所述至少两个第二代码的标识包括其对应的所述多个第一目标第二代码的标识。

在本申请的一实现方式中,所述匹配结果还包括n个第二匹配成功记录,每个第二匹配成功记录包括使用对象不同的至少两个第二代码的标识,所述n为正整数,上述程序包括还用于执行以下步骤的指令:

将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中的其中一个标识对应的第二代码移动至所述公共调用代码中,以及将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中除所述其中一个标识对应的第二代码删除。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,上述程序包括还用于执行以下步骤的指令:

接收代码调用指令,所述代码调用指令携带请求调用的代码类型;

若所述请求调用的代码类型为公共调用代码类型,则发送第一响应指令,所述第一响应指令携带所述电子设备中存在的至少一个公共调用代码;

若所述请求调用的代码类型为对象调用代码类型,则确定所述代码调用指令请求调用代码的第一目标使用对象;发送第二响应指令,所述第二响应指令携带所述第一目标使用对象对应的子对象调用代码。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,上述程序包括还用于执行以下步骤的指令:

在接收到携带第三代码的增加代码指令时,确定所述第三代码的使用对象;

若所述第三代码的使用对象的数量大于或等于2,则将所述第三代码移动至所述公共调用代码中;

若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象包括所述第三代码的使用对象,则将所述第三代码移动至所述第三代码的使用对象对应的子对象调用代码中;

若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象不包括所述第三代码的使用对象,则新建一个子对象调用代码以及将所述第三代码移动至所述新建的子对象调用代码中。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,上述程序包括还用于执行以下步骤的指令:

接收解除关联指令,所述解除关联指令用于解除第二目标使用对象与第四代码的关联,所述第二目标使用对象为所述多个使用对象中的一个使用对象,所述第四代码为所述公共调用代码包括的多个第一代码中的一个第一代码,所述第四代码的使用对象包括所述第二目标使用对象和第三目标使用对象;

将所述第四代码移动至所述第三目标使用对象的子对象调用代码中。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,上述程序包括还用于执行以下步骤的指令:

编译所述公共调用代码和所述对象调用代码,编译后的所述公共调用代码和所述对象调用代码允许被所述目标应用运行。

需要说明的是,本实施例的具体实现过程可参见上述方法实施例所述的具体实现过程,在此不再叙述。

上述实施例主要从方法侧执行过程的角度对本申请实施例的方案进行了介绍。可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

本申请实施例可以根据所述方法示例对电子设备进行功能单元的划分,例如,可以对应各个功能划分各个功能单元,也可以将两个或两个以上的功能集成在一个处理单元中。所述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。需要说明的是,本申请实施例中对单元的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

下面为本申请装置实施例,本申请装置实施例用于执行本申请方法实施例所实现的方法。请参阅图4,本申请实施例提供的一种代码解耦装置,应用于电子设备,所述装置包括:

获取单元401,用于获取目标应用的源代码;

解析单元402,用于解析所述源代码,以得到所述目标应用的多个使用对象;

解耦单元403,用于基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码,每个子对象调用代码包括多个第二代码,子对象调用代码i包括的多个第二代码只允许被所述子对象调用代码i关联的使用对象调用,所述子对象调用代码i为所述多个子对象调用代码中的其中一个。

可以看出,在本申请实施例中,电子设备获取目标应用的源代码,解析所述源代码,以得到所述目标应用的多个使用对象;然后基于多个使用对象将源代码解耦为公共调用代码和对象调用代码。相较于解耦前的源代码,解耦得到的源代码中只包含公共调用代码和对象调用代码,剔除了解耦前的源代码中重复撰写的公共调用代码,从而使得解耦后的源代码更加简洁,可读性强。在后期维护过程中,只需要对需要维护的公共调用代码或者对象调用代码进行重新调整,不需要对源代码的整体框架进行大的变更,减小了维护过程中的难度,从而提升了源代码的可维护性。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码,所述公共调用代码包括多个第一代码,每个第一代码允许被所述多个使用对象中的至少两个使用对象调用,所述对象调用代码包括多个子对象调用代码方面,所述解耦单元403,具体用于:

将所述源代码按照功能划分为多个子源代码;

确定每个子源代码允许被调用的使用对象;

若子源代码j允许调用的使用对象的数量大于或等于2,则确定所述子源代码j为所述公共调用代码中的一个第一代码;

若所述子源代码允许调用的使用对象的数量为1,则确定所述子源代码j为其所允许调用的使用对象对应的子对象调用代码中的一个第二代码。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述装置还包括匹配单元404和删除单元405,其中:

所述匹配单元404,用于将所有的第二代码进行相互匹配,以得到匹配结果,所述匹配结果包括m个第一匹配成功记录,每个第一匹配成功记录包括使用对象相同的至少两个第二代码的标识,每个第一匹配成功记录对应一个子对象调用代码,所述m为正整数;

所述删除单元405,用于基于每个第一匹配成功记录删除其对应的子对象调用代码中的多个第一目标第二代码,删除后的每个子对象调用代码不存在任意两个第二代码相匹配的情况,每个第一匹配成功记录中包括的所述至少两个第二代码的标识包括其对应的所述多个第一目标第二代码的标识。

在本申请的一实现方式中,所述匹配结果还包括n个第二匹配成功记录,每个第二匹配成功记录包括使用对象不同的至少两个第二代码的标识,所述n为正整数,所述装置还包括移动单元406,用于将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中的其中一个标识对应的第二代码移动至所述公共调用代码中;

所述删除单元405,还用于将每个第二匹配成功记录中包括的所述至少两个第二代码的标识中除所述其中一个标识对应的第二代码删除。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述装置还包括通信单元407和确定单元408,其中:

所述通信单元407,用于接收代码调用指令,所述代码调用指令携带请求调用的代码类型;若所述请求调用的代码类型为公共调用代码类型,则发送第一响应指令,所述第一响应指令携带所述电子设备中存在的至少一个公共调用代码;

所述确定单元408用于,若所述请求调用的代码类型为对象调用代码类型,则确定所述代码调用指令请求调用代码的第一目标使用对象;

所述通信单元407,还用于发送第二响应指令,所述第二响应指令携带所述第一目标使用对象对应的子对象调用代码。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述确定单元408,还用于在接收到携带第三代码的增加代码指令时,确定所述第三代码的第二使用对象;

所述移动单元406,还用于若所述第三代码的使用对象的数量大于或等于2,则将所述第三代码移动至所述公共调用代码中;若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象包括所述第三代码的使用对象,则将所述第三代码移动至所述第三代码的使用对象对应的子对象调用代码中;

所述装置还包括创建单元409,用于若所述第三代码的使用对象的数量为1且所述目标应用的多个使用对象不包括所述第三代码的使用对象,则新建一个子对象调用代码;所述移动单元406,还用于将所述第三代码移动至所述新建的子对象调用代码中。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述通信单元407,还用于接收解除关联指令,所述解除关联指令用于解除第二目标使用对象与第四代码的关联,所述第二目标使用对象为所述多个使用对象中的一个使用对象,所述第四代码为所述公共调用代码包括的多个第一代码中的一个第一代码,所述第四代码的使用对象包括所述第二目标使用对象和第三目标使用对象;

所述移动单元406,还用于将所述第四代码移动至所述第二使用对象的子对象调用代码中。

在本申请的一实现方式中,在基于所述多个使用对象将所述源代码解耦为公共调用代码和对象调用代码之后,所述装置还包括编译单元410,用于编译所述公共调用代码和所述对象调用代码,编译后的所述公共调用代码和所述对象调用代码允许被所述目标应用运行。

需要说明的是,获取单元401、解析单元402、解耦单元403、匹配单元404、删除单元405、移动单元406、确定单元408、创建单元409和编译单元410可通过处理器实现,通信单元407可通过通信接口实现。

本申请实施例还提供一种计算机存储介质,其中,该计算机存储介质存储用于存储计算机程序,该计算机程序被处理器执行如上述方法实施例中记载的任一方法的部分或全部步骤。

本申请实施例还提供一种计算机程序产品,上述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,上述计算机程序可操作来使计算机执行如上述方法实施例中记载的任一方法的部分或全部步骤。该计算机程序产品可以为一个软件安装包。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置,可通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性或其它的形式。

上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例上述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。

本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储器中,存储器可以包括:闪存盘、只读存储器(英文:read-onlymemory,简称:rom)、随机存取器(英文:randomaccessmemory,简称:ram)、磁盘或光盘等。

以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1