软件工程学习笔记

基本的模块化设计

程序 = 数据结构 + 算法
软件 = 程序 + 软件工程

经过基本Modularity (also called separation of concerns)设计的代码
模块化的思想和命令行菜单的实现范例(开源社区中常见的写法)
基本模块化的写法

代码设计中的一些常见方法

  • KISS(keep it simple & stupid)
  • using design to frame the code(matching design with implementation)
    including pseuducode
  • 不要和陌生人说话原则
  • 合理利用Control Structures、Data Structures来简化代码
  • 一定要有错误处理

“开-闭原则” 对于扩展是开放的,对于修改是封闭的。

模块复用和系统复用

软件的功能性需求和非功能性需求

非功能性需求,比如说提高软件的效率。

  • 软件的业务逻辑,业务逻辑层
  • 对菜单数据的存储,数据存储层

功能相关 menu

数据操作相关

将系统模块放在不同的源文件里面

把程序拆分成三个文件
linklist.h
linklist.c
menu.c
menu program放在menu.c
数据结构和操作放在linklist.h中
具体函数的实现放在linklist.c中

可重用模块的接口设计

通用Linktable模块的接口设计
将通用的Linktable模块集成到我们的menu程序中
定义接口 - “天王盖地虎,宝塔镇河妖”黑社会接头也设计接口的!

  • 接口规范
  • 内聚和耦合
  • 通用原则
    通用链表模块的接口设计

模块化的好处:包容变化

拿来主义 VS 从头干起

参数化上下文

开发者指南
将通用的LinkTable集成到我们的menu程序中

本地化外部接口(Localize input and output)

代码风格规范,对于我个人觉得以下部分需要多注意:

代码缩进4个空格
代码给谁看?程序员
代码风格规范在团队协作和交流中有重要作用。
行宽以前80,现在100
代码风格的原则:简明、易读、无二义性
不要把多条语句和多个变量定义放在同一行
注释使用英文,不要用中文,保持源代码是ASCII字符格式文件。

模块化思想 :

”开-闭”原则,对扩展是开放的,对修改是封闭的。
业务逻辑层和数据存储层。
将系统模块放在不同的源文件。

代码设计中的一些常见方法:

KISS(keep it simple & stupid)
using design to frame the code(matching design with implementation)
including pseuducode
不要和陌生人说话原则
合理利用Control Structures、Data Structures来简化代码
一定要有错误处理

接口的五个要素:

Purpose 比如函数名表明了接口的目的
Preconditions 比如接口函数调用前已经做好了哪些准备
Protocols 比如参数和返回值的类型,指针指向的数据格式等
Postconditions 比如返回值、printf函数接口的效果是屏幕显示了字符串
Quality attributes 比如接口函数的执行时间限制在1s内
前置条件和质量属性是接口的两个隐含属性。

可重入和线程安全

可重入函数和不可重入函数,以及它们和线程安全之间的关系

Makefile工程文件

make 从Makefile的第一个目标all开始执行
Makefile文件不支持空格代替Tab键
Makefile工程文件也是代码,也要考虑可维护性。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值