低层或高层,孰轻孰重?

本文探讨了编程过程中从关注代码到重视设计、需求分析再到测试驱动的转变。指出每个阶段都有其重要性,强调了全面理解编程各方面的必要性。

曾经以为,代码是最重要的,因为程序最终是由代码组成的。那些鬼斧神工的经典代码,令人神往不已。
直到开始写软件了,才知道软件是设计出来的。设计是核心,架构师是“师”,程序员只是代码工人罢了。
后来接触软件工程了,突然发现需求才是根本。有需求才有项目,顾客就是上帝。于是需求分析师成了项目总指挥。
再后来流行敏捷编程了,如何保质保量又快速?测试驱动吧!测试是关键,测试凌驾于编码、设计、需求之上,成了真正的重心。
最后,茫然混沌中,意外接触到《Code Complete》,再度回到代码中心论上;只觉过去的日子都活在狗身上了,往事不堪回首啊!

其实,这个世界是复杂的,任何一个局部都是有意义的,都是整体的重要组成,都是不能忽视的。然而,人的认识只能从局部开始,再慢慢扩展到整体上。这样,就会有先入为主,就会有矫枉过正,就会有过犹不及。所以,导师要说“否定之否定,螺旋式上升”,圣人有言“致中和,天地位焉,万物育焉”。

对编程而言,低层的技术细节是一个局部,高层的统领全局也只是一个局部(因为这个“全局”不是编程的全部,不过是项目的总体性的东西,如架构模型、总体设计、高层设计等等。这里的“全局”和“局部”是针对不同范畴而言的)。在某些时候,我们需要关注一个局部,暂时忽略其他部分,以深入研究和掌握它。但是,最终我们需要知道:无论低层还是高层都同样重要,最好的方法是“执其两端,用其中”。

### 回答1: 这是一条常见的软件设计原则,称为“依赖倒置原则”(Dependency Inversion Principle)。它的含义是,高层模块不应该依赖低层模块,二者都应该依赖于抽象。换句话说,抽象不应该依赖于细节,细节应该依赖于抽象。 这个原则的目的是为了使得软件系统更加灵活扩展。如果高层模块直接依赖于低层模块,那么当低层模块发生变化时,高层模块也需要跟着变化,这会导致代码的耦合度很高,难以维护扩展。而如果高层模块低层模块都依赖于抽象,那么低层模块的变化不会影响高层模块,只需要修改抽象即可。 因此,当我们设计软件系统时,应该尽量遵循依赖倒置原则,将高层模块低层模块之间的依赖关系通过抽象来解耦,这样可以使得系统更加灵活、可扩展易于维护。 ### 回答2: 在软件开发中,低层的包应该尽量避免依赖高层的包。这是因为低层的包通常负责提供一些基础的、通用的功能,而高层的包则构建在低层的包之上,实现更复杂的功能。 首先,低层的包应该是独立的,不应对高层的包有任何依赖。这样做可以提高低层包的可重用性可维护性。如果低层的包依赖高层的包,那么当高层的包发生变化时,低层的包可能会受到影响,需要进行修改适应。这样一来,低层包的稳定性就会降低,而高层包的变化也会波及到其他依赖低层包的模块。 其次,低层的包应该尽量保持简单稳定。高层的包可能会涉及到一些复杂的业务逻辑,而低层的包应该是基础的、通用的,不应受到高层复杂逻辑的影响。通过降低低层包的复杂性,可以提高其易用性可靠性,减少错误故障的发生概率。 最后,低层的包依赖高层的包可能会造成循环依赖的问题。这种情况下,两个包会互相引用对方,导致编译构建的困难。循环依赖还可能导致代码质量下降,可读性可维护性降低。 总的来说,低层的包不应该依赖高层的包,这样可以提高软件的可维护性、可重用性稳定性。低层高层应该遵循依赖倒置原则,高层依赖低层,而低层不应该依赖高层,这样可以更好地组织管理软件代码。 ### 回答3: 低层的包不应依赖高层的包的原因有几个。首先,低层的包是构建整个系统的基础,它应该是稳定可靠的。如果低层的包依赖于高层的包,那么任何高层包的修改错误都可能影响到低层包的功能稳定性,这可能导致整个系统的崩溃异常。因此,低层的包应该尽可能地与其他包解耦,以保持其独立性稳定性。 其次,低层的包不应该依赖高层的包是为了遵循良好的软件设计原则模块化的思想。模块化使得各个包可以独立开发、测试维护。如果低层的包依赖高层的包,那么它就不能被独立地测试使用。这不仅会增加开发调试的复杂性,还会限制低层包在其他系统中的可复用性,降低系统的可扩展性。 最后,低层的包不应依赖高层的包是为了提高代码的可读性可维护性。高层的包往往包含了更多的业务逻辑复杂的实现细节,而低层的包应该更加专注于底层功能的实现提供简洁的接口。通过将包的依赖倒置,可以使代码更易于理解修改,也能够更好地遵循单一职责原则,提高代码的可维护性可重用性。 综上所述,低层的包不应依赖高层的包是为了保持包的独立性稳定性、遵循良好的软件设计原则模块化思想、提高代码的可读性可维护性。这样才能构建出高质量、可靠扩展软件系统。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值