*与约束
程序员文章站
2022-05-19 10:57:25
...
人皆向往*,但是凡事都应两看,有时约束并非坏事。特别是在软件开发来说,似乎约束远远比*更重要。
在java语言来说,它所带的约束远比C语言多得多:没法使用指针,无法直接对硬件设备作操作,一切都被约束在JVM上。但是,正是这些约束,使java脱离了指针越界的噩梦,脱离了硬件细节的泥沼,使它往更高层面发展,目前大量与各类商业业务逻辑相关的应用中,Java实现占的比例远远高于C的实现。也许有人会说这个约束和java的发展并没有直接的关联,所以出现这样状况不是必然的,只是机缘问题而已。
那么我们再看看我们常用的面向对象设计开发的思想,我相信大家都会同意,使用面向对象设计开发的思想需要遵循的约束会比随意编码的过程式编码多得多,但正是这种约束,使软件开发的可重用性得到了提高,正是这种约束,使软件能往更大的规模上发展。
同样,在我看来,OSGI也在软件发展的历程中将提供了同样的作用。相信刚接触OSGI的朋友都会觉得OSGI的门槛很高,因为特殊的类加载机制,使我们不得不遵循一些规则去设计和开发基于OSGI的应用系统,否则的话,我们就会很容易碰上诸如Class Not Found的问题,又由于OSGI的动态特性,bundle的不确定的加载顺序,我们也很容易会遇上服务引用为null的问题... ...。这些都给我们的开发带来了大量的约束,只有遵循这些约束,我们才能开发出正常可用的OSGI应用系统。
但当我们遵循了这些约束后,我们将会得到大量耦合松散、高度内聚的、可反复重用的软件模块。利用这些模块,我们可以快速组装并能应需变化的应用系统。这时,我们就可以看到我们在前期为约束付出的精力,在这一次次重用或重构中得到超额的回报。
现在,刚开始接触领域驱动设计,立即体会到领域驱动设计在某个角度来看,就是为OOD和OOP增加了合理的约束,只有我们很好地遵循这些约束,我们才能从领域驱动设计中获得设计能力和效率的提升。
在java语言来说,它所带的约束远比C语言多得多:没法使用指针,无法直接对硬件设备作操作,一切都被约束在JVM上。但是,正是这些约束,使java脱离了指针越界的噩梦,脱离了硬件细节的泥沼,使它往更高层面发展,目前大量与各类商业业务逻辑相关的应用中,Java实现占的比例远远高于C的实现。也许有人会说这个约束和java的发展并没有直接的关联,所以出现这样状况不是必然的,只是机缘问题而已。
那么我们再看看我们常用的面向对象设计开发的思想,我相信大家都会同意,使用面向对象设计开发的思想需要遵循的约束会比随意编码的过程式编码多得多,但正是这种约束,使软件开发的可重用性得到了提高,正是这种约束,使软件能往更大的规模上发展。
同样,在我看来,OSGI也在软件发展的历程中将提供了同样的作用。相信刚接触OSGI的朋友都会觉得OSGI的门槛很高,因为特殊的类加载机制,使我们不得不遵循一些规则去设计和开发基于OSGI的应用系统,否则的话,我们就会很容易碰上诸如Class Not Found的问题,又由于OSGI的动态特性,bundle的不确定的加载顺序,我们也很容易会遇上服务引用为null的问题... ...。这些都给我们的开发带来了大量的约束,只有遵循这些约束,我们才能开发出正常可用的OSGI应用系统。
但当我们遵循了这些约束后,我们将会得到大量耦合松散、高度内聚的、可反复重用的软件模块。利用这些模块,我们可以快速组装并能应需变化的应用系统。这时,我们就可以看到我们在前期为约束付出的精力,在这一次次重用或重构中得到超额的回报。
现在,刚开始接触领域驱动设计,立即体会到领域驱动设计在某个角度来看,就是为OOD和OOP增加了合理的约束,只有我们很好地遵循这些约束,我们才能从领域驱动设计中获得设计能力和效率的提升。