设计自己的库

*如果你的工作经常要用到一些特殊的工具,你可以设计自己的库

*一个库应该有一个主题。一个库中的函数都应该是处理同一类问题。如标准库iostream包含输入输出功能,cmath包含数学运算函数。我们自己设计的库也要有一个主题。

*设计一个库还要考虑到它的通用性。库中的功能应来源于某一应用,但不局限于该应用,而且要高于该应用。在某一应用程序中提取库内容时应尽量考虑到兼容更多的应用,使其他应用程序也能共享这个库。

库的设计和实现

*设计库的接口:

-库的用户必须了解的内容,包括库中函数的原型、这些函数用到的符号常量和自定义类型

-接口表现为一个头文件

*设计库中的函数的实现:表现为一个源文件

*库的这种实现方法称为信息隐藏

程序设计的复杂性

描述炮出一杯茶需要哪些步骤

*烧水

*把茶叶放到茶壶里

*水烧开后倒入茶壶

*等待5分钟

*把茶倒进杯子

*加牛奶

*喝

开始问这样的问题(这很重要!)

*烧水?

*水哪来的?

*热水壶在哪里?

*你怎么把水倒进热水壶?

*你怎么知道热水壶壶里要倒多少水?

*如果没有水/热水壶/电怎么办呢?

*假如加水传感器失效怎么办?

*假如煮水传感器失效怎么办?

*茶叶放到茶壶里?

*茶壶在哪里,如果没有茶壶怎么办?烧水之前我们应该考虑到这些问题吗?

*茶叶在哪里,要用哪一种茶叶?我们是否应该先问清楚,或许如果没有对应的茶叶,我们甚至都不应该开始泡茶?

*关于加水和传感器也可以有类似的问题要问

*倒开水?

*你确定水已经开了么?你怎么能确保“倒水”的机器从热水壶那收到“烧水完成”的信号呢?

*你如何确保倒水的机器知道热水壶在哪里?

*如果热水壶在倒水的过程翻了怎么办呢?

时间: 2024-10-13 05:13:11

设计自己的库的相关文章

如何设计一个自动布局库:以SDAutoLayout为例

前言: SDAutoLayout 在发布之后受到了众多iOS开发者的青睐和支持,不到半年时间内在GitHub上已经获得2000+star,同时被 众多公司和个人开发者 作为开发首选自动布局库.现在,以SDAutoLayout为例简单介绍一下如何设计一个自动布局库. 原文  http://www.cocoachina.com/ios/20160405/15854.html 主题 iOS开发 前言: SDAutoLayout 在发布之后受到了众多iOS开发者的青睐和支持,不到半年时间内在GitHub

WeU专为微信移动 Web应用设计的 UI 库。

WeUI 是由微信官方设计团队专为微信移动 Web 应用设计的 UI 库. WeUI 是一套同微信原生视觉体验一致的基础样式库,为微信 Web 开发量身设计,可以令用户的使用感知更加统一.包含button.cell.dialog.toast.article.icon等各式元素. 使用 方法一: 使用bower进行安装 ? 1 bower install --save weui 方法二: 使用npm进行安装 ? 1 npm install --save weui 开发 ? 1 2 3 4 5 gi

WeUI首页、文档和下载 - 专为微信设计的 UI 库 - 开源中国社区

Download Bitnami Review Board Stack click here WeUI首页.文档和下载 - 专为微信设计的 UI 库 - 开源中国社区

Mysql高手系列 - 第27篇:mysql如何确保数据不丢失的?我们借鉴这种设计思想实现热点账户高并发设计及跨库转账问题

Mysql系列的目标是:通过这个系列从入门到全面掌握一个高级开发所需要的全部技能. 欢迎大家加我微信itsoku一起交流java.算法.数据库相关技术. 这是Mysql系列第27篇. 本篇文章我们先来看一下mysql是如何确保数据不丢失的,通过本文我们可以了解mysql内部确保数据不丢失的原理,学习里面优秀的设计要点,然后我们再借鉴这些优秀的设计要点进行实践应用,加深理解. 预备知识 mysql内部是使用b+树的结构将数据存储在磁盘中,b+树中节点对应mysql中的页,mysql和磁盘交互的最小

第6课-函数库设计

1.Linux下的应用程序所需要的外部函数可以由函数可和系统调用提供.2.函数库是处于用户态的,由工作人员编写的函数的集合,而系统调用是由Linux内核实现的.3.函数库分为静态和动态,按照链接方式划分的.动态函数库比静态节约空间.使用静态函数库以后应用程序最终会包含自身和函数库,在内存中运行的时候就会有多个函数可的拷贝,导致在空间上的浪费.而动态函数库则在内存中只有一个拷贝,供多个都会使用到的程序使用.4.Linux使用的函数库一般都是在/lib或者在/usr/lib,以*.so*命名的,是动

C++开源库,欢迎补充

C++在“商业应用”方面,曾经是天下第一的开发语言,但这一桂冠已经被java抢走多年.因为当今商业应用程序类型,已经从桌面应用迅速转移成Web应 用.当Java横行天下之后,MS又突然发力,搞出C#语言,有大片的曾经的C++程序员,以为C++要就此沉沦,未料,这三年来,C++的生命力突然被 严重地增强了.主力原因就是开源的软件.基础软件(比如并发原生支持,比如Android必定要推出原生的SDK).各种跨平台应用的出现. 开源C++库必须具有以下特点:必须是成熟的产品.跨平台的产品.相对通用的库

转:从《The C Programming Language》中学到的那些编程风格和设计思想

这儿有一篇写的很好的读后感:http://www.cnblogs.com/xkfz007/articles/2566424.html 读书不是目的,关键在于思考. 很早就在水木上看到有人推荐<The C Programming Language>这本书,一直都没看,开学一个月就专心拜读了一下,并认真做了课后习题.读来收获不少,主要有两点:一是加深了自己对一些基础知识的理 解和感悟:二是从中学到了一些不错的编程风格和设计思想,这些东西虽看起来不起眼但细细嚼来还是很值得学习的.下面就从四个方面做一

手机游戏客户端架构设计

第一部分.模仿MVC模式.状态机制第二部分. UI设计(完成UI库设计,UI编辑器未完成)第三部分.动画(人物动画未完成,普通动画完成--工具CocosBuilder)第四部分.资源利用设计(ui资源.动画资源.精灵资源)第五部分.技能设计(本地计算)第六部分.战斗系统设计(回合制思路,移植世界OL战斗系统)第七部分.换装系统(思路.Demo设计完成)第八部分.任务系统设计第九部分.地图设计(完成设计,工具Tiled)第十部分.网络层设计(完成设计)第十一部分.消息中心设计(完成设计)第十二部分

Python 库大全

作者:Lingfeng Ai链接:http://www.zhihu.com/question/24590883/answer/92420471来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. Awesome Python中文版来啦! 本文由 伯乐在线 - 艾凌风 翻译,Namco 校稿.未经许可,禁止转载!英文出处:github.com.欢迎加入翻译组. 原文链接:Python 资源大全 1200+收藏,600+赞,别只顾着自己私藏呀朋友们 ------------