“抽象”的力量

本文深入探讨了抽象在软件开发中的重要性,从EJB的抽象使用到需求分析过程中的抽象应用,强调了抽象如何实现平台无关性、代码解耦以及接近完美吻合的软件系统。通过减少不必要的细节,揭示软件开发中的本质,实现更高的灵活性、可扩展性和可维护性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 EJB使用抽象达到应用程序的平台无关性。甚至部分的时间无关性。

抽象是设计以及编写应用程序时的重中之重。

抽象意味着抽除一切不相关的或不必要的东西,只留下最后的精华部分。因为只有这些精华,才是我们真正想要的东西。

比如,EJB从接口规范转向注解,就是一种抽象。我们可能认为接口已经够抽象了。然而其仍然存在不抽象的部分:接口。对于两个不同的代码片段来说,接口可能已经足够抽象。但这是站在代码的角度想问题。当站在程序员与规范的立场想问题时,接口却仍然需要我去对代码实施一定的限制。这些限制,并不是我真正想要的东西。只是为了我想要的东西,不得不完成的一些事情。它是枝繁末节。它不是本。本是什么?本存在于语义中。一切语义以外的东西,都不是本。注解当然是语义以外的东西,但是至少它没有对代码形成任何实质上的影响。所以可以被近似看成是纯语义的东西。所以它才是EJB的一个伟大进步。

从这个意义上讲,接口,在一定的语境中,比如只讨论编码而不涉及标准或规范等更高层语义的时候,它才是程序的本。因此,一切都应该从接口开始。如果我要写任何程序,我都会从接口开始。也就是说,在任何时候,我都会尝试从“说话”开始编写一段程序。并且,在进行任何真正的实现以前,我会尝试先“说”完整个系统。当我发现整个故事没有任何矛盾的时候,我才会真正开始去实现这个故事。这就如写文章。我会先在我脑海里构建整个故事,当我发现整个故事前后通顺的时候,我才会动笔。相反的,故事的读者在读完以后,也是通过在脑海中的概念来真正理解这个故事的。因为真正的故事,从头到尾都只发生在一个地方,那就是人的大脑。对应到编程中,就是真正的“故事”从头到尾也都只发生在一个地方,那个地方就是接口。

抽象的目的在于还本复原。它的一切好处也来自于其还本复原的能力。

如在需求分析中,很多人总是逼使用户将概念细化,细化,再细化。理由是用户说的东西太不具体,他们没有办法实现。因为软件是具体的。软件只能具体。这是真的吗?不是!首先,软件本身就是抽象的。不然,请问,软件在哪里?总不能指着内存或硬盘说软件在那里吧。如果软件在那里,那么硬件又在哪里?。。。并且,这种逼迫用户将其观念具体化的现象,为软件开发企业带来的却非但不是BENEFIT,反而是一种非常严重的LOSS。

为什么这么说?

因为具体化的后果就是,软件的灵活性不够。开发周期长,可扩展性低,升级成本高。更严重的是,最终产品不能MEET用户的需求。因为真正的用户需求在最一开始的地方就被开发方的“具体化”的需求给曲解掉了。到最后用户当然也就很难承认一个被曲掉的东西。

用户脑海里,真实世界或世界(什么是真实?什么是世界?世界只是一个词。是人类的一种理解。而理解又是一种行为。而行为其本身又是历史。一切又都只是历史。所以其实所谓世界,只是一个历史。。。这里有点偏题,但是哲学是真的很重要)有一个抽象的系统。我为其开发的系统仍然需要有一个抽象的系统。这个系统,应该尽可能与用户的系统相吻合。其吻合程度越高,系统的灵活性,可扩展性,可维护性,可理解性,可操作性,可用性,可靠性,以及生命力等等,才会以及才可能,更强。

总之,EJB通过抽象实现了应用程序的平台无关性。接口通过抽象实现了代码之间的解耦。需求分析通过抽象可以实现几近完美吻合的软件系统。

抽象的原则是:

少一点,少一点,再少一点。。。直到什么都没有。。。。

抽象是一个永远都无法达到的目标。它是一个理想。它是不可能完成的。但又是必不可少的。我不可能将事物剥离得什么都不剩。但是我需要一直剥下去,我也会一直剥下去。

抽象的力量在于,它是我要的东西。它也只是我要的东西。后面一句话才真正道出了抽象的力量。

 

 

转载于:https://my.oschina.net/digerl/blog/29735

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值