当前位置: 首页 > news >正文

关于软件设计的一点思考

                            关于软件设计的一点思考

编码之前,首先要进行设计,一个良好的软件设计通常涵盖如下几点:

松耦合高内聚:类的职责明确,每个函数最好都是功能上的内聚。函数之间通信的参数传递不应超过7个,如果有过多的参数,应抽象为对象。模块与模块,类与类,函数与函数之间应该做好信息的隐藏。每个类不但要完成自己要做的事情,也要负责暴露良好的接口给外部调用。

抽象。对系统进行抽象,开发者可以站在不同的层次观察整个系统(降低了复杂度),每个层次都向高层的类提供一致的抽象(接口)。数据有时也需要抽象、结构化。隐藏细节,隔离变化,减少改变、重构带来的代价

可扩展。每一个良好的设计一定具备良好的扩展性,当需要新增功能时通常只需要增加某个类(同时继承一个抽象类或实现某个接口)来完成特定的任务。

可重用性。提高每个模块、类、函数的内聚性是提高其可重用性重要的手段之一。

高扇入。意味系统中大量的使用了某个类。

低扇出。一个类尽可能少的调用其他类。

         可移植性。可以顺利的运行在其他的操作系统中。

 

 

 

 

 

 

 

 

 

 

 

 

 


相关文章:

  • 使用DataGrid中扩展ItemRenderer和HeaderRenderer进行操作
  • 关于软件架构的一点思考
  • 在推广单元测试过程中发现的雷人问题
  • JAVA开发环境配置---JDK的安装与配置
  • Java与C#的垃圾回收机制
  • 在UltraWebGrid单元格中绑定WebNumericEdit或其它可编辑控件
  • 正确编写概要设计...
  • HTML5 本地存储DEMO ---localStorage
  • 倘不能独善其身,何谈兼济天下——外企是?
  • 下载和安装jadclipse
  • java中使用protobuf序列化(反序列化)
  • 《软件开发的边界-管理成功的项目》
  • 二叉排序树与二叉堆
  • 再谈外企是——回复一位网友
  • AutoResetEvent WaitOne和Set使用实例
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Angular6错误 Service: No provider for Renderer2
  • Koa2 之文件上传下载
  • oldjun 检测网站的经验
  • v-if和v-for连用出现的问题
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 蓝海存储开关机注意事项总结
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 如何胜任知名企业的商业数据分析师?
  • 在electron中实现跨域请求,无需更改服务器端设置
  • mysql 慢查询分析工具:pt-query-digest 在mac 上的安装使用 ...
  • ​第20课 在Android Native开发中加入新的C++类
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • #pragma once
  • (3)STL算法之搜索
  • (4) PIVOT 和 UPIVOT 的使用
  • (Pytorch框架)神经网络输出维度调试,做出我们自己的网络来!!(详细教程~)
  • (附源码)ssm高校运动会管理系统 毕业设计 020419
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (一)80c52学习之旅-起始篇
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (转)大型网站架构演变和知识体系
  • .apk 成为历史!
  • .bashrc在哪里,alias妙用
  • .net core 调用c dll_用C++生成一个简单的DLL文件VS2008
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET/C# 将一个命令行参数字符串转换为命令行参数数组 args
  • .NET委托:一个关于C#的睡前故事
  • .vollhavhelp-V-XXXXXXXX勒索病毒的最新威胁:如何恢复您的数据?
  • /etc/fstab 只读无法修改的解决办法
  • @RunWith注解作用
  • @软考考生,这份软考高分攻略你须知道
  • [].slice.call()将类数组转化为真正的数组
  • [Android] Upload package to device fails #2720
  • [AutoSar]BSW_Memory_Stack_003 NVM与APP的显式和隐式同步
  • [AutoSAR系列] 1.3 AutoSar 架构
  • [COGS 622] [NOIP2011] 玛雅游戏 模拟
  • [ExtJS5学习笔记]第三十节 sencha extjs 5表格gridpanel分组汇总
  • [GXYCTF2019]禁止套娃