[linux]设计原则

  • ①标准化原则:所有的底层、用户层软件均遵循基本的标准约束,用户层的约束是只能使用系统调用和内核交互,底层,比如文件系统,则必须要实现规定的相关操作接口。(POSIX即可移植的操作系统,避免了代码的重复开发,有利于代码复用,比如一个用户态程序,即便迁移到另一个特殊版本的linux系统,由于新的内核也遵循系统调用规则,用户程序也只使用系统调用,因此程序可以在多个系统上复用),标准化主要是便于迁移和合作,提升软件开发的可能性。其实POSIX可以理解成本地的协议,网络上的传输必须有协议,不然对端计算机不知道如何去解析收到的数据内容,如果将内核和用户态理解成两个完全隔离的部分,那么这两者也需要有一个“协议”来通信,POSIX就起到了这个作用。其规定了两者通信的一系列允许的操作,一次系统调用可以理解为用户态收发一次消息。只要内核基于POSIX协议,不管是什么系统内核,都可以运行基于POSIX协议的用户态程序。
  • ②归一化原则:归一化主要目的化繁为简,电脑中有硬件、有驱动、有软件、还有内部的比如文件系统、进程等,其本质上都是以一定的数据结构存储在内存空间或者硬盘空间等位置,因此将逻辑结构、设备等都和普通的文件一样抽象是可行的,这样的好处是使用和理解起来更加的方便,从外观上看,这个系统也更加的统一,简洁,即便可能将设备、逻辑抽象成文件的逻辑本身会比较复杂。
  • ③功能最小化原则:①和②主要是内核中提供的一些对外特征(内核内部实现可能仍然是非常复杂的,只是对外提供的接口比较简单而已),这第三个特征则是内核和用户态程序都应该遵循的,即功能最小化,linux提倡一个程序只实现一个功能,单一化和简单化,但是尽可能的将这一个功能做好做精,做得满足绝大多数人的不同需求,比如grep只做搜索这就事情,但是支持诸如正则匹配等高级的功能。所以在linux中通常会看到茫茫多的小程序命令,每个命令其实都值得仔细的学习一下,比如top、sed等,自带了很多内置参数可供选择。然后,如果要实现复杂的功能,小程序之间通过管道进行传输|,这种组合在初期几乎可以实现所有的功能而无需自己再去编写专门的程序(即编写shell,无需写功能代码了),这种方式的好处主要是高可能性(可以随时替换,比较灵活),同时每个小功能都可以尽可能多的复用,这个是linux系统关于用户态程序所倡导的理念,当然,当开发一些复杂程序的时候,我们往往还是更加愿意自己去编写代码,而不是直接调用自带的逻辑功能,但是这个原则,即模块化和功能最小化,以及尽可能的做到精致、极致这个是可以参考的理念。
  • 总结一下的话,软件开发中主要的注意点:模块化(划分细致)、功能不耦合,模块内部高内聚,尽全力减少不同模块之间的依赖,降低到最低的程度、模块之间定义协议(采用公共的接口,便于后续的替换),当然,如果仅仅开发一个简单的程序,为了遵循上面这些可能会增加成倍的代码量,但是从长远角度,上面这些“额外”工作还是更加提倡的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值