谈谈软件设计的几个矛盾

2025-04-23 21:32:21

1、拆与不拆没有对错Windows是微内核架构,Linux是单内核架构。微内核意味么内核很小,你可以通夸臾蓠鬏过很多个模块去补充它,内核与模块是解耦的。Linux是单内核,就表示所有内核功能会在编译时就确定。可能大家都觉得微内核更好,很多时候它确实更好,但是Linus有个经典的论断:“你不需要管理各个模块,但是你需要处理模块之间的依赖,这个可能比模块本身更复杂”。因为事物本身就是互相联系的,你觉得他们不存在耦合,只是当前使用场景用不到而已。

2、系统内部实现对外部透明,保留拆或者不拆的选择权。项目自身的复杂度,完全可以靠内部实现解决,对外保持约定好的API,这样对于以后内部的重构,会简单得多。相反,如果暴露了内部实现,那么修改就很困难了。

3、对于项目拆分,如果没有充足的理由支持拆分,就不要拆。不成熟的拆分,最常见的结果是,随着需求的变化,你不得不打破这种解耦关系,这样反而会带来更多的问题。建议是需求稳定之后,再考虑拆分。

4、在系统内部多多进行代码级别的拆分,管理复杂度。相比项目的拆分,函数和类级别的拆分成本非常低,值得多用。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢