CN1573693A - 用于创建、管理和使用代码段的系统和方法 - Google Patents

用于创建、管理和使用代码段的系统和方法 Download PDF

Info

Publication number
CN1573693A
CN1573693A CNA2004100639897A CN200410063989A CN1573693A CN 1573693 A CN1573693 A CN 1573693A CN A2004100639897 A CNA2004100639897 A CN A2004100639897A CN 200410063989 A CN200410063989 A CN 200410063989A CN 1573693 A CN1573693 A CN 1573693A
Authority
CN
China
Prior art keywords
code segment
code
file
segment
source program
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.)
Granted
Application number
CNA2004100639897A
Other languages
English (en)
Other versions
CN100354823C (zh
Inventor
S·斯班舍
M·W·戈茨
T·梁
J·R·谢梅尔泽
A·K·西尔弗
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of CN1573693A publication Critical patent/CN1573693A/zh
Application granted granted Critical
Publication of CN100354823C publication Critical patent/CN100354823C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

在一个XML文件中对代码段及与该代码段关联的信息(例如元信息)元素进行编码。一个或多个编码的代码段保存在一个编码代码段库中。可以选择一个编码代码段并插入到一个源代码文件中。当所述编码代码插入到源代码中时,自动包含该代码段所需的相关元素,并且识别需要修改的代码段部分。管理并组织所述代码段以促进所述代码段的共享。

Description

用于创建、管理和使用代码段的系统和方法
发明领域
本发明涉及编程工具,特别是涉及创建、管理和使用代码段的方法。
发明背景
随着软件解决方案发展的需求,提高程序员的效率变得越来越重要。一种提高程序员效率的方法是重复利用已写好的代码段。传统上,这种方式由手工实现:用户查找并保存代码段,并且对其进行修改以用在新的环境中。尽管这是有帮助的,但是在某些情况下,要找到开发者需要的特定代码段是很困难的,并且一旦找到,修改代码段使之符合预期的应用也是一项很重要的工作。
如果存在一种方法使代码段更容易查找和修改并且产生提供更强代码段的解决方案将是很有益的。
发明概述
代码段和与该代码段相关的信息(例如元信息)元素可以一起编码在XML文件或其它类型的文件或数据库中。一个或多个编码的代码段存留作为一个编码的代码段库。该库的中心库可以是一个文件系统或数据库。编码的代码段可以使用搜索操作进行选择,并且插入到一个源代码文件中。当编码的代码插入到源代码中时,自动包含该代码段所需的相关元素,并且识别可能需要修改的部分代码段。管理和组织所述代码段,以促进所述代码段的共享。提供利用其可以创建新的代码段并添加到所述库中供以后使用的工具。
附图的简要说明
当结合附图阅读时,将更好的理解以上概述及以下对示意实施例的详细说明。为了举例说明本发明,在附图中示出了本发明的典型结构;但是,本发明并不局限于所公开的特定方法和工具。附图中:
附图1是表示其中可以实现本发明各个方面的典型计算环境的方框图;
附图2是根据本发明的一个实施例用于创建、管理和重复利用代码段的一个系统的典型方框图;
附图3是根据本发明的一个实施例用于创建、管理和重复利用代码段的一个过程的流程图;
附图4a-b描述了根据本发明的一个方面的典型的编码代码段;
附图5是根据本发明的一个实施例用于选择一个代码段插入到一个源程序中的典型的用户界面屏幕图;
附图6是根据本发明的一个实施例用于选择一个代码段插入到一个源程序中的另一个典型的用户界面屏幕图;
附图7是根据本发明的一个方面用于插入一个代码段到一个源程序中的过程的流程图;
附图8是根据本发明的一个方面当插入一个代码段到一个源程序中时,可能显示的典型的用户界面屏幕图;
附图9是根据本发明的一个方面当插入一个代码段到一个源程序中时,可能显示的典型的用户界面屏幕图;
附图10是根据本发明的一个方面当选择一个元素修改时,可能显示的典型的用户界面屏幕图;
附图11是当选择一个元素的新实例插入时,可能显示的典型的用户界面屏幕图;
附图12是根据本发明的一个方面可能显示的典型的用户界面屏幕图;并且
附图13a-c描述了根据图12所示本发明的一个方面的典型的编码代码段。
示意实施例的详细说明
概论
代码段以及与所述代码段相关的信息(例如与代码段相关的元信息,如所需参考值)元素编码在一个或多个文件中。在本发明的一个实施例中,代码段和元信息编码在一个XML文件中。一个或多个编码的代码段保存在一个编码代码段库中。从所述库中可以选择一个段并插入到源代码文件中。当所述段插入到源代码中时,可以自动包含该代码段所需的相关元素。识别可能需要修改的部分代码段,并且提供一种便于通过可修改元素导航的装置。可以显示修改所述代码段的提示。也可以显示有关该代码段的注释。此外,可以执行正确插入代码段的验证。更适宜地,管理和组织所述代码段以促进代码段的共享。
典型计算环境
附图1和以下论述将对可以实现本发明的一个适合的计算环境提供简要概括的描述。但是,应当理解,手持式、便携式和其他所有类型的计算设备都可以考虑与本发明结合使用。虽然以下描述了一种通用计算机,但是这仅仅是一个例子,本发明仅需要一具有网络服务器互用性和交互性的瘦客户机。因此,本发明可以在其中含有非常小或最小的客户机资源的网络主服务环境中实现,例如这样一个网络环境,其中客户机设备仅用作浏览器或万维网的接口。
尽管不需要,但是本发明也可以通过应用程序接口(API)实现,以供开发者使用,并且/或者包含在将在计算机可执行指令的普通上下文例如由一个或多个计算机如客户工作站、服务器或其他设备执行的程序模块中描述的网络浏览软件中。通常,程序模块包括例程、程序、对象、组件、数据结构和执行特定任务或实现特定抽象数据类型的类似模块。一般来说,程序模块的功能根据需要可以组合或分布在各个实施例中。此外,那些本领域技术人员将会理解本发明可以用其他计算机系统结构实施。其他适合本发明使用的公知的计算系统、环境、和/或结构包括,但不局限于个人计算机(PCs)、自动取款机、服务器计算机、手持或膝上设备、多处理器系统、基于微处理器的系统、可编程消费电子设备、网络PCs、小型计算机、大型计算机等等。本发明还可以在分布式计算环境中实施,其中通过远程处理设备执行任务,这些远程处理设备通过通信网络或其他数据传输介质链接。在分布式计算环境中,程序模块位于包括存储器存储设备的本地和远程计算机存储介质中。
附图1示出了其中可以实现本发明的一个适合的计算系统环境100的例子。尽管上面已澄清,计算系统环境100仅仅是适合的计算环境中的一个例子,并不打算对本发明的使用或功能的范围给出任何限制。计算环境100不应当被解释为对与典型的操作环境100所示的任何一个部件或多个部件的组合具有任何依赖或需求。
参照附图1,实现本发明的一个典型的系统包括以计算机110为形式的通用计算设备。计算机110的部件可以包括但不局限于处理单元120、系统存储器130和系统总线121,系统总线121将包括系统存储器的各个系统部件耦合到处理单元120。系统总线121可以是包括存储器总线或存储器控制器、外部总线和使用多种总线结构的任何一种的局部总线的几种类型的总线结构中的任何一种。为了举例,而不是限定,这种结构包括工业标准结构(ISA)总线、微通道结构(MCA)总线、增强的ISA(EISA)总线、视频电子标准协会(VESA)局部总线、以及外围部件互连(PCI)总线(也称作中间总线)。
计算机110一般包括多种计算机可读介质。计算机可读介质可以是可由计算机110存取的任意可用的介质,包括易失性和非易失性介质、可移动和不可移动介质。为了举例,而不是限制,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括在用于存储诸如计算机可读指令、数据结构、程序模块或其他数据的信息的方法或技术中实现的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括,但不局限于RAM、ROM、EEPROM、闪存或其他存储器技术、CDROM、数字通用光盘(DVD)或其他光盘存储器、盒式磁带、磁带、磁盘存储器或其他磁存储设备,或其他可用于存储所需信息并且可由计算机110存取的任何介质。通信介质一般包含调制数据信号例如载波或其他传输结构中的计算机可读指令、数据结构、程序模块或其他数据,并且包括任何信息发送介质。术语“调制数据信号”是指以在信号中编码信息这样一种方式设置或改变其一个或多个特性的信号。为了举例,而不是限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、RF、红外、及其他无线介质的无线介质。上述介质的任意组合也都包含在计算机可读介质的范围之内。
系统存储器130包括以易失性和/或非易失性存储器为形式的,诸如只读存储器(ROM)131和随机存取存储器(RAM)132的计算机存储介质。基本输入/输出系统133(BIOS)一般存储在ROM131中,所述基本输入/输出系统133包含促进计算机110内部元件之间,例如在启动期间的信息的传送的基本例程。RAM132一般包含可由处理单元120快速存取和/或即时操作的数据和/或程序模块。为了举例,而不是限制,附图1示出了操作系统134、应用程序135、其他程序模块136,和程序数据137。
计算机110还可以包括其他可移动/不可移动、易失性/非易失性计算机存储介质。仅为了举例,附图1a示出了从不可移动、非易失性磁介质读取或向其写入的硬盘驱动器141,从可移动、非易失性磁盘152读取或向其写入的磁盘驱动器151,以及从可移动、非易失性光盘156,例如CD-ROM或其他光盘介质读取或向其写入的光盘驱动器155。其他可用于所述典型的操作环境中的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不局限于盒式磁带、闪存卡、数字通用光盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器141一般通过不可移动存储器接口,如接口140连接到系统总线121,且磁盘驱动器151和光盘驱动器155一般通过可移动存储器接口,例如接口150连接到系统总线121。
上述讨论并在图1中示出的驱动器及其相关的计算机存储介质,提供对计算机可读指令、数据结构、程序模块及其他用于计算机110的数据的存储。在图1中,例如,硬盘驱动器141示意为存储操作系统144、应用程序145、其他程序模块146和程序数据147。应当注意,这些部件既可以与操作系统134、应用程序135、其他程序模块136和程序数据137相同也可以不同。操作系统144、应用程序145、其他程序模块146、以及程序数据147给出了不同的标记,以最低限度说明它们是不同的版本。用户可以通过输入设备,例如键盘162和点击设备161,通常称作鼠标、轨迹球或触摸板,将命令和信息输入到计算机110中。其他输入设备(未示出)可以包括麦克风、操纵杆、游戏柄、圆盘式卫星电视天线、扫描仪等等。这些及其他输入设备通常通过耦合到系统总线121的用户输入接口160连接到处理单元120,但是也可以通过其他接口和总线结构,例如并行端口、游戏端口或通用串行总线(USB)连接。
监视器191或其它类型的显示设备也可以通过接口,如视频接口190连接到所述系统总线121。图形接口182,如北桥,也可以连接到系统总线121。北桥是与CPU或主处理单元120通信的芯片组,并且承担加速图形端口(AGP)通信的责任。一个或多个图形处理单元(GPUs)184可以与图形接口182通信。在这点上,GPUs184通常包括片内存储存储器,例如寄存器存储器,并且GPUs184与视频存储器186通信。但是,GPUs184仅仅是协处理器的一个例子,且在计算机110中可以包含多种协处理设备。监视器191或其它类型的显示设备也可以通过接口,例如视频接口190连接到系统总线121,其可以轮流与视频存储器186通信。除了监视器191,计算机还可以包括其他外部设备输出设备,例如扬声器197和打印机196,这些设备可以通过输出外部设备接口195连接。
计算机110可以使用逻辑连接到一个或多个远程计算机,例如远程计算机180,而工作在网络环境中。远程计算机180可以是个人计算机、服务器、路由器、网络PC、端对端设备或其他公共网络节点,并且一般包括上述与计算机110相关的多个或所有元件,尽管在图1a中仅示出了存储器存储设备181。在图1a中描述的逻辑连接,包括局域网(LAN)171和广域网(WAN)173,但是也可以包括其他网络。这种网络环境通常在办公室、企业范围计算机网络、企业内部互联网和因特网中。
当用在LAN网络环境中时,计算机110通过网络接口或适配器170连接到LAN171。当用在WAN网络环境中时,计算机110一般包括调制解调器172或其他用于通过WAN173,例如因特网建立通信的装置。调制解调器172,可以是内部的或外部的,其可以通过用户输入接口160或其他适合的结构连接到系统总线121。在网络环境中,相对于计算机110描述的程序模块或部分该模块,可以存储在远程存储器存储设备中。为了举例,而不是限制,附图1a示出了驻留在存储器设备181中的远程应用程序185。将会理解到所示的网络连接是示意性的,也可以使用其他建立计算机之间通信链接的装置。
本领域普通技术人员能够理解到计算机110或其他客户机设备可以配置作为计算机网络的一部分。在这点上,本发明属于具有任意数量的存储器或存储单元,以及任意数量的应用程序,和任意数量的存储器单元或卷中发生的处理过程的任意计算机系统。本发明可以应用于具有服务器计算机和客户机计算机的环境中,该环境是在网络环境中配置的,并含有远程或本地存储器。本发明还可以应用于独立的计算设备中,该设备具有程序设计语言功能、解释和执行能力。
用于创建、管理和使用代码段的系统和方法
附图2是根据本发明的一个实施例,用于创建、管理和使用代码段的系统的方框图。在图2中,计算机202表示但不局限于一种如本发明可以驻留于其上的用户或开发型计算机的计算机。本发明可以被实现作为集成设计环境或作为独立系统部件。所述工具可以包括代码段管理器216,及以下一个或多个部件:代码段库222,一个或多个语言调试器,这里由调试器214表示,一个或多个语言设备(未示出),一个或多个由编辑器206表示的编辑器,用于起草和编辑源代码212,以及一个或多个编译器,由编译器208表示。那些本领域普通技术人员将会理解设计环境IDE204也可以包括在图2中未示出的其他部件。
源代码文件212一般为程序员或开发者键入或编辑的一组指令,并且以一给定的编程语言或编程语言的组合来编写。源代码212一般包括一个或多个语句,每个语句一般包括一个或多个表达式和/或实体。所述语句中的表达式和/或实体可以由多个部分构成。源代码212可以通过编辑器206创建或修改,并且存留在一稳定的存储介质中。
使用设计环境(例如典型的集成设计环境(IDE)204)可以从源代码212创建应用程序。所述设计环境可以包括一个或多个编译器,这里由编译器208表示,一个或多个语言设备(未示出),一个或多个设计工具(这里由调试器214表示)、一个或多个编辑器,这里由编辑器206表示,浏览器(未示出)等等。IDE204例如可以表示MICROSOFT VISUAL STUDIO.NET,或者MACROMEDIA的DREAMWEAVER,或者BORLAND C++ BUILDER STUDIO6或者其他任何软件开发/设计工具、编译器或环境。
诸如IDE204的设计环境可以从源代码212产生能够运行于独立执行的环境中(未示出)的可执行代码210,或者可以产生经过再次解译或编译的代码的中间形式,并且由执行环境运行。这种执行环境可以包括为了从源代码212运行由设计环境IDE204产生的编译所需的元素。所述执行环境可以包括从非特定设备中间语言代码产生本机代码的元素。此外开发和执行环境可以包括各种类库(未示出)。一个适合的执行环境可以表现为例如MICROSOFT COMMONLANGUAGE RUNTIME.NET,或JAVA,或者其他任何适合的执行环境。可执行应用程序可以与共享类库和执行环境一起加载到一个或多个计算机中(未示出)并运行。
编辑器206帮助计算机程序源代码212的开发。编辑器206可以是BASIC,COBOL,FORTRAN,C,C++,aC#,JAVA,J#,VISUALBASIC,REALBASIC,DELPHI,ASP,PASCAL,HTML,XML,ADA,PERL,DYLAN,PYTHON,SMALLTALK,TCL-TK,EIFFEL编辑器等等。
编译器208可以表现为BASIC,COBOL,FORTRAN,C,C++,C#,JAVA,J#,VISUALBASIC,REALBASIC,DELPHI,ASP,PASCAL,HTML,XML,ADA,PERL,DYLAN,PYTHON,SMALLTALK,TCL-TK,EIFFEL编译器或解释器或其他任何适合的编译器或解释器。
在本发明的一个实施例中,代码段由代码段管理器216接收,转换成诸如XML文件的文件,并保存在代码段库222中。然后根据以下更完整的说明,代码段库222中的代码段可以用于插入在源代码中。
图3是根据本发明的一个实施例用于创建、存储和重复使用代码段的过程的流程图。下面参照附图3,在步骤302,产生用于保存和重复使用的代码段,可以选择源程序中的一部分代码(例如,通过加亮一部分代码和右键点击或通过其他任何适合的方式)。在本发明的一个实施例中,在选择一个代码块包含在代码段库222中之后,显示一个新的程序编辑器用户界面的会话。在这点上,在本发明的一个实施例中,代码段的创建者能够编辑所述代码段,设置一个或多个选择的元素或部分代码段的缺省值,定义一个选择作为一个可修改的对象、变量或常量等等,并且如果选择重复使用,则提供用于修改所述代码段部分的帮助文本。预期的修改类型也可以指定。(作为非限制性的一个例子,对象、变量或基本式可以是整数型、字符串型或类)。类型的模板可以与可修改元素关联。例如,如果一个代码段与一个数据源交互,则该代码段可以与一个数据库表,以及该表所涉及的强类型对象相关联。此外,可以提供代码段的标题、搜索以查找该代码段的关键字,如果选择重复使用,可以为代码段中所选择的元素指明用于修改所述代码段的提示和/或注释。显示有关可从其在源程序的原始应用中推得的代码段的元信息。其与用户所需的其他任何附加元信息都可以与所述代码段相关联。
在步骤304,在本发明的一个实施例中所述代码段被转换成一个XML文件。在图4中示出了可从代码段创建的一个典型的XML文件400。在本发明的一个实施例中库222是一个重复使用的对象的集合,并且包括一个或多个编码代码段,例如示意的编码代码段400。编码代码段400可以包括以下一项或多项:代码段的标题404,由开始和结束标记402a和402b指示(“<title>”),由开始标记“<uniqueid>”408a和结束标记“<uniqueid>”408b指示的唯一的标识符406,以及包括诸如代码段的版本,代码段的地点,代码段的作者,代码段是干什么的描述,代码段帮助主题的统一资源定位器(URL),代码段所属的一个或多个种类(例如诸如某一类),可以用于查找所述代码段的关键字,打算在其上运行代码段的执行环境的版本,诸如由运行所述代码段所需的库和集合的引用,代码段中控件、对象、常量等的声明,用于编码代码段的编程语言,代码段410中的实际代码和所需要的其他信息。将会理解到,在XML文件中,代码段的这些部分可以通过任何适合的开始和结束标记来划定界限,根据参照上述分隔符所选择的特定标记仅仅是示意性的。任何适合的标记或指示符都可以用于识别存留的信息。同时也将会理解到,虽然在本发明的一个实施例中,所述文件是XML文件,所述元信息在该XML文件中编码,但是在其他实施例中,所述信息可以在非XML文件的一个或多个文件或数据库中进行编码。
在步骤306,开发者或其他用户为了重复利用所述代码,可以存取编码代码段例如库222中的编码代码段400。在本发明的一个实施例中,为了在一个新的环境中重复利用,代码段库222中的编码代码段可以从开发环境内部存取。附图5示出了本发明的一个实施例的典型屏幕图500,其中显示有一程序编辑器用户界面,并且其中上下文菜单504显示为一个可能的选项“插入片断”504a(在图5中简化为“插入”)。在选择“插入片断”504a之后,显示一列操作,其中“执行代码”504b是一项操作,并且显示可能的编码代码段,其中显示“读命令行变元”(简化为“READ COM LINE ARGS”504c)。在选择编码代码段504c之后,所选择的编码代码段的代码部分被插入到程序源代码212中。对将不能正确地插入指示插入到特定位置的代码段可以变成灰色或者禁止选择。
在本发明的一个实施例中,为了重复使用,开发者或其他用户通过引出驱动器或目录内容的显示,并从驱动器或目录内容显示(即库)中选择和拖拽所述编码代码段可以存取诸如库222的编码代码段400之类的代码段库的成员,如图6的典型屏幕图600所示,其中已这样选择了编码代码段602。在其他实施例中,代码段可以通过选择用于编辑器中的文本的公知方式进行选择。表示所选择的代码段将被插入的位置的光标604由一个竖线606标明。在一个实施例中如果所选择的插入代码段的位置是一个允许插入的位置,则仅显示竖线606。
附图7是根据本发明的一个方面,将一个代码段插入到源代码的过程。在步骤702,选择插入到源代码的代码段。附图5和6表示选择插入代码段的两种方法,尽管如此,如上所解释的,也可以计划用其他选择代码段的方法。
在步骤704,对编码代码段进行解析以确定可用的元信息。在一个实施例中,其中所述代码段被编码作为一个XML文件,对该XML代码进行解析以确定由XML标记划定界限的元信息元素,如上所述的。
在步骤706,比较所述代码段元信息中的编程语言与源代码编程语言。如果所述编程语言不兼容,则不允许插入所述代码段。(例如,如果选择插入的代码段为C++代码段,则该代码段要插入的源代码必须也是C++代码)。预期的可以实现本发明的编程语言包括BASIC,COBOL,FORTRAN,C,C++,C#,JAVA,J#,VISUALBASIC,REALBASIC,DELPHI,ASP,PASCAL,HTML,XML,ADA,PERL,DYLAN,PYTHON,SMALLTALK,TCL-TK,EIFFEL以及其他任何编程语言。
在步骤708,确定将所述代码段插入到源代码中的可行性。例如,在MICROSOFF VISUAL BASIC语言中,属性不能放置到方法中,因此在步骤708,在本发明的一个实施例中,不允许将属性代码段插入到方法中。同样地,在本发明的一个实施例中,如果代码行不能封装入方法中,所述代码行将不能插入到名字空间或模块中,因为代码行必须包含在诸如例程、属性或函数之类的过程内。在本发明的一个实施例中,包括函数的代码段不可以插入到其他函数内。在本发明的一个实施例中,类、结构、或接口定义都不可以插入到方法内。上述所列的及其他插入规则可以应用到包括C#的多种编程语言、以及诸如上述所列的其他多种语言中。
在步骤710,所述代码段被拷贝到源代码的指示位置(例如当选择该代码段时,通过光标位置所确定的位置)。图8示出了本发明一个实施例的典型屏幕图,其中由分界线806划定界限的代码段802已被插入到源代码804中。可以显示如由注释814和816所示的一个或多个注释。注释可以提供有助于为其新环境而修改所述代码段的信息(例如注释814),或者可以包括一个帮助主题(例如注释816)或其他适合的信息的链接,并且如上所论述的,可以表示生成所述代码段时由该代码段的创建者所输入的注释信息。
在步骤712,识别每个可能需要修改例如但不局限于诸如但不局限于所述代码段内的常量、控件以及对象的字段的元素(例如,通过比较以适当的标记划定界限的XML文件中的元信息与在所述代码段的代码部分找到的识别控件、常量和对象)。将所识别的常量、控件、和对象等高亮显示,或者在源代码中区分,如图8中由控件810和812所示的。
在步骤714,在所述编码代码段文件中检查表示库、组件和运行所述代码段所需的其它编程元素的输入和引用,并且将那些还未包含在源代码中的输入和引用插入到源代码中(例如,图12的输入语句1202已被插入,并且引用列表已被更新为包括“System.Web”1204)。
在步骤716,由脱字符号或光标表示的焦点以及加亮移动到需要修改的第一个元素(例如TextBox1 810)。在步骤718,激活标记。在一个实施例中,通过在具有焦点的元素周围显示边界来指示激活,如由边界820所示的。
在本发明的一个实施例中,改变一个常量、变量或控件的操作,导致自动更新相同代码段内的所有其它常量、变量或控件的实例。例如,如图8所示,假定将“TextBox1”810变为“TextBox2”。在本发明的一个实施例中,在改变“TextBox1”810为“TextBox2”之后,“TextBox1”812同样自动变为“TextBox2”。
在本发明的一个实施例中,在接收一个指定的用户操作或事件之后(例如但不局限于:输入CONTROL+SPACE),显示变量的有效替代表。在本发明的一个实施例中,包含在列表框1004中的项包括缺省元素和出现在源代码内的任何相似元素。例如,下面参照图10,如果在选择“TextBox2”1002之后,输入CONTROL-SPACE,列表框1004包括元素TextBox1 1014(缺省),以及任何存在于所述表格中的TextBox变量(例如附有图标或指示这是来自源代码的一个元素的指示符1012的TextBox1 1008,以及TextBox2 1010)。所述列表中的一项可以提供一个选项来声明所选择元素的其他实例。例如,在图10中,NewTextBox1006就是这样一种元素。选择NewTextBox 1006会导致声明TextBox变量的一个新的实例,如图11线1102所示的。在所示的例子中,“TextBox1”1014是由所述代码段的创建者为该元素指定的缺省值。在本发明的一个实施例中,自动附加一个数字到所述缺省值上以创建一个唯一的名字。如果声明了其他新的元素,则可以再次增加新实例的名字(例如产生唯一的标识符“TextBox12”)。
在本发明的一个实施例中,保持代码段802的分界线806。按下tab键,将使激活操作移动到下一个可能修改的标记字段。在已到达最后的标记字段之后,在本发明的一个实施例中再次按下tab键,将会使激活操作移动到所述代码段的第一个字段。在本发明的一个实施例中,撤销选项允许用户将所述代码段返回到其原始状态(即在选择重复使用代码段之后,该代码段被原始地插入到源代码中)。
附图9示出了根据本发明的一个方面可以显示的提示。当选择与所述提示相关的一个元素904时,显示提示902。在本发明的一个实施例中,通过在与一个提示相关的字段内悬浮光标,来显示提示。
在此所述的各种技术可以结合硬件或软件来实现,或者适当的两者的结合来实现。因此,本发明的方法和装置,或其某些方面或部分,都可以采取包含在有形介质中的程序代码(即指令)的形式,例如软盘、CD-ROMs、硬盘驱动器、或其他任何机器可读的存储介质,其中,当程序代码装载到机器中并由机器例如计算机执行时,该机器成为用于实施本发明的装置。在可编程计算机上执行程序代码时,通常计算设备将包括处理器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件),至少一个输入设备,以及至少一个输出设备。可以使用本发明特定域的编程模型,例如通过使用数据处理API等创建和/或执行的一个或多个程序,最好用高级程序或面向对象的编程语言实现,从而与计算机系统进行通信。但是,如果需要的话,所述程序也可以以汇编或机器语言实现。在任何情况下,所述语言都可以为编译或解释语言,并且可与硬件实现结合。
虽然已结合各附图的优选实施例对本发明进行了说明,但是可以理解其它类似的实施例也是能够使用,或者可以对所描述的实施例进行修改或添加,以执行与本发明相同的功能而不背离本发明。因此,本发明并不应当局限于任何单个实施例,而是在宽度和范围上根据所附的权利要求进行解释。

Claims (31)

1.一种创建可重复使用的代码段的源的方法,包括:
将代码段转换为包括所述代码段和与该代码段关联的信息的至少一个文件;以及
将所述至少一个文件存储在代码段库中,其中所述代码段库可以用作包含在一个或多个源程序中的可重复使用的代码段的源。
2.如权利要求1所述的方法,其中所述至少一个文件为XML文件。
3.如权利要求1所述的方法,其中转换所述代码段包括将所述代码段包含在所述至少一个文件中。
4.如权利要求1所述的方法,其中转换所述代码段包括将作者包含在所述至少一个文件中。
5.如权利要求1所述的方法,其中转换所述代码段包括将写入所述代码段的编程语言包含在所述至少一个文件中。
6.如权利要求1所述的方法,其中转换所述代码段包括将与所选择的代码元素相关的提示包含在所述至少一个文件中。
7.如权利要求1所述的方法,其中转换所述代码段包括将与所选择的代码元素相关的注释包含在所述至少一个文件中。
8.如权利要求1所述的方法,其中转换所述代码段包括将运行所述代码段所需的至少一个引用存储到所述至少一个文件中。
9.如权利要求1所述的方法,其中转换所述代码段包括将期望在其中运行所述代码段的执行环境的版本包含在所述至少一个文件中。
10.如权利要求2所述的方法,进一步包括解析所述XML文件,以确定与存储在所述代码段库中选择在一个源程序中重复使用的至少一个文件相关的信息。
11.如权利要求10所述的方法,进一步包括响应所述至少一个文件在其中编码的编程语言与源程序的编码语言匹配的确定,将所述至少一个文件的至少一部分插入到所述源程序中。
12.如权利要求1所述的方法,其中所述插入到源程序中的至少一部分包括一代码部分。
13.如权利要求1所述的方法,其中所述插入到源程序中的至少一部分包括一个引用。
14.如权利要求13所述的方法,其中所述引用包括一个对象的声明。
15.如权利要求13所述的方法,其中所述引用包括一个元素,该元素通过与所述代码段相关的元素的外部说明来确定。
16.如权利要求13所述的方法,其中所述引用包括一个文字的声明。
17.如权利要求13所述的方法,其中所述引用包括一个控件的声明。
18.如权利要求1所述的方法,其中所述插入到源程序的至少一部分包括执行所述代码段所需的元素。
19.如权利要求18所述的方法,其中所述元素包括执行所述代码段所需的库。
20.如权利要求13所述的方法,其中如果所述至少一部分还未存在于所述源程序中,则仅将所述至少一部分插入到所述源程序中。
21.如权利要求1所述的方法,进一步包括通过对与所述元素相关的信息和所述至少一个文件中的代码进行比较,来确定在所述源程序中需要修改的代码段的元素。
22.如权利要求21所述的方法,其中在所述源程序中需要修改的至少一个元素区别于插入到所述源程序中的代码段的其它部分。
23.如权利要求22所述的方法,其中显示与所述代码段中区别的元素相关的提示。
24.如权利要求22所述的方法,其中所述至少一个具有焦点的元素通过围绕该元素的边界区分。
25.一种用于创建用于重复使用的代码段的系统,该系统包括代码段管理器,该代码段管理器将代码段和与该代码段关联的信息转换成用于存储在代码段库中的至少一个文件,其中所述代码段库可以用作包含在源程序中的可重复使用的代码段的源。
26.如权利要求25所述的系统,其中所述至少一个文件包括XML文件。
27.如权利要求26所述的系统,其中将所述代码段转换为XML文件包括识别与所述代码段相关的至少一类元信息,并将所述至少一类元信息存储在用指示所述元信息类型的指示符所标记的XML文件中。
28.如权利要求27所述的系统,其中所述元信息的类型包括代码。
29.如权利要求27所述的系统,其中所述元信息的类型包括引用。
30.如权利要求27所述的系统,其中所述元信息的类型包括用于输入的库,该库是执行所述代码段所需的。
31.一种计算机可读介质,包括计算机可读指令,用于:
将代码段转换为包括该代码段以及与该代码段相关的信息的至少一个文件;以及
将所述至少一个文件存储在代码段库中,其中所述代码段库可以用作包含在一个或多个源程序中的可重复使用的代码段的源。
CNB2004100639897A 2003-06-18 2004-06-18 用于创建、管理和使用代码段的系统和方法 Expired - Fee Related CN100354823C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/464,397 US7526753B2 (en) 2003-06-18 2003-06-18 System and method for creating, managing and using code segments
US10/464,397 2003-06-18

Publications (2)

Publication Number Publication Date
CN1573693A true CN1573693A (zh) 2005-02-02
CN100354823C CN100354823C (zh) 2007-12-12

Family

ID=33418155

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2004100639897A Expired - Fee Related CN100354823C (zh) 2003-06-18 2004-06-18 用于创建、管理和使用代码段的系统和方法

Country Status (5)

Country Link
US (1) US7526753B2 (zh)
EP (1) EP1489496B1 (zh)
JP (1) JP4619698B2 (zh)
KR (1) KR101098718B1 (zh)
CN (1) CN100354823C (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853205A (zh) * 2010-06-23 2010-10-06 山东中创软件商用中间件股份有限公司 一种监控程序运行的方法和装置
CN103001981A (zh) * 2011-09-10 2013-03-27 深圳市龙视传媒有限公司 一种调用能力服务的方法及系统
CN106951261A (zh) * 2017-03-27 2017-07-14 武汉斗鱼网络科技有限公司 数据管理方法及装置
CN110874216A (zh) * 2018-08-31 2020-03-10 广州虎牙信息科技有限公司 一种完备代码生成方法、装置、设备和存储介质
CN112230809A (zh) * 2019-07-15 2021-01-15 腾讯科技(深圳)有限公司 计算机程序代码的选取方法、装置及存储介质
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7328426B2 (en) 2003-08-13 2008-02-05 International Business Machines Corporation Editor with commands for automatically disabling and enabling program code portions
US8117593B1 (en) * 2004-06-10 2012-02-14 Siemens Industry, Inc. Method for highlighting selected tasks in a program code listing
US7661088B2 (en) * 2004-10-20 2010-02-09 Microsoft Corporation Systems and methods to efficiently and automatically effect population of custom controls onto a visual designer toolbox
WO2006043012A1 (en) * 2004-10-22 2006-04-27 New Technology/Enterprise Limited Data processing system and method
US8185868B1 (en) 2004-12-20 2012-05-22 The Mathworks, Inc. System and method for cell-based code editing and publishing
KR100673313B1 (ko) * 2004-12-30 2007-01-24 재단법인서울대학교산학협력재단 코드조각 번호 매김을 이용한 프로그램 간의 코드조각결합방법
US7574675B1 (en) * 2005-06-14 2009-08-11 Adobe Systems Incorporated Methods and apparatus to display content selections
US7698695B2 (en) * 2005-08-31 2010-04-13 International Business Machines Corporation Search technique for design patterns in Java source code
US8392872B2 (en) * 2005-11-19 2013-03-05 International Business Machines Corporation Pseudo translation within integrated development environment
US7962894B2 (en) * 2005-11-23 2011-06-14 Oracle International Corporation System and method for identifying non-supported features in a multiple code editor environment
US8141038B2 (en) * 2005-12-29 2012-03-20 International Business Machines Corporation Virtual RAS repository
US20070234316A1 (en) * 2006-03-07 2007-10-04 Sap Ag Methods and systems for development of software for complex systems
US20070250810A1 (en) * 2006-04-20 2007-10-25 Tittizer Abigail A Systems and methods for managing data associated with computer code
US8510647B2 (en) * 2006-04-29 2013-08-13 Jennifer Madden Computer programming and markup language source code visualization tool
US9009656B2 (en) * 2006-05-02 2015-04-14 International Business Machines Corporation Source code analysis archival adapter for structured data mining
US9128727B2 (en) * 2006-08-09 2015-09-08 Microsoft Technology Licensing, Llc Generation of managed assemblies for networks
TW200821926A (en) * 2006-11-07 2008-05-16 Sunplus Technology Co Ltd Method and system for function reference of development tool
US8762956B1 (en) 2007-01-31 2014-06-24 The Mathworks, Inc. Generating a report document from code
US8312418B2 (en) * 2007-12-10 2012-11-13 International Business Machines Corporation Visualization of implicit relationships in a trace query for model driven development
KR100994070B1 (ko) * 2008-03-19 2010-11-11 (주)케투씨소프트 예약된 컴포넌트 컨테이너 기반 소프트웨어 개발 방법 및장치
US20100235275A1 (en) * 2009-03-06 2010-09-16 Carl Ansley Card Processing
US9189244B2 (en) * 2009-08-18 2015-11-17 Adobe Systems Incorporated Methods and systems for managing data service specifications
US20110265058A1 (en) * 2010-04-26 2011-10-27 Microsoft Corporation Embeddable project data
US9244659B2 (en) 2010-04-26 2016-01-26 International Business Machines Corporation Extensible meta model for capturing solution patterns
US8370354B2 (en) 2010-06-30 2013-02-05 International Business Machines Corporation Acceleration of legacy to service oriented (L2SOA) architecture renovations
US20120159434A1 (en) * 2010-12-20 2012-06-21 Microsoft Corporation Code clone notification and architectural change visualization
CN102955695A (zh) * 2011-08-31 2013-03-06 鸿富锦精密工业(深圳)有限公司 三次元量测程序色彩管理系统及方法
US9189208B2 (en) * 2013-03-14 2015-11-17 Microsoft Technology Licensing, Llc Inline display and preview of related information for elements in a document
CA2920908A1 (en) * 2013-08-15 2015-02-19 Immun.io Inc. Method and system to dynamically alter application functionality at runtime in a constrained and secure manner
US9195440B2 (en) * 2013-11-26 2015-11-24 International Business Machines Corporation Intelligent data source selection in application development
US9141348B1 (en) * 2014-03-28 2015-09-22 The Mathworks, Inc. Using program code to generate help information, and using help information to generate program code
US20150301806A1 (en) * 2014-04-16 2015-10-22 The Mathworks, Inc. Tentative program code in an editor
CN106462399B (zh) * 2014-06-30 2019-10-18 微软技术许可有限责任公司 代码推荐
US9747082B2 (en) 2014-12-18 2017-08-29 International Business Machines Corporation Optimizing program performance with assertion management
US9823904B2 (en) 2014-12-18 2017-11-21 International Business Machines Corporation Managed assertions in an integrated development environment
US9703552B2 (en) * 2014-12-18 2017-07-11 International Business Machines Corporation Assertions based on recently changed code
US9678855B2 (en) 2014-12-30 2017-06-13 International Business Machines Corporation Managing assertions while compiling and debugging source code
US9798539B2 (en) * 2015-07-31 2017-10-24 International Business Machines Corporation Comment linkage and display across the review cycle of an artifact
US9501274B1 (en) * 2016-01-29 2016-11-22 International Business Machines Corporation Qualitative feedback correlator
CN107239264B (zh) * 2016-03-28 2020-06-23 阿里巴巴集团控股有限公司 代码提示信息的生成方法及装置
CN106484427A (zh) * 2016-10-21 2017-03-08 福建中金在线信息科技有限公司 一种代码文件的生成方法及装置
CN106648332A (zh) * 2016-11-16 2017-05-10 惠州Tcl移动通信有限公司 一种智能终端快速选择的方法和系统
US11250018B2 (en) * 2019-06-25 2022-02-15 Periscope Data Inc. Method for automated query language expansion and indexing
US11416245B2 (en) * 2019-12-04 2022-08-16 At&T Intellectual Property I, L.P. System and method for syntax comparison and analysis of software code
US11875137B2 (en) * 2020-12-07 2024-01-16 Texas Instruments Incorporated Method and apparatus for adding new inline prompts to a program development environment

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5920868A (en) 1996-07-03 1999-07-06 Sun Microsystems, Inc. Cataloging apparatus for facilitating the re-use of distributed objects in a distributed object system
US6427230B1 (en) * 1998-11-09 2002-07-30 Unisys Corporation System and method for defining and managing reusable groups software constructs within an object management system
US6427228B1 (en) * 1999-05-12 2002-07-30 International Business Machines Corporation Combining a meta data file and java source code to dynamically create java classes and javabeans
US6981212B1 (en) 1999-09-30 2005-12-27 International Business Machines Corporation Extensible markup language (XML) server pages having custom document object model (DOM) tags
US6714978B1 (en) * 1999-12-04 2004-03-30 Worldcom, Inc. Method and system for processing records in a communications network
US20020049788A1 (en) * 2000-01-14 2002-04-25 Lipkin Daniel S. Method and apparatus for a web content platform
US6675370B1 (en) * 2000-02-02 2004-01-06 International Business Machines Corporation System and method for imbedding hyperlinked language grammar notation in a “literate” programming environment
US6941510B1 (en) * 2000-06-06 2005-09-06 Groove Networks, Inc. Method and apparatus for efficient management of XML documents
US20030070159A1 (en) * 2000-08-04 2003-04-10 Intrinsic Graphics, Inc. Object decription language
US7275079B2 (en) * 2000-08-08 2007-09-25 International Business Machines Corporation Common application metamodel including C/C++ metamodel
US20020049790A1 (en) * 2000-08-08 2002-04-25 Ricker Jeffrey M Data interchange format transformation method and data dictionary used therefor
US6957416B2 (en) * 2001-01-31 2005-10-18 Hewlett-Packard Development Company, L.P. Document builder classes and methods
US7149734B2 (en) 2001-07-06 2006-12-12 Logic Library, Inc. Managing reusable software assets
US20030056195A1 (en) * 2001-07-19 2003-03-20 Hunt Joseph R. Code generator
US7069547B2 (en) * 2001-10-30 2006-06-27 International Business Machines Corporation Method, system, and program for utilizing impact analysis metadata of program statements in a development environment
US7058886B1 (en) * 2001-12-18 2006-06-06 Open Invention Network Method and apparatus for declarative error handling and presentation
US6920474B2 (en) * 2002-03-25 2005-07-19 Data Quality Solutions, Inc. Method and system for enterprise business process management
US7275207B2 (en) * 2002-03-28 2007-09-25 International Business Machines Corporation System and method in an electronic spreadsheet for displaying and/or hiding range of cells
US20030221184A1 (en) * 2002-05-22 2003-11-27 Gunjal Atul Narayan Template-based application development system
US20040187090A1 (en) * 2003-03-21 2004-09-23 Meacham Randal P. Method and system for creating interactive software

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101853205A (zh) * 2010-06-23 2010-10-06 山东中创软件商用中间件股份有限公司 一种监控程序运行的方法和装置
CN103001981A (zh) * 2011-09-10 2013-03-27 深圳市龙视传媒有限公司 一种调用能力服务的方法及系统
CN106951261A (zh) * 2017-03-27 2017-07-14 武汉斗鱼网络科技有限公司 数据管理方法及装置
CN110874216A (zh) * 2018-08-31 2020-03-10 广州虎牙信息科技有限公司 一种完备代码生成方法、装置、设备和存储介质
CN110874216B (zh) * 2018-08-31 2023-07-28 广州虎牙信息科技有限公司 一种完备代码生成方法、装置、设备和存储介质
CN112230809A (zh) * 2019-07-15 2021-01-15 腾讯科技(深圳)有限公司 计算机程序代码的选取方法、装置及存储介质
CN112230809B (zh) * 2019-07-15 2023-08-18 腾讯科技(深圳)有限公司 计算机程序代码的选取方法、装置及存储介质
CN112364580A (zh) * 2020-11-13 2021-02-12 上海兆芯集成电路有限公司 自动在寄存器传输级设计文件中插入特定代码的方法及装置

Also Published As

Publication number Publication date
EP1489496B1 (en) 2017-04-19
US7526753B2 (en) 2009-04-28
KR101098718B1 (ko) 2011-12-23
US20040261059A1 (en) 2004-12-23
EP1489496A2 (en) 2004-12-22
JP4619698B2 (ja) 2011-01-26
KR20040111099A (ko) 2004-12-31
EP1489496A3 (en) 2007-09-05
JP2005011345A (ja) 2005-01-13
CN100354823C (zh) 2007-12-12

Similar Documents

Publication Publication Date Title
CN100354823C (zh) 用于创建、管理和使用代码段的系统和方法
US7281018B1 (en) Form template data source change
CN100559346C (zh) 用于实例化抽象类的系统和方法
US7424485B2 (en) Method and apparatus for generating user interfaces based upon automation with full flexibility
US7665073B2 (en) Compile time meta-object protocol systems and methods
AU2005246946B2 (en) Relationship modeling
CN108139891B (zh) 用于生成建议以纠正未定义标记错误的方法和系统
US20060101393A1 (en) System and Method for Building an Open Model Driven Architecture Pattern Based on Exemplars
US8056051B2 (en) Creating application content using an open model driven architecture
US7877680B2 (en) Auto-generation and auto-versioning of a multi-sourced dynamic document
US7363578B2 (en) Method and apparatus for mapping a data model to a user interface model
US7505991B2 (en) Semantic model development and deployment
US20090006987A1 (en) Visual design tools for portal content creation
CN1752972A (zh) 基于语义上标注的串的发现处理信息的方法、系统和装置
KR20040004619A (ko) 구식 소프트웨어 애플리케이션을 최신의 객체 지향시스템으로 전환하는 방법과 시스템
CN101030224A (zh) 用于构建跨越异构环境的统一查询的系统和方法
KR101597599B1 (ko) 소스 위치가 결여된 코드 세그먼트들을 가지는 소스 코드를 모델링하기 위한 방법
US7716656B2 (en) Nullable and late binding
CN100454244C (zh) 在标记中用于定义和使用子类说明的系统和方法
US7657869B2 (en) Integration of external tools into an existing design environment
US20060101387A1 (en) An Open Model Driven Architecture Application Implementation Service
Schröpfer et al. A Generic Projectional Editor for EMF Models.
US20060101385A1 (en) Method and System for Enabling Roundtrip Code Protection in an Application Generator
Zosimov et al. Development of domain-specific language for data processing on the internet
Jordão et al. TypeTaxonScript: sugarifying and enhancing data structures in biological systematics and biodiversity research

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150506

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150506

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20071212

Termination date: 20200618