📓集成化所有的提示信息

将所有的提示信息集中在hint模块里面。

当前进度

.---+- include -+- tools -+- color.h
    |                     +- hint.h <---
    | 
    +-   src   -+- tools -+- color.c
                |         +- hint.c <---
                |
                +- main.c

hint模块

在这个部分我们需要思考的是整个项目中到底有哪些提示信息,我总结的大概有如下几种:

  • 欢迎信息

    虽然只用了一次,不过我还是放在了这个模块里。

  • 正在载入

  • 操作成功

  • 操作失败

  • 非法输入

  • 无效实现

    这个信息在最终的产品中是不应该出现的,它只在开发的过程中,如果某个部分的功能暂时实现不了,以后才能实现。但是为了搭建模块的需要,又不得不先写点什么的话,可以放置一个invalidMessage()作为权宜之计。

所以hint.h的内容如下:

在实现的过程中,可以给不同的信息加上不同的颜色(比如说操作成功加上绿色,操作失败加上红色,加载中加上蓝色之类的),还可以用字符画的方式实现某些信息,以使得界面更加美观。

生成字符画推荐一个网站: http://patorjk.com/software/taag/#p=display&f=Big&t=Whale%20Market%0A

我的实现如下:

我们知道,栈区的空间是很小的(相对来讲),所以较大的数据(比如说大字符串),我们会选择放在静态区或者动态区。

并且这些数据(字符串)从程序开始到程序结束都是一直需要的,所以我通过全局常量的方式将他们放在了静态区。

将数据放置在静态区的方法有两种:

  • 全局变量/全局常量

  • static关键字限制的局部变量

此外,这些字符串只在本模块里面发挥作用,外部模块只需要调用本模块头文件所提供的接口message函数就足够了,所以我并没有在头文件里面声明这些常量。

同时,我还使用了static关键字将他们的文件作用域限制在了本模块内。这样一来,哪怕外部模块中声明了这些字符串常量,外部模块也不能实用此处的定义,只能使用别处的定义(如果别处有的话,否则编译器会报错)。

上述设计其实目的只有一个,加强模块的抽象程度与封装程度。外部模块除非调用本模块对外声明好的接口这一种途径以外,不应当有任何其他途径来实用本模块内定义的内容。

这样设计出来的模块才是风格良好且封装完全的,同时也会更加安全,不容易出错。

最后更新于

这有帮助吗?