作为一些感悟就留着自己珍藏吧,不发到首页了。

个人觉得软件设计就应该像搭积木,或者说是俄罗斯方块

俄罗斯方块的每一个块都可以看做软件设计中的模块,但是方块的形状是不同的。需要将整个软件设计的良好,我们应当遵循的就是在设计模块过程中模块之间的耦合性。

堆俄罗斯方块的方式可以让我们在设计过程中设计良好的接口标准,达到模块之间的耦合减小的同时,让模块之间功能独立,依赖性更低,而且可以将软件的层次划分的更清楚。

软件层次是模块与模块之间的中间层的一种抽象,可能在模块与模块之间,也有可能是多个模块与多个模块之间,对于方式是N:M形式。

我比较倾向于C使用回调,C++使用接口+多态的方式来完成功能依赖的解耦。

python使用鸭子类型也可以解决。

在设计一个异步IO模块的时候,刚开始我设计的方式是将IO函数比如read和write作为IO事件的回调,后来我决定在IO事件的层次上设计buffer层,进一步抽象事件,将事件简单化作为buffer 读完成,buffer 直接写。buffer_write()形式也直接变为一种同步方式,将buffer事件作为监听的一种事件类型,加入事件的回调函数也就是逻辑层业务的处理函数。使用者只需要填写逻辑层的处理函数,并且完成后同步调用 buffer_write() ,整个过程就这么简单。甚至不必非常了解异步IO模型也能完成异步代码的编写。

这一切都是像搭积木一样,功能的依赖来自于其他模块,而不是硬编码形式,软件设计越来越简单,扩展性也很强。

随笔,2012/5/20

转载于:https://www.cnblogs.com/Bozh/archive/2012/05/20/2509618.html

[原]软件设计的一些感悟相关推荐

  1. 软件设计文档国家标准_GB8567--88

    1引言... 2 1.1编写目的... 2 1.2背景... 2 1.3定义... 2 1.4参考资料... 2 2任务概述... 2 2.1目标... 2 2.2用户的特点... 3 2.3假定和约 ...

  2. 电脑教程从入门到精通_如何自学原画设计|新手如何开始学原画?(附视频教程从入门到精通)...

    原标题:如何自学原画设计|新手如何开始学原画?(附视频教程从入门到精通) 如何自学原画设计|新手如何开始学原画?(附视频教程从入门到精通)如何自学原画设计|新手如何开始学原画?(附视频教程从入门到精通 ...

  3. 五大软件设计原则学习笔记2——开放封闭原则

    五大软件设计原则SOLID: 单一职责原则(Single responsibility principle,SRP) 开放封闭原则(Open–closed principle,OCP) Liskov ...

  4. 软件设计心情笔记(一)目的与手段都很重要

    忽然发现自己很久没有写技术博文了,上一篇还是在两周前. 今天下午和51CTO的博客管理员同学聊了聊,慢慢地感觉到那种大型技术博客网站是个好东西.要感谢51CTO和图灵社区这样的讨论园地,使我认识了很多 ...

  5. 《设计模式详解》软件设计原则

    <设计模式详解> 3.软件设计原则 3.1 开闭原则 示例 3.2 里式代换原则 反例 改进反例 3.3 依赖倒转原则 反例 改进反例 3.4 接口隔离原则 反例 改进反例 3.5 迪米特 ...

  6. 设计模式-软件设计七大原则

    目录 综述 1.开闭原则 1.1开闭原则的定义 1.2开闭原则的作用 1.3开闭原则的实现方法 2.里氏替换原则 2.1里氏替换原则的定义 2.2里氏替换原则的作用 2.3里氏替换原则的实现方法 3. ...

  7. 计算机工程与应用 卷号,计算机专业毕业设计软件设计类论文各章节标题与格式规范...

    软件设计类论文各章节标题与格式规范 第一章 绪论 1.研究的背景和意义 (阐述你所做课题的背景.目的和意义) 2.XXX 国内外研究进展 (就你研究的内容,阐述目前国内外研究现状) 3.主要工作 (对 ...

  8. 【官方】2023年“中国软件杯”大学生软件设计大赛飞桨小汪赛道基线系统

    ★★★ 本文源自AlStudio社区精品项目,[点击此处]查看更多精品内容 >>> 一.赛题简介:赋予机器狗感知能力 2023年"中国软件杯"大学生软件设计大赛飞 ...

  9. 软件设计与体系结构第二版董威_董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt...

    董威-软件设计与体系结构(第2版)-PPT课件.zip-3-4-形式化方法.ppt (1009.5 KB) 下载风险提示 若需要下载,请务必先预览(下载的文件和预览的文件一致) 由于本站上传量巨大,来 ...

最新文章

  1. leetcode算法题--环形链表
  2. java 线程之对象的同步和异步
  3. Python学习笔记(十三)
  4. 正确关闭WCF代理对象
  5. MySQL外键命名规范
  6. matlab 元胞调用方法你真的理解了么?
  7. Android API 指南
  8. 利用python爬取飞猪信息_飞猪爬虫项目
  9. R语言绘图—主题选择
  10. JetBrains Rider 软件使用快速入门
  11. 使用HTML实现百度首页界面
  12. java医疗保险系统_医疗保险管理系统设计 Java
  13. 动态规划之最长回文子串
  14. NYOJ-71 独木舟上的旅行
  15. The Turbo Gears!
  16. Blender Python相关操作指令(bpy)
  17. 描述一系列的几何图形,包括矩形,圆形,三角形
  18. 如何找国外作者的matlab,如何与外国学者用电子邮件联系(索要论文或者代码)...
  19. 中国公认的大学生计算机编程第一人:楼天城
  20. GIT提交错误汇总及解决方案

热门文章

  1. 一种基于FPGA硬件求解对数的简化方法
  2. C++实现质因数分解
  3. We PE U盘安装win7系统
  4. 大话文本分类之Fnet
  5. Android开发视频教学第一季(1-16集)视频源码下载
  6. Html转义字符列表
  7. Btrace入门到熟练小工完全指南
  8. unix amp; linux oralce用户 内存使用情况分析
  9. 用PROCEDURE ANALYSE优化MYSQL表结构
  10. 基于Springboot实现茶叶商城系统