`
canonical
  • 浏览: 367033 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[导入]代码复用(reuse

阅读更多

    代码复用包括两个方面:概念复用和实现复用。这两者在C++的虚拟函数设计中是合二为一的,结果概念上的模糊往往造成继承机制的滥用。为了复用我们往往在 基类中塞入过多的职责,并在程序中制造了过多的层次。java的interface是纯粹的概念复用机制,实现方面的复用我们一般通过Impls类或者 Utils类来进行,即将代码片断写为静态函数。一般应该避免在类中写特别多的帮助性成员函数,因为成员函数隐含的通过成员变量相关着,比静态函数要更加 难以控制。
    类是一个整体的概念,整体概念失效了,类也就不存在了。从这一点上来说,它未必是比静态函数更加稳定。概念与实现是两个不同层面的东西。实际上它们一般也 是多对多的关系。同一个概念可能换用多种不同的实现,而同一段功能代码也可能在多个类中使用。
    代码复用的意义不仅仅在于减少工作量。实际上复用是对软件的一种真正的检验,而测试仅仅是一种模拟的检验而已。每一次复用都是对代码的一次拷问。在不断使 用中感受到不同使用环境中的各种压力,才能实现概念的不断精化并确保实现的正确性。

分享到:
评论
3 楼 uda1341 2009-03-07  
被复用的代码段A+事后修正---->新代码段B

这里表达的实际上是一种继承的概念,因此,类似AOP的方式极大扩展了继承的使用范围,同时避免了僵硬的继承概念所带来的麻烦。

在这种继承方式中,其实并没有子类,父类的截然区分,也不需要事先准备好要被继承的方式。
2 楼 canonical 2009-03-07  
AOP技术的实质就是对代码结构的一种事后的修正技术. 它并不要求事前准备好额外的语法.
1 楼 uda1341 2009-03-06  
其实,语言中的宏,是最接近理想的复用方式了。

写下一段代码,把某些代码固定下来,让另一些代码可以替换,实在是再理想不过的了。只不过由于宏机制没有理解代码的能力,才让文本替换变得无法控制,让复杂的实现变得没有可能。

关于代码复用,提出了那么多的方式,但实际上,这些方式都需要我们在写一段可复用的代码是,就事先使用额外的语法,准备好复用的设计,这其实是没有必要的。

相关推荐

    react-Reuse通过复用React组件来创建新的组件

    React-Reuse库提供了一种机制,允许开发者高效地复用现有的React组件来构建新的、定制化的组件,从而提高开发效率,保持代码整洁,并降低维护成本。下面将详细探讨React-Reuse的工作原理、优势以及如何在实际项目中...

    labview_Hamburger-Menu-Reuse-

    在LabVIEW中,可以将这种组件封装成VI(Virtual Instrument),然后在其他项目中导入并调用,提高代码的复用性和开发效率。 7. **编程技巧**:实现汉堡菜单可能需要用到LabVIEW的一些高级特性,比如局部变量、全局...

    iOS游戏应用源代码——danielctull-DTGridView.zip

    DTGridView可能会采用一些策略来提高性能,如视图复用(cell reuse)和懒加载。 6. **动画与视觉效果**:游戏应用往往需要丰富的动画和视觉效果。DTGridView可能支持平滑的滚动动画,以及单元格的添加、删除和更新...

    Reuse-Methodology-Manual-V3.rar_VHDL/FPGA/Verilog_VHDL_

    1. Mentor和Synopsys设计工具的使用,包括如何导入和管理IP核,进行系统级集成。 2. VHDL和Verilog的复用设计原则,如模块划分、接口定义和封装技巧。 3. 验证策略,包括仿真、形式验证和硬件在环(HIL)测试。 4. ...

    angular 路由

    10. **路由复用策略(Route Reuse Strategy)** 控制路由组件的复用策略,比如在返回历史记录时决定是否重新创建组件。 11. **路由模块(Routing Modules)** 大型应用通常会将路由配置分散到多个路由模块中,便于...

    关于webpack的一些问题汇总

    7. **合成复用原则 (Composite Reuse Principle)** 建议使用组合/聚合而不是继承来实现复用。在webpack中,我们可以使用动态导入(dynamic import)或模块合并来组合多个模块,而不是通过继承关系。 8. **策略模式** ...

    swift-循环ScrollView支持自动滚动支持点击事件代理回调已处理NSTimer销毁处理AutoLayout适配

    这通常通过重用视图(view reuse)机制实现,类似于UITableView的Cell复用,可以有效减少内存消耗。 项目中提到的自动滚动功能,是通过NSTimer定时器来实现的。NSTimer可以按照设定的时间间隔触发事件,从而让...

    UGUI滑动列表优化项目源码

    - **复用机制**:滑动过程中,旧的元素可以被新的元素复用,减少对象创建和销毁的频率。 3. **OptimizeScrollListProject源码分析** 这个项目的源码可能包含了以下关键部分: - **ScrollCellPool**:一个管理...

    ObjectiveCTableView

    - Swift项目中引用Objective-C代码需遵循桥接头文件机制,导入必要的头文件,以便Swift能够访问Objective-C的类和方法。 总的来说,"ObjectiveCTableView"项目为Swift开发者提供了一个了解和学习Objective-C中...

    ReuseScrollView:可重用的scrollView

    1. 引入库:首先,你需要将 ReuseScrollView 的源代码或者通过 CocoaPods 等依赖管理工具导入到项目中。 2. 创建视图:设计你的视图类,并实现必要的接口,如 `UIView+Reuse` 中的方法,以便 ReuseScrollView 可以...

    modelica建模知识点V1.0

    **4.1.6 实例变型及其复用(Reuse by Modifier)** 可以通过修改器来改变实例的某些属性,从而实现模型的复用。 **4.1.7 内置类型(Built-in Classes)** Modelica内置了一系列预定义的类,如`Real`、`Integer`等...

Global site tag (gtag.js) - Google Analytics