如果抽象机制无法隐藏复杂性,就会暴露出应该被隐藏的复杂性,即抽象泄漏。

在某种程度上,所有非平凡的抽象都是泄漏的。
(说明:平凡是数学上经常提到的概念,就是指最简单的情形,或者说是容易证明的、容易看到的。)

事实上,存在一个抽象泄漏定律,它意味着,例如,每当有人想出一个更新更便捷的代码生成工具,该工具应该使我们所有人更高效时,可能会听到很多人说:“先学习手动操作,然后再使用节省时间的新工具。”进行抽象的代码生成工具就像所有抽象一样,会泄漏,有效处理泄漏的唯一方法是了解该工具的抽象的工作方式以及抽象的内容。因此,抽象为我们节省了工作时间,但并没有节省我们学习的时间。

所有这一切都意味着,即使我们拥有越来越高的编程工具并具有越来越好的抽象性,矛盾的是,成为一名熟练的程序员也变得越来越困难。

导致抽象泄漏的问题应该被给出处理方案,应该从用户的视角去设计程序的抽象层面,不要有任何令用户失望的东西。

【软件工程】抽象泄漏相关推荐

  1. 抽象泄漏,或如何正确地将Oracle DATE与Hibernate绑定

    我们最近发布了一篇文章,介绍如何在SQL / JDBC和jOOQ中正确绑定Oracle DATE类型 . 这篇文章在Reddit上颇受关注, Vlad Mihalcea对此发表了有趣的评论,他经常在其 ...

  2. 《Composing Programs》学习笔记(1.1)开始(关键词:软件工程/抽象/函数)

    Chapter 1: Building Abstractions(抽象) with Functions 1.1 Getting Started 第1章:利用函数构造抽象 1.1 开始 Computer ...

  3. (软件工程复习核心重点)第四章总体设计习题

    文章目录 选择题 填空题 名词解释 简答题 (1)必考 (2)了解 画图题/应用题 选择题 填空题 总体设计的设计原理包括 模块化 抽象 逐步求精 信息隐藏和局部化 模块独立性 请按照耦合度从低到高写 ...

  4. CPT203 软件工程开发 笔记

    Software Engineering By Prof. Fazal Rehman Shamil 可以在这个网站速览概念x Activity Diagram 活动图 菱形表示OR,黑心粗线表AND也 ...

  5. 软件工程导论—总体设计

    Mitch Kapor曾经就软件设计发表过宣言:"什么是设计?设计是你站在两个世界--技术世界和人类的目标世界,而你尝试将这两个世界结合在一起--". 文章目录 1. 设计过程 1 ...

  6. C语言程序设计入门之抽象编程

    C语言程序设计入门之抽象编程 前言 1. 程序入门抽象:变量和过程抽象 2.程序结构抽象:顺序.选择.循环 3.程序进阶抽象:问题(算法)抽象 4.软件工程抽象:函数(模块或问题分解)抽象 5.面向对 ...

  7. 前端开发的工具化与工程化

    概述 近年来,随着浏览器性能的提升与移动互联网浪潮的汹涌而来,Web前端开发进入了高歌猛进,日新月异的时代.这是最好的时代,我们永远在前行,这也是最坏的时代,无数的前端开发框架.技术体系争妍斗艳,让开 ...

  8. 2016-我的前端之路:工具化与工程化

    2016-我的前端之路:工具化与工程化 2016-我的前端之路:工具化与工程化从属于笔者的Web 前端入门与工程实践,本文承接自笔者去年的年度总结:2015-我的前端之路:数据流驱动的界面.另外如果对 ...

  9. 前端之路:工具化与工程化

    前言 二十载光辉岁月 近年来,随着浏览器性能的提升与移动互联网浪潮的汹涌而来,Web前端开发进入了高歌猛进,日新月异的时代.这是最好的时代,我们永远在前行,这也是最坏的时代,无数的前端开发框架.技术体 ...

最新文章

  1. 这样就能用MathType编辑^符号
  2. 进入软件开发行业必须要掌握的基础知识(2005-5-18)
  3. 混合多云架构_使用混合多云每个人都应避免的3个陷阱(第2部分)
  4. 前端学习(478):前端简介2
  5. “最严”整改后的海淀黄庄 :学费收取仍有猫腻
  6. 当年要是早知道这4步框架,我就不会为数据管理发愁了
  7. asp.net mvc 过滤器
  8. K8S_Google工作笔记0007---通过kubeadm方式_部署node节点和集群测试
  9. 使用蛋白质和mRNA序列信息预测蛋白质亚线粒体定位
  10. 手机安装W ndows7镜像,Windows7专业版
  11. Android 读取bin文件方法
  12. matlab图形与动画设计 pdf,MATLAB图形与动画设计
  13. amd显卡跑人工神经网络,amd显卡能跑神经网络吗
  14. 大数据之Hadoop3.x 运行环境搭建(手把手搭建集群)
  15. /usr/bin/ld: cannot find -lxxx 的解决办法
  16. 软考-信息安全工程师(汇总1000题)
  17. 《智能控制导论》读书报告(课程作业)--常规控制的智能化
  18. 熊猫烧香李俊涉嫌开设赌场罪被再度批捕
  19. 计算机教室英语怎么读音,多媒体教室,multimedia classroom,音标,读音,翻译,英文例句,英语词典...
  20. 福建农林大学计算机与信息学院宿舍,2021福建农林大学宿舍条件和新生宿舍图片及分配规则分享...

热门文章

  1. servlet中servletContext的五大作用(一)
  2. DNS A记录和CNAME记录
  3. 移动设备和SharePoint 2013 - 第5部分:自定义应用
  4. idea导入gitlab上面的项目
  5. pandas object转float_Pandas中文官档~基础用法6
  6. c是过程化语言吗数据库,关于SQL错误的是()A、所有数据库的公共语言B、非过程化的C、统一的语言D、所有用SQL缩写的程序都...
  7. java 修改 referer_看好你的门-客户端传数据-用java修改referer
  8. linux下达梦数据库启动_linux上安装tomcat和达梦数据库
  9. 计算机学院运动会通讯稿,2021大学运动会通讯稿篇
  10. python3 logging com1_python-logging-基础(1)