关于DRY的理解

个人的理解:

如果我们对于一个功能,或者一个需求来说,重复次数达到3次以上,那么可以对其封装成一个组件。

但这里的封装,并不是把它进行抽象化,模版化,而是应该在满足当前项目需求的情况下来封装,也就是需求决定封装。

举个例子:

比如说,你每天都需要启动电脑的所有服务,在项目中链接你的数据库,以及数据库备份等等等,这些东西,看起来好像是使得你忙忙碌碌,但是,对于一个优秀的程序员来说,他可能化几天时间写个脚本,每天定时运行便代替了忙忙碌碌的你。

再比如说,你是一名不错的移动端开发工程师,在这次版本迭代中,你需要改某个视图的UI,你可能真的就只是重新写这个视图的UI,然后再重新写这个视图的逻辑。但是,对于细心的人,你可能就会发现,这里的逻辑业务层其实并没有改动,只是表现层需要变动而已,如果还有下一次,那就尽可能的将两者分离。

所以我的看法还是一样,需求决定封装。

相关文章:

  1. Abstraction: The Rule Of ThreePosted by Derick Bailey on October 31, 2012
  2. DRY的误区
  3. Redundancy vs dependencies: which is worse? May 27th, 2008 | software


题外话:不要盲目的追求封装,抽象,何不再多想想到底适不适合。

时间: 2024-10-12 21:53:57

关于DRY的理解的相关文章

Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折

Atitit 深入理解软件的本质 attilax总结 软件三原则"三次原则"是DRY原则和YAGNI原则的折 1.1.1. 软件的本质:抽象  1 1.2. 软件开发的过程就是不断抽象的过程 1)机器语言--> 汇编语言-->高级语言,这就是一个不断抽象的过程,1 1.3. 代码的抽象三原则_软件工程_酷勤网.htm1 1.4. "软件是存储.通信.UI(user interface)和业务逻辑的紧密结合体2 1.5. 在软件的生命周期中,较稳定的是存储和通信,最

转:如何学习SQL(第二部分:从关系角度理解SQL)

转自:http://blog.163.com/[email protected]/blog/static/285720652010950825538/ 6. 从关系角度理解SQL 6.1. 关系和表 众所周知,我们目前所用的数据库,通常都是关系数据库.关系自然在其中处于关键位置.初学数据库原理的人可能会很困惑关系和表是什么联系,如果没有清楚的理解,很可能会认为关系这个概念没有实际意义,只会引起混淆.其实这两组概念只是由于理论界与技术界的着重点不同.前者需要用一个专业的.没有歧义的概念来进行理论探

深入理解DIP、IoC、DI以及IoC容器

摘要 面向对象设计(OOD)有助于我们开发出高性能.易扩展以及易复用的程序.其中,OOD有一个重要的思想那就是依赖倒置原则(DIP),并由此引申出IoC.DI以及Ioc容器等概念.通过本文我们将一起学习这些概念,并理清他们之间微妙的关系. 目录 前言 依赖倒置原则(DIP) 控制反转(IoC) 依赖注入(DI) IoC容器 总结 前言 对于大部分小菜来说,当听到大牛们高谈DIP.IoC.DI以及IoC容器等名词时,有没有瞬间石化的感觉?其实,这些"高大上"的名词,理解起来也并不是那么的

理解和使用 JavaScript 中的回调函数

原文:http://javascriptissexy.com/ 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后

PHP新手常见的一些不好习惯(抄的 有待理解)

1.不写注释(是个好习惯,不过也没必要每个语句都要写) 2.不使用可以提高生产效率的IDE工具 3.不使用版本控制 4.不按照编程规范写代码 5.不使用统一的方法 6.编码前不去思考和计划 7.在执行sql前不执行编码和安全检测 8.不使用测试驱动开发 9.编码时不打开自动报错(error_reporting) 10.不使用一种好的调试工具 11.不重构你的代码(refactor) 12.不采用MVC这样的分层结构 13.不知道以下等等概念:KISS,DRY,MVC,OOP,REST 14.在函

DRY原则和Shy原则

保障可维护性的主要诀窍是遵循DRY原则和Shy原则. 在一个系统的整个生命周期里,理解和改动这类维护工作的比例一般非常之高.为了维护的方便,要尽量将系统划分为可以独立理解与改动的模块.这就要在设计的时候注重DRY原则与Shy原则.不过,这两条原则有一定的冲突,并不总能兼得,于是在追求的时候要重视分寸. 维护者的两大困扰 有两种情况会给维护者增添很大的麻烦:一种是为了调整一个效果,要改动无数个地方:一种是只改动了一个地方,却影响了很多效果. 在前一种情况下,非常容易出现漏改的问题——因为需要改动的

<史上最强>深入理解 Python 异步编程(上)

前言 很多朋友对异步编程都处于"听说很强大"的认知状态.鲜有在生产项目中使用它.而使用它的同学,则大多数都停留在知道如何使用 Tornado.Twisted.Gevent 这类异步框架上,出现各种古怪的问题难以解决.而且使用了异步框架的部分同学,由于用法不对,感觉它并没牛逼到哪里去,所以很多同学做 Web 后端服务时还是采用 Flask.Django等传统的非异步框架. 从上两届 PyCon 技术大会看来,异步编程已经成了 Python 生态下一阶段的主旋律.如新兴的 Go.Rust.

理解javascript中的回调函数(callback)【转】

在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实际上是一种对象,它可以"存储在变量中,通过参数传递给(别一个)函数(function),在函数内部创建,从函数中返回结果值". 因为function是内置对象,我们可以将它作为参数传递给另一个函数,延迟到函数中执行,甚至执行后将它返回.这是在JavaScript中使用回调函数的精髓.本篇文

【CSS黑科技1】使用CSS的currentColor变量写DRY代码

| 导语 如果你已经是sass或者less的用户,你肯定已经在你的样式表中用过变量了,也知道有变量的存在,会非常灵活好用,如果你没用过,那一定很想在普通的css中有变量的存在,那么我们就来认识一下这个特殊的变量吧: currentColor 变量的好处 css中,如果有变量的使用,会让我们的代码能DRY(don't repeat youself :特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性.简洁性,并且可能导致代码之间的矛盾),特别是在我们管理维护大型项目的时候非常好用,因为这往