本文主要研究一下软件开发的REP、CCP、CRP原则

The Reuse/Release Equivalence Principle (REP)

复用/发布等同原则
The granular of reuse is the granular of release.
软件复用的最小粒度应等同于其发布的最小粒度,需要有自己的发布版本号。

The Common Closure Principle (CCP)

共同闭包原则,即组件层面的单一职责原则
The classes in a component should be closed together against the same kinds of changes. A change that affects a component affects all the classes in that component and no other components.
我们应该将那些会同时修改,并且为相同目的而修改的类放到同一个组件中,而将不会同时修改,并且不会为了相同目的而修改的那些类放到不同的组件中。

对大部分应用程序来说,可维护性的重要性要远远高于可复用性。如果某程序中的代码必须要进行某些变更,那么这些变更最好都体现在同一个组件中,而不是分布于很多个组件中。因为如果这些变更都集中在同一个组件中,我们就只需要重新部署该组件,其他组件则不需要被重新验证、重新部署了

The Common Reuse Principle (CRP)

共同复用原则
The classes in a component are reused together. If you reuse one of the classes in a component, you reuse them all.
不要强迫一个组件的用户依赖他们不需要的东西。建议我们将经常共同复用的类和模块放在同一个组件中。

小结

REP和CCP原则是黏合性原则,它们会让组件变得更大,而CRP原则是排除性原则,它会尽量让组件变小。

doc

  • Principles of Package and Component Design

聊聊软件开发的REP、CCP、CRP原则相关推荐

  1. 彼之蜜糖,吾之砒霜——聊聊软件开发中的最佳实践

    作者:sherrywasp https://www.cnblogs.com/sherrywasp/p/9436623.html "描述一个事物,唯有一个名词定义它的概念,唯有一个动词揭露它的 ...

  2. 汝之蜜糖,吾之砒霜— 聊聊软件开发中的最佳实践

    文章来源:https://www.cnblogs.com/sherrywasp/p/9436623.html 作者:sherrywasp "描述一个事物,唯有一个名词定义它的概念,唯有一个动 ...

  3. 聊聊软件开发的SLAP原则

    序 本文主要研究一下软件开发的SLAP(Single Level of Abstraction Principle)原则 SLAP SALP即Single Level of Abstraction P ...

  4. 敏捷软件开发(2)--- 设计原则

    之前讲设计模式系列的时候,也提过这些原则: http://www.cnblogs.com/deman/category/634503.html 现在在根据敏捷一书,学习下. 我们已经有23种设计模式, ...

  5. 10余年软件开发与系统架构经验,一起聊聊软件开发技术、系统架构技术、以及程序员最真实可行的职场打怪技能,代码之外的生存软技能。

    比如:你写了段如下的代码: public void getCompanyFromEmployee() {Employee employee = getEmployee();Company compan ...

  6. [翻译]敏捷软件开发 一 之简要介绍

    敏捷软件开发一之简要介绍       原则.模式与实践是重要的,但是这三个要素都要由人来使得它们协同工作.正如Alistair Cockburn所说:"一个成功的项目,过程与技术永远都是排第 ...

  7. 软件开发就像歌曲制作,我的岗位相当于乐器伴奏

    一首歌的制作大概有以下几个流程:作词作曲.编曲.歌手演唱+乐器伴奏的录音.调音师调音等. 软件开发一般包括这几个岗位,产品经理.用户界面设计者(UI).前端开发人员.后端开发人员.测试人员.运维人员. ...

  8. 软件开发:最佳实践 != 过度设计

    点击上方"全球Java架构师集中营",选择"设为星标" 技术文章第一时间送达! 作者:sherrywasp  来源:http://1t.click/YVy 先讲 ...

  9. 高效软件开发团队的特征

    高效的软件开发团队是建立在合理的开发流程及团队成员密切的合作的基础之上的,成员共同的迎接挑战.有效的计划.协调和管理各自的工作以至完成明确的目标,高效的开发团队具有如下特征: 1. 具有明确且有挑战性 ...

  10. [译]从《孙子兵法》到软件开发

    2019独角兽企业重金招聘Python工程师标准>>> [译]从<孙子兵法>到软件开发 /*** 谨献给可爱的小黑** 原文出处:https://www.toptal.c ...

最新文章

  1. 用Python不回头也能看美女,这招你会了吗?
  2. ASP.NET MVC WebAPI 资源整理
  3. python三元运算符怎么使用_Python的三元运算符使用方法
  4. cortex m0启动代码详解
  5. vue 3D旋转木马轮播图
  6. 编译安装Postfix-2.10.10
  7. Django模板:url反向解析
  8. 百面机器学习 #3 经典算法:01-3 核函数支撑向量机SVM
  9. 关于vc++6.0“打开文件“功能问题的解决方法
  10. 【译】前端框架技术选型 React vs. Vue (vs. Angular)
  11. 学习笔记:自己编译安装OpenCV+测试opencv安装是否成功
  12. DOM 的一些知识记载
  13. paip.提升性能--多核编程中的java .net php c++最佳实践 v2.0 cah
  14. 采用java编写一个软件,100以内的口算题【软件构造大作业】
  15. cern ROOT 读取TXT文件数据并画一个简单的直方图
  16. 第一个小项目:学生成绩管理系统
  17. 如何以聪明的方式提问
  18. 嵌入式系统python开发_嵌组词_嵌的拼音含义_组词造句解释_嵌字的组词
  19. 自定义波浪View,使头像跟着波浪背景浮动
  20. 吴恩达新课 医学图像AI(AI for Medicine)专项课程推荐

热门文章

  1. 源代码加密几种简单方法
  2. 天猫欲攻手机市场 中华酷联倒戈 京东或将失势
  3. Python-Level2-day04:正则表达式概述,元字符使用,匹配规则(特殊字符匹配,贪与非贪婪模式,分组),re模块使用
  4. python爬虫实现大麦抢票_春运了,Python大神分享爬取12306车票信息的例子,附抢票源码...
  5. 【今天带大家用Python来制作一个自动抢票的脚本小程序】
  6. ubuntu设置桌面和锁屏背景
  7. Java互联网架构师视频课程 分布式系统架构 Dubbo ActiveMQ Netty
  8. 【Love2d从青铜到王者】第三篇:Love2d变量以及函数
  9. 中国5G基站将带动155GWh以上锂电池需求
  10. 数据库事务(Transaction)详解