五步为类瘦身

 

(http://drdobbs.com/cpp/230600127)

重构技巧和纪律是通往小精灵之岛的康庄大道。

我之前的文章讨论了在基础代码中使用小的类的好处和作用,我认为一个类的代码应当限制在50到60行。我陆续收到了许多回复,大部分类比了以前关于让函数变小以在一屏显示的法则。

 

虽然很感谢这些回复,但他们都忽略了决定性的一点。我并没有讨论函数,而是可能包含多个函数的类。编写一个只有60行大小的类会打击一些作者,因为要实现它的简单性却有许多的限制,可能并不值得去做。

 

但它恰恰是纪律,这样的行数规定,创建了非常明确理想的代码。相信正如其它回复所描述的那样,这条纪律并没有被保持,对于保持小类的标准技术也没有像我所期望的那样被广泛地了解。

 

让我们过一下这些技术原则。假设设计已经完成,这里只是如何写代码。或者是维护代码这种没有吸引力的活。

 

减少工作负担 (Diminish the workload) 

首先运用的技术是单一职责法则(SRP),  它强调一个类只做一件事。这件事有多大决定了这类将有多大。减少每个类的工作,然后用其它类把这些小的类正确地关联起来。

 

避免执着于表象 (Avoid primitive obsession)

这种执着会诱使我们使用原始的数据组织方式。也是被定义代码异味的一种。 如果有一个对象链表,那么这个链表应当定义为自己的类,并有有合适的命名。仅仅向其它类公开方法,这样避免它们去执行它们所不了解的行为。这个列表的目的非常清楚,这样的封装允许你在必要时变更数据结构。

(*这是一种数据抽象加工的能力。在使用OO时,如果形成类时过于直白,往往适得其反。可以参考下面的文章:"面向对象的分析和设计-抽象出对象")

 

减少成员数量 ( Reduce the number of class and instance variable )

数量可观的变量也是一种代码异味,它导致类做更多的事。后来的开发者也很难理清类做了什么。 通常,一些变量构成自然的组合,这就是一个新的类。同时将操作它们的方法也直接移到新的类。

 

子类化特殊情况 (Subclass special-case logic)

如果一个类含有很少使用的逻辑,就应决定是否可以将这部分逻辑移到子类中或者干脆放到一个新类中。OO中的多态就是一个典型的例子,它可以用来处理特殊的变化

 

不要重复自己 (Don't repeat yourself)

这个建议似乎与主题明显不相关。不过,即使编码者注意到这个法则,但是两个函数仍可能因为只有一点点不同而产生重复的代码。另外,他们可以在维护过程中检查重复代码的说明。与其它几条不同的是,其它建议都是纯技术性的,而DRY则是纪律中的纪律

 

使用这些工具基本上可以让你达成较小的类。要想了解它们在现实中的运用,可以看看我之前已经推荐了好几次了的书:Martin Fowler的<<重构>>,它在本质上是一本清理代码的技术手册,包含了一步一步的说明和演示代码。

 

回到我个人的经验,我发现我在重写代码时坚持挑剔的纪律时,大脑正在慢慢形成"肌肉记忆(Muscle memory)", 已经开始自动在开发类之前思考类的大小了,而现在在清理现有代码时也可以做到了。

 

— Andrew Binstock
Editor in Chief

alb@drdobbs.com

时间: 2024-08-04 14:32:13

五步为类瘦身的相关文章

五步为网站量身打造seo方案

在从事seo服务的过程中,都会给客户拟定一个详细的优化方案,优化方案在给客户提供参考的同时也展现了公司的实力,还为seo的工作提供系统的指导,所以一份内容全面具体的优化方案是seo的工作的开始.拿到优化项目要进行分析,优化方案就是把分析实体化,为客户提供准确的参考,看看有哪些问题需要分析和为客户展示. 当前网站数据 不论是新站还是老站在优化之前都要进行全面的体检,包括pr值.快照.收录量.百度导入链接.yahoo外链.alexa排名.关键词当前排名.这些数据最好有一个备份,截图或者表格,在优化过

炎炎夏日 那你是否给你的页面瘦身了

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 现今正处于艳艳夏日,正是穿上背心.短裙.短裤等"装备"大秀美好身段的良机!很多人都忙着瘦身,而你是否有准备给你的页面也"瘦身"一下.所谓页面"瘦身"是指对我们站点页面的结构和代码的一些优化,而不是仅仅局限于对页面文件的压缩.页面瘦身一直是一个站长们热议的话题.一般绝大多数我们的做法是

嫌APP功能肿胀?5个大神级方法帮你完美瘦身!

  编者按:移动端App越来越胖了.越来越多的新特性正在啃蚀着大型App的用户体验,瘦身减肥也成了亟待解决的问题.手心手背都是肉,这一身肥膘要怎么减呢?来看看腾讯ISUX的死猫君的处方吧,五大秘技,不要错过哟~ 先来看一张图: 图上看到,所有平台上用户花费时间都在减少,除了移动端.观察身边也是如此,回家不开电脑的小伙伴越来越多.手机平板加电视,下班场景全搞定.连那些以前电脑苦手的长辈,现在也都活跃在朋友圈上,无责任转发各种小道消息.心灵鸡汤以及人生真谛. 上次在朋友圈发了一张图,晒同事"中二病&

博客网“瘦身”戳破Web2.0泡沫 50亿元风投入冬

在金融海啸的袭击之下,围绕在"Web2.0"概念上的光环正在逐渐消退. "当初提起Web2.0的时候,大家都觉得是未来的趋势和方向,一拥而上的机构使得这个行业的泡沫被吹大,现在是破灭的时候:未来许多视频网站也极可能步其后尘."据记者粗略统计,风投在Web2.0概念的投资已有近50亿人民币. 一位风投界的人士告诉记者,"Web2.0,可能已经成为过去的故事了.在国内,所有针对Web2.0的投资基本上都已经停止了." ⊙本报记者 张韬 方兴东最先感觉

APP加固新方向——混淆和瘦身

直播回顾视频:https://yq.aliyun.com/edu/lesson/play/393 以下内容是根据直播和PPT整理. 加固的意义 从安卓2.x版本起,加固技术就逐渐火了起来.最初,只有一些创业型公司涉及加固领域:随着安卓应用的逐渐升温,诸如阿里.腾讯.百度等大型互联网公司逐渐涉及该领域. 那么为什么要对APP进行加固呢?主要原因有三点:首先安卓的APP应用通常采用Java语言编写的,开发门槛低,容易被反编译(解释性语言的弊端):其次安卓市场比较混乱且可自签名,进而导致大量应用被二次

致Android开发者:APP 瘦身经验总结

随着移动端产品功能的逐渐增加,APP 的体积也不可避免地呈现上升趋势,如果不加以重视,几个版本迭代下来,可能你的 APP 体积会达到用户不能忍受的程度. 如果你是 SDK 开发者,你的 SDK 包大小是用户决定是否采用的关键因素:如果你的APP 想要预装到某款手机或者某款 Android 系统中,APP 的体积也会受到很严格的限制. 因此,APP 的瘦身是每个移动端产品都会遇到的一个普遍问题,本文选自<Android高级进阶>将从不同的角度切入,全面介绍APP 瘦身相关知识. APP 为什么变

Android优化系列之apk瘦身

概述 为什么APK要瘦身.APK越大,在下载安装过程中,他们耗费的流量会越多,安装等待时间也会越长:对于产品本身,意味着下载转化率会越低(因为竞品中,用户有更多机会选择那个体验最好,功能最多,性能最好,包最小的),所以apk的瘦身优化也很重要,本篇博客将讲述apk瘦身的相关内容. 包体分析 在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包 . 可以看到占用空间的主要是代码.图片.资源和lib和assert文件,主要方向精简代码.压缩图片.去

Android APK瘦身实践

因为推广的需要,公司需要把APK的大小再"减小"一下,4M以内! 当达到4M以内之后,公司建议说,能否再压压?2M如何? 瘦身前 因为平时就考虑到大小的限制,所以很多工作已经做过了,如下列举现在的状态: 7.3M(Debug版本)和6.5M(Release版本) 开启minifyEnabled 开启shrinkResources 已经去除不相关的大型库 图片和代码已经经历过粗略的一轮清理 开始魔鬼瘦身 1. tinypng有损压缩 android打包本身会对png进行无损压缩,不信大家

我的Android进阶之旅------&amp;gt;Android APP终极瘦身指南

首先声明,下面文字转载于: APK瘦身实践 http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5/ APP终极瘦身指南 http://www.jayfeng.com/2016/03/01/Android-APP%E7%BB%88%E6%9E%81%E7%98%A6%E8%BA%AB%E6%8C%87%E5%8D%97/