当前位置: 首页 > 编程日记 > 正文

《重构-改善既有代码的设计》读书笔记(二)

12Lazy Class – 冗赘类
对于几乎没有用的类,运用inline class 将其功能移动。去除这些不值得维护的类。
13Speculative Generality – 夸夸其谈未来性
    对于你现在用不到,觉得总有一天会用到的代码,要警惕。用不上的装置总会挡我们的路,所以要尽量搬开。例如,没有太大作用的abstract class,非必要的委托,没有用到的函数参数,或者是函数的名称带有多余的抽像的意味。
14Temporary Field – 令人迷惑的暂时值域
如果某些变量只是为了某种特定情况而设的,常会让人不理解
15Message Chains – 过度耦合的消息链
    你常会看到用户向一个对象请求另一个对象,然后再向后者请求另一对像,然后再继续形成了一个强耦合的消息链。一旦对像间的关系发生任何变化,客户不得不做出大量修改。
16Middle Man –中间转手人
Encapsulation – 封装,对外部世界隐藏内部细节。封装常常伴随delegation(委托),但如果被过度使用,就必须得重新考虑。如果你看到某个class中有一半的函数都委托给其它class,这时就是强烈地信号。
17Inappropriate Intimacy – 狎昵关系
二个类之间的关系联系太过紧密,造成强耦合。一般来讲,继承往往会造成这样结果,因为subclasssuperclass的了解总是超过superclass的主观愿望。
18Alternative Classed with Different Interfaces? -- 异曲同工的类
二个函数做同样的事,却有着不同的名字。你该知道怎么处理了吧。
19Incomplete Library Class – 不完美的程序库类
我们在运用程序类库的时候,发现它并不是真正适合需要。
20Data Class 纯稚的数据类
找到Data Class 中可能存在的public的值域,如果它的fields中存在容器类,就要小心地检查是不是得到了有效的封装。
21Refused Bequest – 被拒绝的遗赠
Subclasses 应该继承superclass的函数和数据,但是如果subclass并不需要superclass的中某些功能,该怎么办呢。
22Comments – 过多的注释

这里讲并不是你不应当写注释,而是说,如果一段代码有着长长的注释,实际上说明这段代码是不容易看懂的,如果到处都需要大段的注释,那整体程序的可读性就大大困难;如果你一定需要一段注释来说明,那么先试着重构,把可提出去Method 找出来,如果这之后仍然需要注释来解释其行为,那就要试着Rename,使其拥有有一个能说明其行为的类名或方法名,程序可读性会大大增强


本文转自   wenyan  51CTO博客,原文链接:http://blog.51cto.com/wenyan/9953

相关文章:

css属性选择符的应用

注释:Internet Explorer 7 (以及更高版本)在规定了 !DOCTYPE 的情况下支持属性选择器。IE6 及更低的版本不支持属性选择器。 [title]{color:red;}  //为带有 title 属性的所有元素设置样式: [title"website"]{color:r…

【青少年编程】【答疑】控制Scratch异步代码的执行顺序

问题 几天前,我写了一篇图文 对「等待(0)秒」的理解,发现可以利用「等待(0)秒」这个积木块来解决Scratch中异步代码的执行顺序问题,即点击绿旗后可以控制多个角色中响应该事件的代码的顺序。 …

UI设计培训分享:学习UI设计有哪些技巧

互联网时代的快速发展,UI设计这个行业在互联网有着一席之地,越来越多的人都想要参加UI设计培训班学习,那么对于初学者来说,学习UI设计有哪些技巧呢?来看看下面的详细介绍吧。 学习UI设计有哪些技巧? 1、基础软件操作 UI设计培训…

07 Scratch等级考试(一级)模拟题

Scratch竞赛交流群已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】,即可进入。如果加入了之前的社群不需要重复加入。 微信后台回复“资料下载”可获取以往学习的材料(视频、代码、文档)。 这是第…

遮罩层+软键盘

一&#xff0e;清关里边申请清关 上传图片由于本身就是布局用的图片&#xff0c;微信手机长按会出现保存收藏该图片。 解决方法&#xff1a;添加同级元素充当遮罩层。设置样式&#xff0c;把点击事件从设置的上传图片中移除即可。 1&#xff09;<!-- 图片遮罩层 --> <…

UI培训技术分享:设计大神都在用的10种技法!

越来越多的人开始学习UI设计&#xff0c;想要进群到UI设计这个行业&#xff0c;本期小编为大家介绍的UI培训教程就是关于设计师会经常用到的一些技巧&#xff0c;帮助大家后期的工作中的应用。 UI培训技术分享&#xff1a;设计大神都在用的10种技法! 1.将图片融入背景来使用 同…

正则表达式限制输入整数或小数

string pattern "^\d{1,7}(?:\.\d{0,2}$|$)"; //这是一个格式匹配字符串 其中的含义可以参考http://hi.baidu.com/%D6%C2%D0%F9%B8%F3/blog/item/9060fe35f84f872370cf6c83.html。如果调用以下代码&#xff0c;可以匹配整数位最多为7位&#xff0c;小数位最多为2位…

QC配置邮件服务器(Mail Dir)

http://blog.sina.com.cn/s/blog_5007d1b10100m8cm.html 本文转自hblxp32151CTO博客&#xff0c;原文链接&#xff1a;http://blog.51cto.com/starpoint/584056&#xff0c;如需转载请自行联系原作者

Datawhale组队学习周报(第003周)

&#xff08;一&#xff09;当下 本周&#xff08;03月01日~03月07日&#xff09;&#xff0c;我们组织的5门组队学习的课程中有3门已经结营&#xff0c;2门仍在进行中。 1. CV实践-布匹疵点智能识别&#xff08;异常检测&#xff09; 已经结营&#xff0c;优秀队长与优秀学…

软件测试培训分享:如何才能选择到靠谱的培训学校

软件测试这个行业在近几年是非常的吃香的&#xff0c;职业需求也是非常大的&#xff0c;很多小伙伴都想寻找一个合适的软件测试培训机构进行系统学习&#xff0c;那么如何才能选择到靠谱的培训学校呢?来看看下面的详细介绍。 如何才能选择到靠谱的软件测试培训学校?一般可从以…

《统一沟通-微软-实战》-5-部署-SharePoint Server 2010

1. 登录-SP2010 2. 查看-计算机名 3. 查看-IP 4. 加域 5. 上网 安装 SharePoint Server 2010 若要安装和配置 SharePoint Server 2010&#xff0c;请按照以下步骤执行&#xff1a; 1. 运行 Microsoft SharePoint 产品准备工具&#xff0c;该工具安装使用 SharePoint Server 所需…

JQuery 给DOM控件绑定和移除事件的方法

绑定事件&#xff1a; Method 1$("#myElement").click( function() {alert($(this).text());}); Method 2 $("#myElement").bind(click, function() {alert($(this).text());}); 第一种看起来要方便一些&#xff0c;但它有一个局限&#xff0c;即DOM元素必…

【组队学习】【23期】Datawhale集成学习(上)

集成学习&#xff08;上&#xff09; 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-data-mining/tree/master/IntegratedLearning 基本信息 贡献人员&#xff1a;李祖贤、薛传雨、赵可、杨毅远、陈琰钰学习周期&#xff1a;14天学习形式&#xff1…

APP测试和传统软件测试有什么区别?

软件测试从字面意思我们就知道它主要是做软件产品方面的测试&#xff0c;尤其是APP这块&#xff0c;那么很多人就问了APP测试和传统软件测试有什么区别?来看看下面的详细介绍。 软件测试培训分享&#xff1a;APP测试和传统软件测试有什么区别?移动APP的特点使得它与传统软件在…

C6678-SRIO和Virtex6-FPGA

设计的板子到了SRIO调试阶段了&#xff0c;在板子上&#xff0c;一片V6和两片6678通过4XSRIO互联&#xff0c;中间没有Switch&#xff0c;总算搞定了相互之间的通信。首先&#xff0c;感谢Ti论坛提供的SRIO程序范例&#xff0c;但是其硬件平台是EVM板&#xff0c;更多的只能用于…

【组队学习】【23期】Datawhale编程实践(区块链)

编程实践&#xff08;区块链&#xff09; 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-program/tree/master/Blockchain 基本信息 贡献人员&#xff1a;陈锴、孙子涵、李岳昆、易远哲学习周期&#xff1a;12天学习形式&#xff1a;根据教程主线进…

bootstrap模态框显示控制

默认模态框弹出后&#xff0c;点击背景蒙层部分弹框会消失&#xff0c;如要解决&#xff0c;需要在模态框属性中加 aria-hidden"true" data-backdrop"static"属性即可&#xff1b; 转载于:https://www.cnblogs.com/jiangze-blog/p/7844639.html

什么是Python?主要运用哪些方面?

人工智能领域少不了Python的相助&#xff0c;这也是目前Python技术在人工领域的好前景所致&#xff0c;近几年&#xff0c;想要学习Python技术的人越来越多&#xff0c;很多人都想知道什么是Python?主要运用哪些方面?来看看下面的详细介绍。 什么是Python?主要运用哪些方面?…

第五课:系统目录及ls·文件类型及alias命令介绍

1、上过一次我们学习了单用户和救援模式及服务器秘钥登录等操作&#xff0c;而我们最终的目的还是要操作和使用linux系统&#xff0c;所以我们今天先初步学习linux的基本命令如下&#xff1a; 一目录介绍 ls命令介绍 文件类型 alias命令介绍 1、首先我们…

jquery 实现表单验证功能代码(简洁)

html xmlns"http://www.w3.org/1999/xhtml"> <head> <title>表单验证页面</title> <link href"../Scripts/themes/default/easyui.css" rel"stylesheet" type"text/css" /> <script src"../Script…

【组队学习】【23期】Datawhale深度推荐模型

深度推荐模型 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-rs/tree/master/DeepRecommendationModel 基本信息 贡献人员&#xff1a;罗如意、吴忠强、田雨&#xff0c;宁彦吉&#xff0c; 何世福、徐何军、赖敏材、刘纪川学习周期&#xff1a;13天…

参加Python培训后能干嘛

​ 参加Python培训后能干嘛?相信这是目前很多正在学习Python技术的同学都比较关注的一个问题&#xff0c;Python的法发展前景是非常好的&#xff0c;那么具体学完之后可以运用到哪些方面呢?我们来看看下面的详细介绍吧。 参加Python培训后能干嘛?网站是很基本的&#xff0c;…

博客园HTML源码运行特制js(原创自Zjmainstay)

canrun 测试运行HTML <html> <head><title>测试博客园HTML源码运行程序</title><meta http-equiv"Content-Type" content"text/html; charsetutf-8" /><meta http-equiv"Content-Language" content"zh-CN…

【组队学习】【23期】Datawhale零基础入门数据挖掘(心跳信号分类)

零基础入门数据挖掘&#xff08;心跳信号分类&#xff09; 开源内容&#xff1a;https://github.com/datawhalechina/team-learning-data-mining/tree/master/HeartbeatClassification 基本信息 贡献人员&#xff1a;鱼佬、牧小熊、吉米杜、张晋、王皓月、姚昱君学习周期&am…

Unity3D提示“XX,some are mac os x (unix) and some are windows”

2019独角兽企业重金招聘Python工程师标准>>> 解决办法&#xff1a; 将Unity安装目录\Editor\Data\Resources\ScriptTemplates\目录下的所有文件用上面的方式修改换行编码&#xff0c;以后通过Unity3D编辑器创建的文件将默认以“CR LF”换行&#xff0c;一劳永逸。 转…

什么是Python?前景怎么样?

​ Python在人工智能行业的高速发展&#xff0c;引起了很多人的关注&#xff0c;很多目前都不知道什么是Python?前景怎么样?那么下面小编就为大家做下详细的介绍&#xff0c;希望能够帮助到大家。 什么是Python?前景怎么样? 你可能听说过c语言&#xff0c;听说过java语言&a…

Spring整合CXF,发布RSETful 风格WebService

这篇文章是承接之前CXF整合Spring的这个项目示例的延伸&#xff0c;所以有很大一部分都是一样的。关于发布CXF WebServer和Spring整合CXF这里就不再多加赘述了。如果你对Spring整合CXF WebService不了解&#xff0c;具体你可以参看这两篇文章&#xff1a; http://www.cnblogs.c…

使用CNN做文本分类——将图像2维卷积换成1维

使用CNN做文本分类from __future__ import division, print_function, absolute_importimport tensorflow as tfimport tflearnfrom tflearn.layers.core import input_data, dropout, fully_connectedfrom tflearn.layers.conv import conv_1d, global_max_poolfrom tflearn.l…

如何在Datawhale开源学习小程序中创建队伍?

我们的组队学习马上就要开营了&#xff0c;本次组队学习与以往不同的是小程序中增加了组队的功能。为了方便大家组队&#xff0c;Datawhale的 六一同学 为大家准备了在Datawhale开源学习小程序中创建队伍的教程。 Step01&#xff1a;打开小程序主页后&#xff0c;点击“审批小…

Python List 列表list()方法

Python基础数据类型之一列表list&#xff0c;在python中作用很强在&#xff0c;列表List可以包含不同类型的数据对像&#xff0c;同时它是一个有序的集合。所有序列能用到的标准操作方法&#xff0c;列表也都可以使用&#xff0c;比如切片、索引等&#xff0c;python的list是可…