1894_透明性以及可显性

全部学习汇总: g_unix: UNIX系统学习笔记 (gitee.com)

1894_透明性以及可显性_代码设计

1894_透明性以及可显性_代码设计_02

这是一个透明性以及可显性的基本描述。

1894_透明性以及可显性_代码设计_03

这个是对透明性以及可显性的功能作用的一个基本描述。

做一个简单的小结,从一个软件工程师的角度来看看透明性以及可显性的概念和作用。那么,透明性其实是我们是否能够看得到或者了解得到软件设计的一些想法和方案;而可显性则是软件本身或者附加的文件信息是否能够给出软件行为的一些解释或者提示。

关于透明性,在软件设计上一般考虑的点有很多方面。尤其是,当我们考虑这个需要在unix这样的大系统环境上存在的时候。然而,如果拿来主义,想把这些用在嵌入式的领域中有什么值得参考的呢?我自己总结了几点如下:

  1. 模块化到位,接口清晰且正交;
  2. 接口的包装调用少,尽量减少层层调用;按照unix的哲学,当这个数目超过4的时候可能就得当心了。
  3. 尽量不用存在过多的抽象层。我觉得这个很重要,但是对于水平一般的人来说或许又不重要。因为很多人的软件设计我称之为是漫游式的,很难看得出来层级的关系。
  4. 程序和数据进行良好的分离,且有着明确的处理关系。

1894_透明性以及可显性_代码设计_04

如果是从软件底层调试的角度来说,嵌入式很多内容其实是无从隐藏的。但是,从这里的说明我们还是可以得到一些软件实现上的借鉴的。那就是在软件中增加一部分必要的检查并且提供调试提示信息的开启方法。其实,现在比较流行的汽车电子的软件开发架构AUTOSAR中是有一个DET的功能的,这个就是非常好的一个设计体现。

软件设计的时候要从可维护的角度做充分的思考。写到这里,我想到了SICP中关于软件代码设计的一个观点。“软件代码设计出来的主要目的应该是为了给程序员阅读查看的,偶尔才会需要计算机运行一下。”如果按照这样的观点或者原则设计出来的代码,或许在可读性以及可维护性上会有非常好的表现。